mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-07 06:18:54 +00:00
1bfcc1ea8a
Brings lots of driver updates and API changes needed for mt76 updates. Disable iwlwifi and ath11k on 5.15, since backport is too difficult, and the only remaining targets won't need those drivers. Signed-off-by: Felix Fietkau <nbd@nbd.name>
54 lines
1.8 KiB
Diff
54 lines
1.8 KiB
Diff
From: Felix Fietkau <nbd@nbd.name>
|
|
Date: Sun, 26 Jun 2022 11:43:25 +0200
|
|
Subject: [PATCH] mac80211: increase quantum for airtime scheduler
|
|
|
|
Given the typical AQL budget and queue length, a quantum of 256 with the
|
|
default station weight often requires iterating over all queues frequently,
|
|
until one of them becomes eligible.
|
|
Improve performance by using 8 times station weight as scheduler quantum
|
|
|
|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
---
|
|
|
|
--- a/net/mac80211/ieee80211_i.h
|
|
+++ b/net/mac80211/ieee80211_i.h
|
|
@@ -101,6 +101,8 @@ ieee80211_sta_keep_active(struct sta_inf
|
|
return time_before_eq(jiffies, sta->airtime[ac].last_active + HZ / 10);
|
|
}
|
|
|
|
+#define AIRTIME_QUANTUM_SHIFT 3
|
|
+
|
|
struct ieee80211_bss {
|
|
u32 device_ts_beacon, device_ts_presp;
|
|
|
|
--- a/net/mac80211/tx.c
|
|
+++ b/net/mac80211/tx.c
|
|
@@ -4082,7 +4082,7 @@ struct ieee80211_txq *ieee80211_next_txq
|
|
|
|
if (deficit < 0)
|
|
sta->airtime[txqi->txq.ac].deficit +=
|
|
- sta->airtime_weight;
|
|
+ sta->airtime_weight << AIRTIME_QUANTUM_SHIFT;
|
|
|
|
if (deficit < 0 || !aql_check) {
|
|
list_move_tail(&txqi->schedule_order,
|
|
@@ -4225,7 +4225,8 @@ bool ieee80211_txq_may_transmit(struct i
|
|
}
|
|
sta = container_of(iter->txq.sta, struct sta_info, sta);
|
|
if (ieee80211_sta_deficit(sta, ac) < 0)
|
|
- sta->airtime[ac].deficit += sta->airtime_weight;
|
|
+ sta->airtime[ac].deficit += sta->airtime_weight <<
|
|
+ AIRTIME_QUANTUM_SHIFT;
|
|
list_move_tail(&iter->schedule_order, &local->active_txqs[ac]);
|
|
}
|
|
|
|
@@ -4233,7 +4234,7 @@ bool ieee80211_txq_may_transmit(struct i
|
|
if (sta->airtime[ac].deficit >= 0)
|
|
goto out;
|
|
|
|
- sta->airtime[ac].deficit += sta->airtime_weight;
|
|
+ sta->airtime[ac].deficit += sta->airtime_weight << AIRTIME_QUANTUM_SHIFT;
|
|
list_move_tail(&txqi->schedule_order, &local->active_txqs[ac]);
|
|
spin_unlock_bh(&local->active_txq_lock[ac]);
|
|
|