mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 21:36:52 +00:00
mt76: add API for testmode support
This can be used for calibration in the manufacturing process. It supports sending a configurable number of packets with a specific rate and configurable tx power levels / antenna settings. It also supports receiving packets and showing some statistics, including packet counters and detailed RSSI information. It will only be compiled in if CONFIG_NL80211_TESTMODE is enabled Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
@@ -236,6 +236,14 @@ void mt76_tx_complete_skb(struct mt76_dev *dev, struct sk_buff *skb)
|
||||
struct ieee80211_hw *hw;
|
||||
struct sk_buff_head list;
|
||||
|
||||
#ifdef CONFIG_NL80211_TESTMODE
|
||||
if (skb == dev->test.tx_skb) {
|
||||
dev->test.tx_done++;
|
||||
if (dev->test.tx_queued == dev->test.tx_done)
|
||||
wake_up(&dev->tx_wait);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!skb->prev) {
|
||||
hw = mt76_tx_status_get_hw(dev, skb);
|
||||
ieee80211_free_txskb(hw, skb);
|
||||
@@ -259,6 +267,11 @@ 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)) {
|
||||
ieee80211_free_txskb(phy->hw, skb);
|
||||
return;
|
||||
}
|
||||
|
||||
if (WARN_ON(qid >= MT_TXQ_PSD)) {
|
||||
qid = MT_TXQ_BE;
|
||||
skb_set_queue_mapping(skb, qid);
|
||||
@@ -579,6 +592,11 @@ void mt76_tx_tasklet(unsigned long data)
|
||||
mt76_txq_schedule_all(&dev->phy);
|
||||
if (dev->phy2)
|
||||
mt76_txq_schedule_all(dev->phy2);
|
||||
|
||||
#ifdef CONFIG_NL80211_TESTMODE
|
||||
if (dev->test.tx_pending)
|
||||
mt76_testmode_tx_pending(dev);
|
||||
#endif
|
||||
}
|
||||
|
||||
void mt76_stop_tx_queues(struct mt76_dev *dev, struct ieee80211_sta *sta,
|
||||
|
||||
Reference in New Issue
Block a user