Search Linux Wireless

Re: [PATCH] mac80211: Disable MCS > 7 in minstrel_ht when STA uses static SMPS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Mar 9, 2012 at 2:13 PM, Helmut Schaa
<helmut.schaa@xxxxxxxxxxxxxx> wrote:
> Disable multi stream rates (MCS > 7) when a STA is in static SMPS mode
> since it has only one active rx chain. Hence, it doesn't even make
> sense to sample multi stream rates.
>
> Signed-off-by: Helmut Schaa <helmut.schaa@xxxxxxxxxxxxxx>
> ---
>
> I haven't found a STA that makes use of static SMPS, so this is only compile tested.

Did some tests now, 2-stream rates are masked out correctly when the STA
enters static SMPS mode ...

>  net/mac80211/rc80211_minstrel_ht.c |    9 +++++++++
>  1 files changed, 9 insertions(+), 0 deletions(-)
>
> diff --git a/net/mac80211/rc80211_minstrel_ht.c b/net/mac80211/rc80211_minstrel_ht.c
> index ff5f7b8..2b42564 100644
> --- a/net/mac80211/rc80211_minstrel_ht.c
> +++ b/net/mac80211/rc80211_minstrel_ht.c
> @@ -692,6 +692,7 @@ minstrel_ht_update_caps(void *priv, struct ieee80211_supported_band *sband,
>        int ack_dur;
>        int stbc;
>        int i;
> +       unsigned int smps;
>
>        /* fall back to the old minstrel for legacy stations */
>        if (!sta->ht_cap.ht_supported)
> @@ -731,6 +732,9 @@ minstrel_ht_update_caps(void *priv, struct ieee80211_supported_band *sband,
>            oper_chan_type != NL80211_CHAN_HT40PLUS)
>                sta_cap &= ~IEEE80211_HT_CAP_SUP_WIDTH_20_40;
>
> +       smps = (sta_cap & IEEE80211_HT_CAP_SM_PS) >>
> +               IEEE80211_HT_CAP_SM_PS_SHIFT;
> +
>        for (i = 0; i < ARRAY_SIZE(mi->groups); i++) {
>                u16 req = 0;
>
> @@ -748,6 +752,11 @@ minstrel_ht_update_caps(void *priv, struct ieee80211_supported_band *sband,
>                if ((sta_cap & req) != req)
>                        continue;
>
> +               /* Mark MCS > 7 as unsupported if STA is in static SMPS mode */
> +               if (smps == WLAN_HT_CAP_SM_PS_STATIC &&
> +                   minstrel_mcs_groups[i].streams > 1)
> +                       continue;
> +
>                mi->groups[i].supported =
>                        mcs->rx_mask[minstrel_mcs_groups[i].streams - 1];
>
> --
> 1.7.7
>
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux