brcmfmac: Fix authentication latency caused by OBSS stats survey
authorRamesh Rangavittal <ramesh.rangavittal@infineon.com>
Thu, 29 Sep 2022 01:25:27 +0000 (20:25 -0500)
committerKalle Valo <kvalo@kernel.org>
Tue, 4 Oct 2022 08:27:32 +0000 (11:27 +0300)
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
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c

index c13c4c5..362d8fd 100644 (file)
@@ -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;