Commit 2e405024 authored by Felix Fietkau's avatar Felix Fietkau

mt76: run MAC work every 100ms

ED/CCA Tx blocking checks need to be run every 100 ms in order to avoid
triggering too late and keeping tx blocking on for too long
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 20c06572
...@@ -30,7 +30,7 @@ static int mt76x0e_start(struct ieee80211_hw *hw) ...@@ -30,7 +30,7 @@ static int mt76x0e_start(struct ieee80211_hw *hw)
mt76x02_mac_start(dev); mt76x02_mac_start(dev);
mt76x0_phy_calibrate(dev, true); mt76x0_phy_calibrate(dev, true);
ieee80211_queue_delayed_work(dev->mt76.hw, &dev->mac_work, ieee80211_queue_delayed_work(dev->mt76.hw, &dev->mac_work,
MT_CALIBRATE_INTERVAL); MT_MAC_WORK_INTERVAL);
ieee80211_queue_delayed_work(dev->mt76.hw, &dev->cal_work, ieee80211_queue_delayed_work(dev->mt76.hw, &dev->cal_work,
MT_CALIBRATE_INTERVAL); MT_CALIBRATE_INTERVAL);
set_bit(MT76_STATE_RUNNING, &dev->mt76.state); set_bit(MT76_STATE_RUNNING, &dev->mt76.state);
......
...@@ -118,7 +118,7 @@ static int mt76x0u_start(struct ieee80211_hw *hw) ...@@ -118,7 +118,7 @@ static int mt76x0u_start(struct ieee80211_hw *hw)
mt76x0_phy_calibrate(dev, true); mt76x0_phy_calibrate(dev, true);
ieee80211_queue_delayed_work(dev->mt76.hw, &dev->mac_work, ieee80211_queue_delayed_work(dev->mt76.hw, &dev->mac_work,
MT_CALIBRATE_INTERVAL); MT_MAC_WORK_INTERVAL);
ieee80211_queue_delayed_work(dev->mt76.hw, &dev->cal_work, ieee80211_queue_delayed_work(dev->mt76.hw, &dev->cal_work,
MT_CALIBRATE_INTERVAL); MT_CALIBRATE_INTERVAL);
set_bit(MT76_STATE_RUNNING, &dev->mt76.state); set_bit(MT76_STATE_RUNNING, &dev->mt76.state);
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "mt76x02_dma.h" #include "mt76x02_dma.h"
#define MT_CALIBRATE_INTERVAL HZ #define MT_CALIBRATE_INTERVAL HZ
#define MT_MAC_WORK_INTERVAL (HZ / 10)
#define MT_WATCHDOG_TIME (HZ / 10) #define MT_WATCHDOG_TIME (HZ / 10)
#define MT_TX_HANG_TH 10 #define MT_TX_HANG_TH 10
......
...@@ -929,7 +929,7 @@ static void mt76x02_edcca_check(struct mt76x02_dev *dev) ...@@ -929,7 +929,7 @@ static void mt76x02_edcca_check(struct mt76x02_dev *dev)
u32 val, busy; u32 val, busy;
val = mt76_rr(dev, MT_ED_CCA_TIMER); val = mt76_rr(dev, MT_ED_CCA_TIMER);
busy = (val * 100) / jiffies_to_usecs(MT_CALIBRATE_INTERVAL); busy = (val * 100) / jiffies_to_usecs(MT_MAC_WORK_INTERVAL);
busy = min_t(u32, busy, 100); busy = min_t(u32, busy, 100);
if (busy > MT_EDCCA_TH) { if (busy > MT_EDCCA_TH) {
...@@ -975,7 +975,7 @@ void mt76x02_mac_work(struct work_struct *work) ...@@ -975,7 +975,7 @@ void mt76x02_mac_work(struct work_struct *work)
mt76_tx_status_check(&dev->mt76, NULL, false); mt76_tx_status_check(&dev->mt76, NULL, false);
ieee80211_queue_delayed_work(mt76_hw(dev), &dev->mac_work, ieee80211_queue_delayed_work(mt76_hw(dev), &dev->mac_work,
MT_CALIBRATE_INTERVAL); MT_MAC_WORK_INTERVAL);
} }
void mt76x02_mac_set_bssid(struct mt76x02_dev *dev, u8 idx, const u8 *addr) void mt76x02_mac_set_bssid(struct mt76x02_dev *dev, u8 idx, const u8 *addr)
......
...@@ -33,7 +33,7 @@ mt76x2_start(struct ieee80211_hw *hw) ...@@ -33,7 +33,7 @@ mt76x2_start(struct ieee80211_hw *hw)
goto out; goto out;
ieee80211_queue_delayed_work(mt76_hw(dev), &dev->mac_work, ieee80211_queue_delayed_work(mt76_hw(dev), &dev->mac_work,
MT_CALIBRATE_INTERVAL); MT_MAC_WORK_INTERVAL);
ieee80211_queue_delayed_work(mt76_hw(dev), &dev->wdt_work, ieee80211_queue_delayed_work(mt76_hw(dev), &dev->wdt_work,
MT_WATCHDOG_TIME); MT_WATCHDOG_TIME);
......
...@@ -28,7 +28,7 @@ static int mt76x2u_start(struct ieee80211_hw *hw) ...@@ -28,7 +28,7 @@ static int mt76x2u_start(struct ieee80211_hw *hw)
goto out; goto out;
ieee80211_queue_delayed_work(mt76_hw(dev), &dev->mac_work, ieee80211_queue_delayed_work(mt76_hw(dev), &dev->mac_work,
MT_CALIBRATE_INTERVAL); MT_MAC_WORK_INTERVAL);
set_bit(MT76_STATE_RUNNING, &dev->mt76.state); set_bit(MT76_STATE_RUNNING, &dev->mt76.state);
out: out:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment