summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/hdd/inc/wlan_hdd_main.h1
-rw-r--r--core/hdd/src/wlan_hdd_hostapd.c4
-rw-r--r--core/hdd/src/wlan_hdd_power.c6
3 files changed, 9 insertions, 2 deletions
diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h
index 94a787e09010..b9454c5278d5 100644
--- a/core/hdd/inc/wlan_hdd_main.h
+++ b/core/hdd/inc/wlan_hdd_main.h
@@ -104,6 +104,7 @@
#define DEVICE_IFACE_OPENED (5)
#define TDLS_INIT_DONE (6)
#define ACS_PENDING (7)
+#define SOFTAP_INIT_DONE (8)
/* HDD global event flags */
#define ACS_IN_PROGRESS (0)
diff --git a/core/hdd/src/wlan_hdd_hostapd.c b/core/hdd/src/wlan_hdd_hostapd.c
index 876387fd05fd..7d27f5d51234 100644
--- a/core/hdd/src/wlan_hdd_hostapd.c
+++ b/core/hdd/src/wlan_hdd_hostapd.c
@@ -7778,6 +7778,7 @@ int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter,
pSapEventCallback = hdd_hostapd_sap_event_cb;
(WLAN_HDD_GET_AP_CTX_PTR(pHostapdAdapter))->dfs_cac_block_tx = true;
+ set_bit(SOFTAP_INIT_DONE, &pHostapdAdapter->event_flags);
qdf_event_reset(&pHostapdState->qdf_event);
status = wlansap_start_bss(
@@ -7838,6 +7839,7 @@ int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter,
return 0;
error:
+ clear_bit(SOFTAP_INIT_DONE, &pHostapdAdapter->event_flags);
if (pHostapdAdapter->sessionCtx.ap.sapConfig.acs_cfg.ch_list) {
qdf_mem_free(pHostapdAdapter->sessionCtx.ap.sapConfig.
acs_cfg.ch_list);
@@ -8023,6 +8025,7 @@ static int __wlan_hdd_cfg80211_stop_ap(struct wiphy *wiphy,
}
/* Reset WNI_CFG_PROBE_RSP Flags */
wlan_hdd_reset_prob_rspies(pAdapter);
+ clear_bit(SOFTAP_INIT_DONE, &pAdapter->event_flags);
#ifdef WLAN_FEATURE_P2P_DEBUG
if ((pAdapter->device_mode == QDF_P2P_GO_MODE) &&
@@ -8112,6 +8115,7 @@ static int __wlan_hdd_cfg80211_start_ap(struct wiphy *wiphy,
ENTER();
+ clear_bit(SOFTAP_INIT_DONE, &pAdapter->event_flags);
if (QDF_GLOBAL_FTM_MODE == hdd_get_conparam()) {
hdd_err("Command not allowed in FTM mode");
return -EINVAL;
diff --git a/core/hdd/src/wlan_hdd_power.c b/core/hdd/src/wlan_hdd_power.c
index c617b30efc68..2df1d3d10d32 100644
--- a/core/hdd/src/wlan_hdd_power.c
+++ b/core/hdd/src/wlan_hdd_power.c
@@ -1452,8 +1452,10 @@ static void hdd_ssr_restart_sap(hdd_context_t *hdd_ctx)
while (NULL != adapter_node && QDF_STATUS_SUCCESS == status) {
adapter = adapter_node->pAdapter;
if (adapter && adapter->device_mode == QDF_SAP_MODE) {
- hdd_notice("in sap mode %p", adapter);
- wlan_hdd_start_sap(adapter, true);
+ if (test_bit(SOFTAP_INIT_DONE, &adapter->event_flags)) {
+ hdd_notice("Restart prev SAP session");
+ wlan_hdd_start_sap(adapter, true);
+ }
}
status = hdd_get_next_adapter(hdd_ctx, adapter_node, &next);
adapter_node = next;