diff mbox

mac80211: ignore VHT membership selector when parsing rates

Message ID 20170306220113.4666-1-johannes@sipsolutions.net (mailing list archive)
State Accepted
Delegated to: Johannes Berg
Headers show

Commit Message

Johannes Berg March 6, 2017, 10:01 p.m. UTC
From: Johannes Berg <johannes.berg@intel.com>

There isn't really much harm in not ignoring, since it doesn't
represent a valid rate, but since we already ignore the HT one
also ignore VHT. Also simplify the code a bit.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
 net/mac80211/mlme.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Arend Van Spriel March 7, 2017, 8:39 a.m. UTC | #1
On 6-3-2017 23:01, Johannes Berg wrote:
> From: Johannes Berg <johannes.berg@intel.com>
> 
> There isn't really much harm in not ignoring, since it doesn't
> represent a valid rate, but since we already ignore the HT one
> also ignore VHT. Also simplify the code a bit.
> 
> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
> ---
>  net/mac80211/mlme.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
> index 1568a74757bc..6340127a71c6 100644
> --- a/net/mac80211/mlme.c
> +++ b/net/mac80211/mlme.c
> @@ -2823,15 +2823,15 @@ static void ieee80211_get_rates(struct ieee80211_supported_band *sband,
>  			*have_higher_than_11mbit = true;
>  
>  		/*
> -		 * BSS_MEMBERSHIP_SELECTOR_HT_PHY is defined in 802.11n-2009
> -		 * 7.3.2.2 as a magic value instead of a rate. Hence, skip it.
> +		 * Skip HT and VHT BSS membership selectors since they're not
> +		 * rates.
>  		 *
>  		 * Note: Even through the membership selector and the basic

typo: through -> though.

Regards,
Arend

>  		 *	 rate flag share the same bit, they are not exactly
>  		 *	 the same.
>  		 */
> -		if (!!(supp_rates[i] & 0x80) &&
> -		    (supp_rates[i] & 0x7f) == BSS_MEMBERSHIP_SELECTOR_HT_PHY)
> +		if (supp_rates[i] == (0x80 | BSS_MEMBERSHIP_SELECTOR_HT_PHY) ||
> +		    supp_rates[i] == (0x80 | BSS_MEMBERSHIP_SELECTOR_VHT_PHY))
>  			continue;
>  
>  		for (j = 0; j < sband->n_bitrates; j++) {
>
Johannes Berg March 7, 2017, 8:42 a.m. UTC | #2
> >  
> >  		/*
> > -		 * BSS_MEMBERSHIP_SELECTOR_HT_PHY is defined in
> > 802.11n-2009
> > -		 * 7.3.2.2 as a magic value instead of a rate.
> > Hence, skip it.
> > +		 * Skip HT and VHT BSS membership selectors since
> > they're not
> > +		 * rates.
> >  		 *
> >  		 * Note: Even through the membership selector and
> > the basic
> 
> typo: through -> though.

That's just existing context ;-)

Will fix here.

johannes
Arend Van Spriel March 7, 2017, 9:49 a.m. UTC | #3
On 7-3-2017 9:42, Johannes Berg wrote:
> 
>>>  
>>>  		/*
>>> -		 * BSS_MEMBERSHIP_SELECTOR_HT_PHY is defined in
>>> 802.11n-2009
>>> -		 * 7.3.2.2 as a magic value instead of a rate.
>>> Hence, skip it.
>>> +		 * Skip HT and VHT BSS membership selectors since
>>> they're not
>>> +		 * rates.
>>>  		 *
>>>  		 * Note: Even through the membership selector and
>>> the basic
>>
>> typo: through -> though.
> 
> That's just existing context ;-)
> 
> Will fix here.

I noticed and indeed could create a patch for it, but this is easier
(for me :-p ).

Gr. AvS
diff mbox

Patch

diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 1568a74757bc..6340127a71c6 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -2823,15 +2823,15 @@  static void ieee80211_get_rates(struct ieee80211_supported_band *sband,
 			*have_higher_than_11mbit = true;
 
 		/*
-		 * BSS_MEMBERSHIP_SELECTOR_HT_PHY is defined in 802.11n-2009
-		 * 7.3.2.2 as a magic value instead of a rate. Hence, skip it.
+		 * Skip HT and VHT BSS membership selectors since they're not
+		 * rates.
 		 *
 		 * Note: Even through the membership selector and the basic
 		 *	 rate flag share the same bit, they are not exactly
 		 *	 the same.
 		 */
-		if (!!(supp_rates[i] & 0x80) &&
-		    (supp_rates[i] & 0x7f) == BSS_MEMBERSHIP_SELECTOR_HT_PHY)
+		if (supp_rates[i] == (0x80 | BSS_MEMBERSHIP_SELECTOR_HT_PHY) ||
+		    supp_rates[i] == (0x80 | BSS_MEMBERSHIP_SELECTOR_VHT_PHY))
 			continue;
 
 		for (j = 0; j < sband->n_bitrates; j++) {