diff options
| author | Manikandan Mohan <manikand@codeaurora.org> | 2017-02-09 20:04:25 -0800 |
|---|---|---|
| committer | qcabuildsw <qcabuildsw@localhost> | 2017-02-12 18:31:40 -0800 |
| commit | 23f08ae961c2b016cc7d9a4e312bb987248b606a (patch) | |
| tree | b484a9f8a0ec87949ab1aa5f42c79f74839e8068 | |
| parent | d616a548e9f99a46f70de7fa73a7a3c2af011a55 (diff) | |
qcacld-3.0: Fix SAP SSR reinit for uninitialized config
SSR can happen during SAP initialization. Thus check of SAP
initialization complete before attempting to restart SAP instance
during SSR.
Change-Id: Ib26116cfc33684035df692ae6c7b5d83cb0a27b8
CRs-fixed: 2005281
| -rw-r--r-- | core/hdd/inc/wlan_hdd_main.h | 1 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_hostapd.c | 4 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_power.c | 6 |
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; |
