RE: [PATCH] mac80211: Fix sw connection monitor and sw scan when STA is connected HE
From: Pkshih <pkshih@realtek.com>
Date: 2021-06-23 12:49:25
Subsystem:
mac80211, the rest · Maintainers:
Johannes Berg, Linus Torvalds
-----Original Message----- From: Johannes Berg [mailto:johannes@sipsolutions.net] Sent: Wednesday, June 23, 2021 6:33 PM To: Pkshih Cc: linux-wireless@vger.kernel.org Subject: Re: [PATCH] mac80211: Fix sw connection monitor and sw scan when STA is connected HEquoted
Hi mac80211 team, We are working on Realtek 11ax driver, rtw89, not being merged yet. This driver uses software connection monitor and software scan, like our 11ac driver rtw88, but we found these two functions don't work properly due to mac80211 doesn't send null data frame when STA is connected HE. We search for the reason why it can't send null frame, but we don't get the answer. Possibly, it is because existing HE hardware supports hardware connection monitor and scan, or supports TWT to avoid sending null data frame to tell AP its PS mode. Could anyone enlighten me the reason?It was just a workaround for an iwlwifi specific issue that got left in. I just merged a patch from Felix to resolve that.
I check Felix's patch: https://patchwork.kernel.org/project/linux-wireless/patch/20210619101517.90806-1-nbd@nbd.name/ I think we should revert the commit f39b07fdfb68 ("mac80211: HE STA disassoc due to QOS NULL not sent"), which fixes connection monitor due to QOS NULL not send. Another place is ieee80211_send_null_response(); I'm not sure if we can remove the checking as well.
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index f2fb69da9b6e..13250cadb420 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c@@ -1398,11 +1398,6 @@ static void ieee80211_send_null_response(struct sta_info *sta, int tid, struct ieee80211_tx_info *info; struct ieee80211_chanctx_conf *chanctx_conf; - /* Don't send NDPs when STA is connected HE */ - if (sdata->vif.type == NL80211_IFTYPE_STATION && - !(sdata->u.mgd.flags & IEEE80211_STA_DISABLE_HE)) - return; - if (qos) { fc = cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_QOS_NULLFUNC | --
Ping-Ke