ath9k: Enable multi-channel properly
In MCC mode, currently the decision to enable the multi-channel state machine is done based on the association status if one of the interfaces assigned to a context is in station mode. This allows the driver to switch to the other context before the current station is able to complete the 4-way handshake in case it is required and this causes problems. Instead, enable multi-channel mode when the station moves to the authorized state. This disallows an early switch to the other channel. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:

committed by
John W. Linville

parent
df3c6eb34d
commit
b8f9279be0
@@ -1569,6 +1569,13 @@ static int ath9k_sta_state(struct ieee80211_hw *hw,
|
||||
"Remove station: %pM\n", sta->addr);
|
||||
}
|
||||
|
||||
if (ath9k_is_chanctx_enabled()) {
|
||||
if (old_state == IEEE80211_STA_ASSOC &&
|
||||
new_state == IEEE80211_STA_AUTHORIZED)
|
||||
ath_chanctx_event(sc, vif,
|
||||
ATH_CHANCTX_EVENT_AUTHORIZED);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1761,12 +1768,6 @@ static void ath9k_bss_info_changed(struct ieee80211_hw *hw,
|
||||
avp->assoc = bss_conf->assoc;
|
||||
|
||||
ath9k_calculate_summary_state(sc, avp->chanctx);
|
||||
|
||||
if (ath9k_is_chanctx_enabled()) {
|
||||
if (bss_conf->assoc)
|
||||
ath_chanctx_event(sc, vif,
|
||||
ATH_CHANCTX_EVENT_ASSOC);
|
||||
}
|
||||
}
|
||||
|
||||
if (changed & BSS_CHANGED_IBSS) {
|
||||
|
Reference in New Issue
Block a user