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
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