forked from openwrt/openwrt
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
mac80211: backport minstrel_ht fix for legacy rates
Fixes OFDM rates on 5 GHz Signed-off-by: Felix Fietkau <nbd@nbd.name>
- Loading branch information
Showing
1 changed file
with
61 additions
and
0 deletions.
There are no files selected for viewing
61 changes: 61 additions & 0 deletions
61
...el/mac80211/patches/subsys/329-mac80211-minstrel_ht-fix-where-rate-stats-are-stored.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
From: Peter Seiderer <ps.report@gmx.net> | ||
Date: Mon, 4 Apr 2022 18:54:14 +0200 | ||
Subject: [PATCH] mac80211: minstrel_ht: fix where rate stats are stored (fixes | ||
debugfs output) | ||
|
||
Using an ath9k card the debugfs output of minstrel_ht looks like the following | ||
(note the zero values for the first four rates sum-of success/attempts): | ||
|
||
best ____________rate__________ ____statistics___ _____last____ ______sum-of________ | ||
mode guard # rate [name idx airtime max_tp] [avg(tp) avg(prob)] [retry|suc|att] [#success | #attempts] | ||
OFDM 1 DP 6.0M 272 1640 5.2 3.1 53.8 3 0 0 0 0 | ||
OFDM 1 C 9.0M 273 1104 7.7 4.6 53.8 4 0 0 0 0 | ||
OFDM 1 B 12.0M 274 836 10.0 6.0 53.8 4 0 0 0 0 | ||
OFDM 1 A S 18.0M 275 568 14.3 8.5 53.8 5 0 0 0 0 | ||
OFDM 1 S 24.0M 276 436 18.1 0.0 0.0 5 0 1 80 1778 | ||
OFDM 1 36.0M 277 300 24.9 0.0 0.0 0 0 1 0 107 | ||
OFDM 1 S 48.0M 278 236 30.4 0.0 0.0 0 0 0 0 75 | ||
OFDM 1 54.0M 279 212 33.0 0.0 0.0 0 0 0 0 72 | ||
|
||
Total packet count:: ideal 16582 lookaround 885 | ||
Average # of aggregated frames per A-MPDU: 1.0 | ||
|
||
Debugging showed that the rate statistics for the first four rates where | ||
stored in the MINSTREL_CCK_GROUP instead of the MINSTREL_OFDM_GROUP because | ||
in minstrel_ht_get_stats() the supported check was not honoured as done in | ||
various other places, e.g net/mac80211/rc80211_minstrel_ht_debugfs.c: | ||
|
||
74 if (!(mi->supported[i] & BIT(j))) | ||
75 continue; | ||
|
||
With the patch applied the output looks good: | ||
|
||
best ____________rate__________ ____statistics___ _____last____ ______sum-of________ | ||
mode guard # rate [name idx airtime max_tp] [avg(tp) avg(prob)] [retry|suc|att] [#success | #attempts] | ||
OFDM 1 D 6.0M 272 1640 5.2 5.2 100.0 3 0 0 1 1 | ||
OFDM 1 C 9.0M 273 1104 7.7 7.7 100.0 4 0 0 38 38 | ||
OFDM 1 B 12.0M 274 836 10.0 9.9 89.5 4 2 2 372 395 | ||
OFDM 1 A P 18.0M 275 568 14.3 14.3 97.2 5 52 53 6956 7181 | ||
OFDM 1 S 24.0M 276 436 18.1 0.0 0.0 0 0 1 6 163 | ||
OFDM 1 36.0M 277 300 24.9 0.0 0.0 0 0 1 0 35 | ||
OFDM 1 S 48.0M 278 236 30.4 0.0 0.0 0 0 0 0 38 | ||
OFDM 1 S 54.0M 279 212 33.0 0.0 0.0 0 0 0 0 38 | ||
|
||
Total packet count:: ideal 7097 lookaround 287 | ||
Average # of aggregated frames per A-MPDU: 1.0 | ||
|
||
Signed-off-by: Peter Seiderer <ps.report@gmx.net> | ||
--- | ||
|
||
--- a/net/mac80211/rc80211_minstrel_ht.c | ||
+++ b/net/mac80211/rc80211_minstrel_ht.c | ||
@@ -364,6 +364,9 @@ minstrel_ht_get_stats(struct minstrel_pr | ||
|
||
group = MINSTREL_CCK_GROUP; | ||
for (idx = 0; idx < ARRAY_SIZE(mp->cck_rates); idx++) { | ||
+ if (!(mi->supported[group] & BIT(idx))) | ||
+ continue; | ||
+ | ||
if (rate->idx != mp->cck_rates[idx]) | ||
continue; | ||
|