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