Message ID | 1418720165-19810-1-git-send-email-janusz.dziedzic@tieto.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
On Tue, 2014-12-16 at 09:56 +0100, Janusz Dziedzic wrote: > drv_sta_rc_update(local, sdata, &sta->sta, > IEEE80211_RC_SUPP_RATES_CHANGED); > + /* Force rx_nss recalculation */ > + sta->sta.rx_nss = 0; > rate_control_rate_init(sta); > + if (rx_nss != sta->sta.rx_nss) > + drv_sta_rc_update(local, sdata, &sta->sta, > + IEEE80211_RC_NSS_CHANGED); Seems to me you should consolidate those two drv_sta_rc_update() calls and just make the flags dependent on the NSS change? johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 16 December 2014 at 20:54, Johannes Berg <johannes@sipsolutions.net> wrote: > On Tue, 2014-12-16 at 09:56 +0100, Janusz Dziedzic wrote: > >> drv_sta_rc_update(local, sdata, &sta->sta, >> IEEE80211_RC_SUPP_RATES_CHANGED); >> + /* Force rx_nss recalculation */ >> + sta->sta.rx_nss = 0; >> rate_control_rate_init(sta); >> + if (rx_nss != sta->sta.rx_nss) >> + drv_sta_rc_update(local, sdata, &sta->sta, >> + IEEE80211_RC_NSS_CHANGED); > > Seems to me you should consolidate those two drv_sta_rc_update() calls > and just make the flags dependent on the NSS change? > Will send v2. -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c index 509bc15..d95c2dd 100644 --- a/net/mac80211/ibss.c +++ b/net/mac80211/ibss.c @@ -1069,9 +1069,16 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata, } if (sta && rates_updated) { + u8 rx_nss = sta->sta.rx_nss; + drv_sta_rc_update(local, sdata, &sta->sta, IEEE80211_RC_SUPP_RATES_CHANGED); + /* Force rx_nss recalculation */ + sta->sta.rx_nss = 0; rate_control_rate_init(sta); + if (rx_nss != sta->sta.rx_nss) + drv_sta_rc_update(local, sdata, &sta->sta, + IEEE80211_RC_NSS_CHANGED); } rcu_read_unlock();
When using IBSS in HT mode, we always get NSS=1 in rc_update callback. Force NSS recalculation when rates updated and notify driver that NSS changed. Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com> --- net/mac80211/ibss.c | 7 +++++++ 1 file changed, 7 insertions(+)