From ac6f0a12dc2fa7cf1fc39e2a6bdc9d1a02afc20d Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 1 Feb 2016 19:08:52 +0100 Subject: [PATCH] mt7603: initialize per-sta per-tid txq Signed-off-by: Felix Fietkau --- mt7603_main.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/mt7603_main.c b/mt7603_main.c index 46c3320e..299d4532 100644 --- a/mt7603_main.c +++ b/mt7603_main.c @@ -160,7 +160,7 @@ mt7603_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif, { struct mt7603_dev *dev = hw->priv; struct mt7603_sta *msta = (struct mt7603_sta *) sta->drv_priv; - int ret, idx; + int i, ret, idx; mutex_lock(&dev->mutex); @@ -170,6 +170,9 @@ mt7603_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif, goto out; } + for (i = 0; i < ARRAY_SIZE(sta->txq); i++) + mt7603_txq_init(dev, sta->txq[i]); + msta->wcid.idx = idx; mt7603_wtbl_update_cap(dev, sta); @@ -189,10 +192,15 @@ mt7603_sta_remove(struct ieee80211_hw *hw, struct ieee80211_vif *vif, struct mt7603_dev *dev = hw->priv; struct mt7603_sta *msta = (struct mt7603_sta *) sta->drv_priv; int idx = msta->wcid.idx; + int i; mutex_lock(&dev->mutex); rcu_assign_pointer(dev->wcid[idx], NULL); mt7603_wtbl_clear(dev, idx); + + for (i = 0; i < ARRAY_SIZE(sta->txq); i++) + mt76_txq_remove(&dev->mt76, sta->txq[i]); + mutex_unlock(&dev->mutex); return 0;