On Sat, 2012-03-31 at 13:32 -0700, Ashok Nagarajan wrote:

> @@ -1127,15 +1127,25 @@ u32 ieee80211_sta_get_rates(struct ieee80211_local 
> *local,
>                    elems->ext_supp_rates_len; i++) {
>               u8 rate = 0;
>               int own_rate;
> +             bool is_basic;
>               if (i < elems->supp_rates_len)
>                       rate = elems->supp_rates[i];
>               else if (elems->ext_supp_rates)
>                       rate = elems->ext_supp_rates
>                               [i - elems->supp_rates_len];
>               own_rate = 5 * (rate & 0x7f);
> -             for (j = 0; j < num_rates; j++)
> -                     if (bitrates[j].bitrate == own_rate)
> +             is_basic = !!(rate & 0x80);
> +
> +             if (is_basic && (rate & 0x7f) == BSS_MEMBERSHIP_SELECTOR_HT_PHY)
> +                     continue;
> +
> +             for (j = 0; j < num_rates; j++) {
> +                     if (bitrates[j].bitrate == own_rate) {
>                               supp_rates |= BIT(j);
> +                             if (basic_rates && is_basic)
> +                                     *basic_rates |= BIT(j);
> +                     }
> +             }

Seems it'd be worth skipping the entire logic if basic_rates is NULL?

johannes

_______________________________________________
Devel mailing list
[email protected]
http://lists.open80211s.org/cgi-bin/mailman/listinfo/devel

Reply via email to