mt76: measure the time between mt76x02_edcca_check runs
Based on system load and time needed by other calibration runs, the time between dev->mac_work runs can vary quite a bit. Calculate busy time based on the actual time difference in order to avoid potentially over-estimating busy time, which could lead to unnecessary tx blocking. Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
c15b7cef2a
commit
ccdaf7b4f2
|
@ -117,6 +117,7 @@ struct mt76x02_dev {
|
||||||
bool ed_monitor;
|
bool ed_monitor;
|
||||||
u8 ed_trigger;
|
u8 ed_trigger;
|
||||||
u8 ed_silent;
|
u8 ed_silent;
|
||||||
|
ktime_t ed_time;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct ieee80211_rate mt76x02_rates[12];
|
extern struct ieee80211_rate mt76x02_rates[12];
|
||||||
|
|
|
@ -922,6 +922,7 @@ void mt76x02_edcca_init(struct mt76x02_dev *dev, bool enable)
|
||||||
|
|
||||||
/* clear previous CCA timer value */
|
/* clear previous CCA timer value */
|
||||||
mt76_rr(dev, MT_ED_CCA_TIMER);
|
mt76_rr(dev, MT_ED_CCA_TIMER);
|
||||||
|
dev->ed_time = ktime_get_boottime();
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(mt76x02_edcca_init);
|
EXPORT_SYMBOL_GPL(mt76x02_edcca_init);
|
||||||
|
|
||||||
|
@ -929,10 +930,16 @@ EXPORT_SYMBOL_GPL(mt76x02_edcca_init);
|
||||||
#define MT_EDCCA_BLOCK_TH 2
|
#define MT_EDCCA_BLOCK_TH 2
|
||||||
static void mt76x02_edcca_check(struct mt76x02_dev *dev)
|
static void mt76x02_edcca_check(struct mt76x02_dev *dev)
|
||||||
{
|
{
|
||||||
u32 val, busy;
|
ktime_t cur_time;
|
||||||
|
u32 active, val, busy;
|
||||||
|
|
||||||
|
cur_time = ktime_get_boottime();
|
||||||
val = mt76_rr(dev, MT_ED_CCA_TIMER);
|
val = mt76_rr(dev, MT_ED_CCA_TIMER);
|
||||||
busy = (val * 100) / jiffies_to_usecs(MT_MAC_WORK_INTERVAL);
|
|
||||||
|
active = ktime_to_us(ktime_sub(cur_time, dev->ed_time));
|
||||||
|
dev->ed_time = cur_time;
|
||||||
|
|
||||||
|
busy = (val * 100) / active;
|
||||||
busy = min_t(u32, busy, 100);
|
busy = min_t(u32, busy, 100);
|
||||||
|
|
||||||
if (busy > MT_EDCCA_TH) {
|
if (busy > MT_EDCCA_TH) {
|
||||||
|
|
Loading…
Reference in New Issue