On Thu, 2024-05-23 at 16:22 +0800, kevin_yang@xxxxxxxxxxx wrote: > > - if (!pubsta->deflink.ht_cap.ht_supported && > - sta->sdata->vif.bss_conf.chanreq.oper.chan->band != NL80211_BAND_6GHZ) > - return -EINVAL; I can see how this fixes the crash, and I can also see why we didn't notice (TX agg sessions offloaded to FW), but ... > + if (!pubsta->deflink.ht_cap.ht_supported) { > + struct ieee80211_vif *vif = &sta->sdata->vif; > + struct ieee80211_bss_conf *bss_conf; > + > + rcu_read_lock(); > + > + bss_conf = rcu_dereference(vif->link_conf[pubsta->deflink.link_id]); > + if (unlikely(!bss_conf) || > + bss_conf->chanreq.oper.chan->band != NL80211_BAND_6GHZ) { > + rcu_read_unlock(); > + return -EINVAL; > is this really right? This checks that the *first* link the STA used isn't 6 GHz, but maybe it should be *any* link? But then again, we don't really need this check for an MLO STA since it will have HT supported unless it associated on 6 GHz. Maybe we should just not do the check this way, but check if it has HT or VHT or HE or something like that? johannes