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 |
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 --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");