mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 07:22:33 +00:00
6d49a25804
This reverts the airtime scheduler back from the virtual-time based scheduler to the deficit round robin scheduler implementation. This reduces burstiness and improves fairness by improving interaction with AQL. Signed-off-by: Felix Fietkau <nbd@nbd.name>
53 lines
1.7 KiB
Diff
53 lines
1.7 KiB
Diff
From: Felix Fietkau <nbd@nbd.name>
|
|
Date: Mon, 20 Jun 2022 14:53:04 +0200
|
|
Subject: [PATCH] mac80211: make sta airtime deficit field s32 instead of
|
|
s64
|
|
|
|
32 bit is more than enough range for the airtime deficit
|
|
|
|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
---
|
|
|
|
--- a/net/mac80211/debugfs_sta.c
|
|
+++ b/net/mac80211/debugfs_sta.c
|
|
@@ -202,7 +202,7 @@ static ssize_t sta_airtime_read(struct f
|
|
size_t bufsz = 400;
|
|
char *buf = kzalloc(bufsz, GFP_KERNEL), *p = buf;
|
|
u64 rx_airtime = 0, tx_airtime = 0;
|
|
- s64 deficit[IEEE80211_NUM_ACS];
|
|
+ s32 deficit[IEEE80211_NUM_ACS];
|
|
ssize_t rv;
|
|
int ac;
|
|
|
|
@@ -219,7 +219,7 @@ static ssize_t sta_airtime_read(struct f
|
|
|
|
p += scnprintf(p, bufsz + buf - p,
|
|
"RX: %llu us\nTX: %llu us\nWeight: %u\n"
|
|
- "Deficit: VO: %lld us VI: %lld us BE: %lld us BK: %lld us\n",
|
|
+ "Deficit: VO: %d us VI: %d us BE: %d us BK: %d us\n",
|
|
rx_airtime, tx_airtime, sta->airtime_weight,
|
|
deficit[0], deficit[1], deficit[2], deficit[3]);
|
|
|
|
--- a/net/mac80211/sta_info.h
|
|
+++ b/net/mac80211/sta_info.h
|
|
@@ -138,7 +138,7 @@ enum ieee80211_agg_stop_reason {
|
|
struct airtime_info {
|
|
u64 rx_airtime;
|
|
u64 tx_airtime;
|
|
- s64 deficit;
|
|
+ s32 deficit;
|
|
atomic_t aql_tx_pending; /* Estimated airtime for frames pending */
|
|
u32 aql_limit_low;
|
|
u32 aql_limit_high;
|
|
--- a/net/mac80211/tx.c
|
|
+++ b/net/mac80211/tx.c
|
|
@@ -3847,7 +3847,7 @@ struct ieee80211_txq *ieee80211_next_txq
|
|
struct sta_info *sta = container_of(txqi->txq.sta,
|
|
struct sta_info, sta);
|
|
bool aql_check = ieee80211_txq_airtime_check(hw, &txqi->txq);
|
|
- s64 deficit = sta->airtime[txqi->txq.ac].deficit;
|
|
+ s32 deficit = sta->airtime[txqi->txq.ac].deficit;
|
|
|
|
if (aql_check)
|
|
found_eligible_txq = true;
|