2022-09-21 02:09:43

by Ian Lin

[permalink] [raw]
Subject: [PATCH 0/4] brcmfmac: Add dump_survey cfg80211 ops series

Add dump_survey cfg80211 ops for HostApd AutoChannelSelection.
And fix related bug.

Double Lo (1):
brcmfmac: fix CERT-P2P:5.1.10 failure

Ramesh Rangavittal (1):
brcmfmac: Fix authentication latency caused by OBSS stats survey

Wright Feng (2):
brcmfmac: Add dump_survey cfg80211 ops for HostApd
AutoChannelSelection
brcmfmac: fix firmware trap while dumping obss stats

.../broadcom/brcm80211/brcmfmac/cfg80211.c | 255 ++++++++++++++++++
.../broadcom/brcm80211/brcmfmac/feature.c | 3 +-
.../broadcom/brcm80211/brcmfmac/feature.h | 4 +-
3 files changed, 260 insertions(+), 2 deletions(-)

--
2.25.0


2022-09-21 02:10:49

by Ian Lin

[permalink] [raw]
Subject: [PATCH 4/4] brcmfmac: Fix authentication latency caused by OBSS stats survey

From: Ramesh Rangavittal <[email protected]>

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 <[email protected]>
Signed-off-by: Chung-Hsien Hsu <[email protected]>
Signed-off-by: Chi-hsien Lin <[email protected]>
Signed-off-by: Ian Lin <[email protected]>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index c909284e126e..98f0319686e6 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -7715,6 +7715,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;
--
2.25.0