]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: rtw89: mcc: consider time limits not divisible by 1024
authorZong-Zhe Yang <kevin_yang@realtek.com>
Fri, 3 Jan 2025 07:44:12 +0000 (15:44 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Sun, 12 Jan 2025 01:28:33 +0000 (09:28 +0800)
For each MCC role, time limits, including max_tob_us, max_toa_us, and
mac_dur_us, are calculated if there are NoA attributes. The relation
between these time limits is "max_dur_us = max_tob_us + max_toa_us".
Then, the unit is converted from us to TU. However, originally, each
time limit was divided by 1024 independently. It missed to consider
the cases that max_tob_us or max_toa_us is not divisible by 1024. It
causes the result breaks "max_dur (TU) = max_tob (TU) + max_toa (TU)".
Finally, when MCC calculates pattern parameters based on these kinds
of time limits, it might not perform well.

Fixes: b09df09b55fb ("wifi: rtw89: mcc: initialize start flow")
Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20250103074412.124066-1-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/chan.c

index c06d305519df46912e76bcff63b9317c5c42ff72..4df4e04c3e67d7fe99d30a20ccea0a32a8b20fe6 100644 (file)
@@ -802,7 +802,7 @@ fill:
 
        mcc_role->limit.max_toa = max_toa_us / 1024;
        mcc_role->limit.max_tob = max_tob_us / 1024;
-       mcc_role->limit.max_dur = max_dur_us / 1024;
+       mcc_role->limit.max_dur = mcc_role->limit.max_toa + mcc_role->limit.max_tob;
        mcc_role->limit.enable = true;
 
        rtw89_debug(rtwdev, RTW89_DBG_CHAN,