diff options
author | Shayne Chen <shayne.chen@mediatek.com> | 2020-12-04 17:36:56 +0800 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2021-01-26 20:07:47 +0100 |
commit | c918c74d06457eedb8d661f7bc4e7cf975c1d435 (patch) | |
tree | 3fdd9129f9a44d714f51105c68e07b75cdd253e2 /drivers/net/wireless/mediatek/mt76/tx.c | |
parent | dae0dc2bd0185f7a6f6a5d8cf1fff74f17ccca05 (diff) | |
download | linux-stable-c918c74d06457eedb8d661f7bc4e7cf975c1d435.tar.gz linux-stable-c918c74d06457eedb8d661f7bc4e7cf975c1d435.tar.bz2 linux-stable-c918c74d06457eedb8d661f7bc4e7cf975c1d435.zip |
mt76: testmode: introduce dbdc support
Add testmode support for DBDC NICs (both MT7615D and MT7915D work).
Testmode data and parameters are moved from per-dev to per-phy
for maintaining the value of each band.
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Acked-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'drivers/net/wireless/mediatek/mt76/tx.c')
-rw-r--r-- | drivers/net/wireless/mediatek/mt76/tx.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/tx.c b/drivers/net/wireless/mediatek/mt76/tx.c index 25627e70bdad..92e1c0974770 100644 --- a/drivers/net/wireless/mediatek/mt76/tx.c +++ b/drivers/net/wireless/mediatek/mt76/tx.c @@ -202,16 +202,22 @@ void mt76_tx_complete_skb(struct mt76_dev *dev, u16 wcid_idx, struct sk_buff *sk struct ieee80211_hw *hw; struct sk_buff_head list; + mt76_tx_check_non_aql(dev, wcid_idx, skb); + #ifdef CONFIG_NL80211_TESTMODE - if (skb == dev->test.tx_skb) { - dev->test.tx_done++; - if (dev->test.tx_queued == dev->test.tx_done) + if (mt76_is_testmode_skb(dev, skb, &hw)) { + struct mt76_phy *phy = hw->priv; + + if (skb == phy->test.tx_skb) + phy->test.tx_done++; + if (phy->test.tx_queued == phy->test.tx_done) wake_up(&dev->tx_wait); + + ieee80211_free_txskb(hw, skb); + return; } #endif - mt76_tx_check_non_aql(dev, wcid_idx, skb); - if (!skb->prev) { hw = mt76_tx_status_get_hw(dev, skb); ieee80211_free_txskb(hw, skb); @@ -261,7 +267,7 @@ mt76_tx(struct mt76_phy *phy, struct ieee80211_sta *sta, int qid = skb_get_queue_mapping(skb); bool ext_phy = phy != &dev->phy; - if (mt76_testmode_enabled(dev)) { + if (mt76_testmode_enabled(phy)) { ieee80211_free_txskb(phy->hw, skb); return; } @@ -539,8 +545,10 @@ void mt76_tx_worker(struct mt76_worker *w) mt76_txq_schedule_all(dev->phy2); #ifdef CONFIG_NL80211_TESTMODE - if (dev->test.tx_pending) - mt76_testmode_tx_pending(dev); + if (dev->phy.test.tx_pending) + mt76_testmode_tx_pending(&dev->phy); + if (dev->phy2 && dev->phy2->test.tx_pending) + mt76_testmode_tx_pending(dev->phy2); #endif } |