diff --git a/mt76.h b/mt76.h index f49d0a6d..7e402f17 100644 --- a/mt76.h +++ b/mt76.h @@ -354,6 +354,7 @@ struct mt76_wcid { u8 hw_key_idx2; u8 sta:1; + u8 sta_disabled:1; u8 amsdu:1; u8 phy_idx:2; u8 link_id:4; diff --git a/mt76_connac_mcu.c b/mt76_connac_mcu.c index 7afb9ac3..3a575ceb 100644 --- a/mt76_connac_mcu.c +++ b/mt76_connac_mcu.c @@ -283,7 +283,7 @@ __mt76_connac_mcu_alloc_sta_req(struct mt76_dev *dev, struct mt76_vif *mvif, }; struct sk_buff *skb; - if (wcid && !wcid->sta) + if (wcid && !wcid->sta && !wcid->sta_disabled) hdr.muar_idx = 0xe; mt76_connac_mcu_get_wlan_idx(dev, wcid, &hdr.wlan_idx_lo, diff --git a/mt7915/main.c b/mt7915/main.c index 3d303fcb..126aa60b 100644 --- a/mt7915/main.c +++ b/mt7915/main.c @@ -781,6 +781,7 @@ int mt7915_mac_sta_event(struct mt76_dev *mdev, struct ieee80211_vif *vif, return ret; msta->wcid.sta = 1; + msta->wcid.sta_disabled = 0; mt76_sta_set_txq_wcid(sta, msta->wcid.idx); return 0; @@ -791,6 +792,7 @@ int mt7915_mac_sta_event(struct mt76_dev *mdev, struct ieee80211_vif *vif, case MT76_STA_EVENT_DISASSOC: mt7915_mcu_add_sta(dev, vif, sta, CONN_STATE_DISCONNECT, false); mt76_sta_set_txq_wcid(sta, mvif->sta.wcid.idx); + msta->wcid.sta_disabled = 1; msta->wcid.sta = 0; return 0; }