@@ -501,9 +501,9 @@ static int ieee80211_config_bw(struct ieee80211_link_data *link,
u32 vht_cap_info = 0;
int ret;
- /* if HT was/is disabled, don't track any bandwidth changes */
- if (link->u.mgd.conn_flags & IEEE80211_CONN_DISABLE_HT || !ht_oper)
- return 0;
+ /* don't check HT if we associated as non-HT station */
+ if (link->u.mgd.conn_flags & IEEE80211_CONN_DISABLE_HT)
+ ht_oper = NULL;
/* don't check VHT if we associated as non-VHT station */
if (link->u.mgd.conn_flags & IEEE80211_CONN_DISABLE_VHT)
@@ -525,10 +525,12 @@ static int ieee80211_config_bw(struct ieee80211_link_data *link,
* if bss configuration changed store the new one -
* this may be applicable even if channel is identical
*/
- ht_opmode = le16_to_cpu(ht_oper->operation_mode);
- if (link->conf->ht_operation_mode != ht_opmode) {
- *changed |= BSS_CHANGED_HT;
- link->conf->ht_operation_mode = ht_opmode;
+ if (ht_oper) {
+ ht_opmode = le16_to_cpu(ht_oper->operation_mode);
+ if (link->conf->ht_operation_mode != ht_opmode) {
+ *changed |= BSS_CHANGED_HT;
+ link->conf->ht_operation_mode = ht_opmode;
+ }
}
if (vht_cap)
After connection, mac80211 will track bandwidth changes upon beacon's CRC is changed. But it will stop tracking bandwidth changes when these is no HT Operation element. According to the section 9.4.2.311 in IEEE P802.11be draft 4.0: The operation of EHT STAs in an EHT BSS is controlled by the following: -'The HT Operation element, HE Operation element, and EHT Operation element if operating in the 2.4 GHz band' -'The HT Operation element, VHT Operation element (if present), HE Operation element, and EHT Operation element if operating in the 5 GHz band' -'The HE Operation element and EHT Operation element if operating in the 6 GHz band' For 6 GHz band, beacon doesn't contain HT Operation element. Therefore, current checking code needs to be changed. Signed-off-by: Kang Yang <quic_kangyang@quicinc.com> --- net/mac80211/mlme.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-)