summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorRamesh Rangavittal <ramesh.rangavittal@infineon.com>2022-09-29 04:25:27 +0300
committerKalle Valo <kvalo@kernel.org>2022-10-04 11:27:32 +0300
commit62ccb2e6f208ea754f62883be5a775f00bd559ab (patch)
treecff1fa9421e2331542e86cd8ec3598ad16433e33 /drivers
parent25076fe2a6024bcac009af1b737b184f65826476 (diff)
downloadlinux-62ccb2e6f208ea754f62883be5a775f00bd559ab.tar.xz
brcmfmac: Fix authentication latency caused by OBSS stats survey
Auto Channel Select feature of HostAP uses dump_survey to fetch OBSS statistics. When the device is in the middle of an authentication sequence or just at the end of authentication completion, running dump_survey would trigger a channel change. The channel change in-turn can cause packet loss, resulting in authentication delay. With this change, dump_survey won't be run when authentication or association is in progress, hence resolving the issue. Signed-off-by: Ramesh Rangavittal <ramesh.rangavittal@infineon.com> Signed-off-by: Chung-Hsien Hsu <chung-hsien.hsu@infineon.com> Signed-off-by: Chi-hsien Lin <chi-hsien.lin@infineon.com> Signed-off-by: Ian Lin <ian.lin@infineon.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/20220929012527.4152-5-ian.lin@infineon.com
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index c13c4c559e6e..362d8fd0af4e 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -7697,6 +7697,12 @@ brcmf_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *ndev,
brcmf_dbg(TRACE, "Enter: channel idx=%d\n", idx);
+ /* Do not run survey when VIF in CONNECTING / CONNECTED states */
+ if ((test_bit(BRCMF_VIF_STATUS_CONNECTING, &ifp->vif->sme_state)) ||
+ (test_bit(BRCMF_VIF_STATUS_CONNECTED, &ifp->vif->sme_state))) {
+ return -EBUSY;
+ }
+
band = wiphy->bands[NL80211_BAND_2GHZ];
if (band && idx >= band->n_channels) {
idx -= band->n_channels;