summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomson Kang <thomson.kang@broadcom.corp-partner.google.com>2023-05-11 15:31:03 +0900
committerIsaac Chiou <isaacchiou@google.com>2023-06-12 13:20:38 +0000
commitb4af948b8605c6540da0d930f795e808256d8345 (patch)
tree4f0060be3350cbfd2c7fc08af115215539ba2d94
parent6de007347797831b8ba00f6105d554347560f67f (diff)
downloadbcm4389-b4af948b8605c6540da0d930f795e808256d8345.tar.gz
bcmdhd: Avoid connecting when the SoftAP interface is created in progress.
Issue] This issue happened for below sequence. 1. Start Dual SoftAP. 2. Created interface wlan2/ wlan3. 3. Succeed wlan2 interface up. 4. Connect to AP for STA. 5. Started interface up wlan3 interface. 6. The Link up event did not happen for wlan3, so coredump worked for BY_AP_LINK_FAILURE reason. We tried to reproduce this issue for use below command during 3days. But couldn't reproduce this symptom. Maybe it seems that the connection of STA was difficult between the interface up sequence for wlan2 and wlan3. Fix] Added a modification for DHD which avoids connection of STA when creating SoftAP. Bug: 278462235 Test: This issue could not reproduce. So tested a similar step for 1 day. Below was a tested scenario. 1. Run connecting command(STA). 2. Start SoftAP for 2G and 5G. 3. Wait for 30 seconds. 4. Stop Softap. 5. Disconnect to AP.(STA) Repeat 1 ~ 5 step. "AP LINK UP TIMEOUT" log was not observed about 1 day. Change-Id: I51f1d8ee69896564f5989183b4e1b33a9754de9e Signed-off-by: Thomson Kang <thomson.kang@broadcom.corp-partner.google.com>
-rw-r--r--wl_cfg80211.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/wl_cfg80211.c b/wl_cfg80211.c
index c26e437..51611c9 100644
--- a/wl_cfg80211.c
+++ b/wl_cfg80211.c
@@ -6930,6 +6930,11 @@ wl_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev,
err = -EINVAL;
goto fail;
}
+ if (wl_get_drv_status_all(cfg, AP_CREATING)) {
+ WL_ERR(("AP creates in progress, so skip this connection for creating AP.\n"));
+ err = -EBUSY;
+ goto fail;
+ }
#endif /* WL_DUAL_STA */
bzero(&assoc_info, sizeof(wlcfg_assoc_info_t));
if ((assoc_info.bssidx = wl_get_bssidx_by_wdev(cfg, dev->ieee80211_ptr)) < 0) {