diff mbox series

[1/4] wifi: rtw89: mcc: fix NoA start time when GO is auxiliary

Message ID 20230921003559.11588-2-pkshih@realtek.com (mailing list archive)
State Accepted
Commit a4d7c872eb87ac00b0af475796f77abda3193b3f
Delegated to: Kalle Valo
Headers show
Series wifi: rtw89: declare to support MCC | expand

Commit Message

Ping-Ke Shih Sept. 21, 2023, 12:35 a.m. UTC
From: Zong-Zhe Yang <kevin_yang@realtek.com>

Under TDMA-based MCC (multi-channel concurrency), there are two roles,
reference and auxiliary. We arrange MCC timeline based on time domain
of reference role. Then, we calculate NoA start time according to MCC
timeline.

Besides, when MCC runs GO+STA mode, we plan an offset between GO time
domain and STA time domain to make their TBTTs have a time gap.

However, if GO is auxiliary role instead of reference role, NoA start
time is described by STA time domain instead of GO time domain. To fix
this, we apply the offset mentioned above to NoA start time to convert
time domain from STA to GO.

Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtw89/chan.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Kalle Valo Sept. 28, 2023, 4:25 p.m. UTC | #1
Ping-Ke Shih <pkshih@realtek.com> wrote:

> From: Zong-Zhe Yang <kevin_yang@realtek.com>
> 
> Under TDMA-based MCC (multi-channel concurrency), there are two roles,
> reference and auxiliary. We arrange MCC timeline based on time domain
> of reference role. Then, we calculate NoA start time according to MCC
> timeline.
> 
> Besides, when MCC runs GO+STA mode, we plan an offset between GO time
> domain and STA time domain to make their TBTTs have a time gap.
> 
> However, if GO is auxiliary role instead of reference role, NoA start
> time is described by STA time domain instead of GO time domain. To fix
> this, we apply the offset mentioned above to NoA start time to convert
> time domain from STA to GO.
> 
> Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>

4 patches applied to wireless-next.git, thanks.

a4d7c872eb87 wifi: rtw89: mcc: fix NoA start time when GO is auxiliary
5f499ce69b8d wifi: rtw89: pause/proceed MCC for ROC and HW scan
0f93824ed720 wifi: rtw89: 8852c: declare to support two chanctx
8e73c0455b12 wifi: rtw89: declare MCC in interface combination
diff mbox series

Patch

diff --git a/drivers/net/wireless/realtek/rtw89/chan.c b/drivers/net/wireless/realtek/rtw89/chan.c
index fb68d7f8ec3a..5564067c45cc 100644
--- a/drivers/net/wireless/realtek/rtw89/chan.c
+++ b/drivers/net/wireless/realtek/rtw89/chan.c
@@ -1430,6 +1430,7 @@  static void rtw89_mcc_handle_beacon_noa(struct rtw89_dev *rtwdev, bool enable)
 	struct rtw89_mcc_role *aux = &mcc->role_aux;
 	struct rtw89_mcc_config *config = &mcc->config;
 	struct rtw89_mcc_pattern *pattern = &config->pattern;
+	struct rtw89_mcc_sync *sync = &config->sync;
 	struct ieee80211_p2p_noa_desc noa_desc = {};
 	u64 start_time = config->start_tsf;
 	u32 interval = config->mcc_interval;
@@ -1449,6 +1450,9 @@  static void rtw89_mcc_handle_beacon_noa(struct rtw89_dev *rtwdev, bool enable)
 			      ieee80211_tu_to_usec(config->beacon_offset) +
 			      ieee80211_tu_to_usec(pattern->toa_aux);
 		duration = config->mcc_interval - aux->duration;
+
+		/* convert time domain from sta(ref) to GO(aux) */
+		start_time += ieee80211_tu_to_usec(sync->offset);
 	} else {
 		rtw89_debug(rtwdev, RTW89_DBG_CHAN,
 			    "MCC find no GO: skip updating beacon NoA\n");