Skip to content

Commit 23060da

Browse files
Bitterblue Smithgregkh
authored andcommitted
wifi: rtl8xxxu: Fix the channel width reporting
[ Upstream commit 76c16af ] The gen 2 chips RTL8192EU and RTL8188FU periodically send the driver reports about the TX rate, and the driver passes these reports to sta_statistics. The reports from RTL8192EU may or may not include the channel width. The reports from RTL8188FU do not include it. Only access the c2h->ra_report.bw field if the report (skb) is big enough. The other problem fixed here is that the code was actually never changing the channel width initially reported by rtl8xxxu_bss_info_changed because the value of RATE_INFO_BW_20 is 0. Fixes: 0985d3a ("rtl8xxxu: Feed current txrate information for mac80211") Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com> Reviewed-by: Ping-Ke Shih <pkshih@realtek.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/5b41f1ae-72e7-6b7a-2459-b736399a1c40@gmail.com Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent 6d0e003 commit 23060da

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5517,7 +5517,6 @@ static void rtl8xxxu_c2hcmd_callback(struct work_struct *work)
55175517
rarpt->txrate.flags = 0;
55185518
rate = c2h->ra_report.rate;
55195519
sgi = c2h->ra_report.sgi;
5520-
bw = c2h->ra_report.bw;
55215520

55225521
if (rate < DESC_RATE_MCS0) {
55235522
rarpt->txrate.legacy =
@@ -5534,8 +5533,13 @@ static void rtl8xxxu_c2hcmd_callback(struct work_struct *work)
55345533
RATE_INFO_FLAGS_SHORT_GI;
55355534
}
55365535

5537-
if (bw == RATE_INFO_BW_20)
5538-
rarpt->txrate.bw |= RATE_INFO_BW_20;
5536+
if (skb->len >= offsetofend(typeof(*c2h), ra_report.bw)) {
5537+
if (c2h->ra_report.bw == RTL8XXXU_CHANNEL_WIDTH_40)
5538+
bw = RATE_INFO_BW_40;
5539+
else
5540+
bw = RATE_INFO_BW_20;
5541+
rarpt->txrate.bw = bw;
5542+
}
55395543
}
55405544
bit_rate = cfg80211_calculate_bitrate(&rarpt->txrate);
55415545
rarpt->bit_rate = bit_rate;

0 commit comments

Comments
 (0)