On 09/07/2017 05:47 PM, Richard Schütz wrote:
> According to IEEE Std 802.11-2016 (16.2.3.4 Long PHY SIGNAL field) all of
> the following rates are mandatory for a HR/DSSS PHY: 1 Mb/s, 2 Mb/s,
> 5.5 Mb/s and 11 Mb/s. Set IEEE80211_RATE_MANDATORY_B flag for all of these
> instead of just 1 Mb/s to correctly reflect this.
> 
> Signed-off-by: Richard Schütz <[email protected]>

We've noticed that this is breaking interoperability of 11s nodes in
OpenWrt: association is only possible when neither or both peers have this
patch. I have not tested interop with non-Linux 11s peers.

I propose to revert this for now (I assume it's too late for 4.15, but
hopefully the regression can be fixed in 4.15.1).

Regards,
Matthias


> ---
>  net/wireless/util.c | 22 +++++++++-------------
>  1 file changed, 9 insertions(+), 13 deletions(-)
> 
> diff --git a/net/wireless/util.c b/net/wireless/util.c
> index bcb1284c3415..c69b5c31caf8 100644
> --- a/net/wireless/util.c
> +++ b/net/wireless/util.c
> @@ -157,32 +157,28 @@ static void set_mandatory_flags_band(struct 
> ieee80211_supported_band *sband)
>       case NL80211_BAND_2GHZ:
>               want = 7;
>               for (i = 0; i < sband->n_bitrates; i++) {
> -                     if (sband->bitrates[i].bitrate == 10) {
> +                     if (sband->bitrates[i].bitrate == 10 ||
> +                         sband->bitrates[i].bitrate == 20 ||
> +                         sband->bitrates[i].bitrate == 55 ||
> +                         sband->bitrates[i].bitrate == 110) {
>                               sband->bitrates[i].flags |=
>                                       IEEE80211_RATE_MANDATORY_B |
>                                       IEEE80211_RATE_MANDATORY_G;
>                               want--;
> +                     } else {
> +                             sband->bitrates[i].flags |=
> +                                     IEEE80211_RATE_ERP_G;
>                       }
>  
> -                     if (sband->bitrates[i].bitrate == 20 ||
> -                         sband->bitrates[i].bitrate == 55 ||
> -                         sband->bitrates[i].bitrate == 110 ||
> -                         sband->bitrates[i].bitrate == 60 ||
> +                     if (sband->bitrates[i].bitrate == 60 ||
>                           sband->bitrates[i].bitrate == 120 ||
>                           sband->bitrates[i].bitrate == 240) {
>                               sband->bitrates[i].flags |=
>                                       IEEE80211_RATE_MANDATORY_G;
>                               want--;
>                       }
> -
> -                     if (sband->bitrates[i].bitrate != 10 &&
> -                         sband->bitrates[i].bitrate != 20 &&
> -                         sband->bitrates[i].bitrate != 55 &&
> -                         sband->bitrates[i].bitrate != 110)
> -                             sband->bitrates[i].flags |=
> -                                     IEEE80211_RATE_ERP_G;
>               }
> -             WARN_ON(want != 0 && want != 3 && want != 6);
> +             WARN_ON(want != 0 && want != 3);
>               break;
>       case NL80211_BAND_60GHZ:
>               /* check for mandatory HT MCS 1..4 */
> 


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to