2016-02-25 17:03:08

by Larry Finger

[permalink] [raw]
Subject: [PATCH] rtlwifi: Fix size of wireless mode variable

Smatch reports the following warning:

CHECK drivers/net/wireless/realtek/rtlwifi/rc.c
drivers/net/wireless/realtek/rtlwifi/rc.c:144 _rtl_rc_rate_set_series() warn: impossible condition '(wireless_mode == 256) => (0-255 == 256)'

This warning arises because commit acc6907b87a9 ("rtlwifi: Fix warning
from ieee80211_get_tx_rates() when using 5G") now checks the wireless
mode for WIRELESS_MODE_AC_ONLY (BIT(8)) in _rtl_rc_rate_set_series().
As a result, all quantities used to store the wireless mode must be u16.

This patch also reorders struct rtl_sta_info to save a little space.

Fixes: commit acc6907b87a9 ("rtlwifi: Fix warning from ieee80211_get_tx_rates() when using 5G")
Reported-by: Dan Williams <[email protected]>
Signed-off-by: Larry Finger <[email protected]>
---
drivers/net/wireless/realtek/rtlwifi/rc.c | 4 ++--
drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.c | 2 +-
drivers/net/wireless/realtek/rtlwifi/wifi.h | 9 ++++-----
3 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/rc.c b/drivers/net/wireless/realtek/rtlwifi/rc.c
index 28f7010..1aca777 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rc.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rc.c
@@ -41,7 +41,7 @@ static u8 _rtl_rc_get_highest_rix(struct rtl_priv *rtlpriv,
struct rtl_hal *rtlhal = rtl_hal(rtlpriv);
struct rtl_phy *rtlphy = &(rtlpriv->phy);
struct rtl_sta_info *sta_entry = NULL;
- u8 wireless_mode = 0;
+ u16 wireless_mode = 0;

/*
*this rate is no use for true rate, firmware
@@ -99,7 +99,7 @@ static void _rtl_rc_rate_set_series(struct rtl_priv *rtlpriv,
{
struct rtl_mac *mac = rtl_mac(rtlpriv);
struct rtl_sta_info *sta_entry = NULL;
- u8 wireless_mode = 0;
+ u16 wireless_mode = 0;
u8 sgi_20 = 0, sgi_40 = 0, sgi_80 = 0;

if (sta) {
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.c
index 5da9bd0..fe900ba 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.c
@@ -3837,7 +3837,7 @@ void rtl8821ae_update_channel_access_setting(struct ieee80211_hw *hw)
{
struct rtl_priv *rtlpriv = rtl_priv(hw);
struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
- u8 wireless_mode = mac->mode;
+ u16 wireless_mode = mac->mode;
u8 sifs_timer, r2t_sifs;

rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_SLOT_TIME,
diff --git a/drivers/net/wireless/realtek/rtlwifi/wifi.h b/drivers/net/wireless/realtek/rtlwifi/wifi.h
index b07b364..554d814 100644
--- a/drivers/net/wireless/realtek/rtlwifi/wifi.h
+++ b/drivers/net/wireless/realtek/rtlwifi/wifi.h
@@ -1318,14 +1318,13 @@ struct rtl_tid_data {

struct rtl_sta_info {
struct list_head list;
- u8 ratr_index;
- u8 wireless_mode;
- u8 mimo_ps;
- u8 mac_addr[ETH_ALEN];
struct rtl_tid_data tids[MAX_TID_COUNT];
-
/* just used for ap adhoc or mesh*/
struct rssi_sta rssi_stat;
+ u16 wireless_mode;
+ u8 ratr_index;
+ u8 mimo_ps;
+ u8 mac_addr[ETH_ALEN];
} __packed;

struct rtl_priv;
--
2.1.4



2016-03-08 10:32:32

by Kalle Valo

[permalink] [raw]
Subject: Re: rtlwifi: Fix size of wireless mode variable


> Smatch reports the following warning:
>
> CHECK drivers/net/wireless/realtek/rtlwifi/rc.c
> drivers/net/wireless/realtek/rtlwifi/rc.c:144 _rtl_rc_rate_set_series() warn: impossible condition '(wireless_mode == 256) => (0-255 == 256)'
>
> This warning arises because commit acc6907b87a9 ("rtlwifi: Fix warning
> from ieee80211_get_tx_rates() when using 5G") now checks the wireless
> mode for WIRELESS_MODE_AC_ONLY (BIT(8)) in _rtl_rc_rate_set_series().
> As a result, all quantities used to store the wireless mode must be u16.
>
> This patch also reorders struct rtl_sta_info to save a little space.
>
> Fixes: d76d65fd2695 ("rtlwifi: fix broken VHT support")
> Reported-by: Dan Williams <[email protected]>
> Signed-off-by: Larry Finger <[email protected]>

Thanks, applied to wireless-drivers-next.git.

Kalle Valo

2016-03-07 12:38:48

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] rtlwifi: Fix size of wireless mode variable

Larry Finger <[email protected]> writes:

> Smatch reports the following warning:
>
> CHECK drivers/net/wireless/realtek/rtlwifi/rc.c
> drivers/net/wireless/realtek/rtlwifi/rc.c:144 _rtl_rc_rate_set_series() warn: impossible condition '(wireless_mode == 256) => (0-255 == 256)'
>
> This warning arises because commit acc6907b87a9 ("rtlwifi: Fix warning
> from ieee80211_get_tx_rates() when using 5G") now checks the wireless
> mode for WIRELESS_MODE_AC_ONLY (BIT(8)) in _rtl_rc_rate_set_series().
> As a result, all quantities used to store the wireless mode must be u16.
>
> This patch also reorders struct rtl_sta_info to save a little space.
>
> Fixes: commit acc6907b87a9 ("rtlwifi: Fix warning from ieee80211_get_tx_rates() when using 5G")
> Reported-by: Dan Williams <[email protected]>
> Signed-off-by: Larry Finger <[email protected]>

I can't find commit acc6907b87a9 from any of my trees. And oddly enough
I can't either any commits with title "rtlwifi: Fix warning from
ieee80211_get_tx_rates() when using 5G". I can fix it before commiting
but what should I use?

Also the fixes line should not have the word "commit".

--
Kalle Valo

2016-03-07 14:47:17

by Larry Finger

[permalink] [raw]
Subject: Re: [PATCH] rtlwifi: Fix size of wireless mode variable

On 03/07/2016 06:38 AM, Kalle Valo wrote:
> Larry Finger <[email protected]> writes:
>
>> Smatch reports the following warning:
>>
>> CHECK drivers/net/wireless/realtek/rtlwifi/rc.c
>> drivers/net/wireless/realtek/rtlwifi/rc.c:144 _rtl_rc_rate_set_series() warn: impossible condition '(wireless_mode == 256) => (0-255 == 256)'
>>
>> This warning arises because commit acc6907b87a9 ("rtlwifi: Fix warning
>> from ieee80211_get_tx_rates() when using 5G") now checks the wireless
>> mode for WIRELESS_MODE_AC_ONLY (BIT(8)) in _rtl_rc_rate_set_series().
>> As a result, all quantities used to store the wireless mode must be u16.
>>
>> This patch also reorders struct rtl_sta_info to save a little space.
>>
>> Fixes: commit acc6907b87a9 ("rtlwifi: Fix warning from ieee80211_get_tx_rates() when using 5G")
>> Reported-by: Dan Williams <[email protected]>
>> Signed-off-by: Larry Finger <[email protected]>
>
> I can't find commit acc6907b87a9 from any of my trees. And oddly enough
> I can't either any commits with title "rtlwifi: Fix warning from
> ieee80211_get_tx_rates() when using 5G". I can fix it before commiting
> but what should I use?
>
> Also the fixes line should not have the word "commit".

Kalle,

I do not know where I got that commit and title. The correct reference is commit
d76d65fd2695 ("rtlwifi: fix broken VHT support").

If you would rather not fix this on commit, I can submit a new version.

Thanks,

Larry



2016-03-08 08:50:10

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] rtlwifi: Fix size of wireless mode variable

Larry Finger <[email protected]> writes:

>> I can't find commit acc6907b87a9 from any of my trees. And oddly enough
>> I can't either any commits with title "rtlwifi: Fix warning from
>> ieee80211_get_tx_rates() when using 5G". I can fix it before commiting
>> but what should I use?
>>
>> Also the fixes line should not have the word "commit".
>
> Kalle,
>
> I do not know where I got that commit and title. The correct reference
> is commit d76d65fd2695 ("rtlwifi: fix broken VHT support").
>
> If you would rather not fix this on commit, I can submit a new version.

No need, I can edit the commit log before I commit.

--
Kalle Valo