Merge "wlan: Initialize all adapter completion variables during open adater"
diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h
index 3a7a9da..f0e0e79 100644
--- a/CORE/HDD/inc/wlan_hdd_main.h
+++ b/CORE/HDD/inc/wlan_hdd_main.h
@@ -1726,4 +1726,7 @@
}
#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
void hdd_wlan_free_wiphy_channels(struct wiphy *wiphy);
+void hdd_initialize_adapter_common(hdd_adapter_t *pAdapter);
+
+
#endif // end #if !defined( WLAN_HDD_MAIN_H )
diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c
index 4ec80df..f877c13 100644
--- a/CORE/HDD/src/wlan_hdd_hostapd.c
+++ b/CORE/HDD/src/wlan_hdd_hostapd.c
@@ -4907,8 +4907,6 @@
return status;
}
- init_completion(&pAdapter->session_close_comp_var);
- init_completion(&pAdapter->session_open_comp_var);
sema_init(&(WLAN_HDD_GET_AP_CTX_PTR(pAdapter))->semWpsPBCOverlapInd, 1);
@@ -4985,13 +4983,6 @@
pWlanHostapdDev->ieee80211_ptr = &pHostapdAdapter->wdev ;
pHostapdAdapter->wdev.wiphy = pHddCtx->wiphy;
pHostapdAdapter->wdev.netdev = pWlanHostapdDev;
- init_completion(&pHostapdAdapter->tx_action_cnf_event);
- init_completion(&pHostapdAdapter->cancel_rem_on_chan_var);
- init_completion(&pHostapdAdapter->rem_on_chan_ready_event);
- init_completion(&pHostapdAdapter->ula_complete);
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
- init_completion(&pHostapdAdapter->offchannel_tx_event);
-#endif
SET_NETDEV_DEV(pWlanHostapdDev, pHddCtx->parent_dev);
}
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index c74f49d..5362a5f 100755
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -6278,32 +6278,7 @@
pAdapter->magic = WLAN_HDD_ADAPTER_MAGIC;
spin_lock_init(&pAdapter->lock_for_active_session);
- init_completion(&pAdapter->session_open_comp_var);
- init_completion(&pAdapter->session_close_comp_var);
- init_completion(&pAdapter->disconnect_comp_var);
- init_completion(&pAdapter->linkup_event_var);
- init_completion(&pAdapter->cancel_rem_on_chan_var);
- init_completion(&pAdapter->rem_on_chan_ready_event);
- init_completion(&pAdapter->pno_comp_var);
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
- init_completion(&pAdapter->offchannel_tx_event);
-#endif
- init_completion(&pAdapter->tx_action_cnf_event);
-#ifdef FEATURE_WLAN_TDLS
- init_completion(&pAdapter->tdls_add_station_comp);
- init_completion(&pAdapter->tdls_del_station_comp);
- init_completion(&pAdapter->tdls_mgmt_comp);
- init_completion(&pAdapter->tdls_link_establish_req_comp);
-#endif
- init_completion(&pHddCtx->mc_sus_event_var);
- init_completion(&pHddCtx->tx_sus_event_var);
- init_completion(&pHddCtx->rx_sus_event_var);
- init_completion(&pAdapter->ula_complete);
- init_completion(&pAdapter->change_country_code);
-
#ifdef FEATURE_WLAN_BATCH_SCAN
- init_completion(&pAdapter->hdd_set_batch_scan_req_var);
- init_completion(&pAdapter->hdd_get_batch_scan_req_var);
pAdapter->pBatchScanRsp = NULL;
pAdapter->numScanList = 0;
pAdapter->batchScanState = eHDD_BATCH_SCAN_STATE_STOPPED;
@@ -7001,6 +6976,7 @@
mutex_unlock(&pHddCtx->tdls_lock);
#endif
+ hdd_initialize_adapter_common(pAdapter);
status = hdd_init_station_mode( pAdapter );
if( VOS_STATUS_SUCCESS != status )
goto err_free_netdev;
@@ -7059,6 +7035,7 @@
NL80211_IFTYPE_P2P_GO;
pAdapter->device_mode = session_type;
+ hdd_initialize_adapter_common(pAdapter);
status = hdd_init_ap_mode(pAdapter);
if( VOS_STATUS_SUCCESS != status )
goto err_free_netdev;
@@ -7124,6 +7101,7 @@
#endif
status = hdd_register_interface( pAdapter, rtnl_held );
hdd_init_mon_mode( pAdapter );
+ hdd_initialize_adapter_common(pAdapter);
hdd_init_tx_rx( pAdapter );
set_bit(INIT_TX_RX_SUCCESS, &pAdapter->event_flags);
//Stop the Interface TX queue.
@@ -7148,6 +7126,7 @@
pAdapter->device_mode = session_type;
status = hdd_register_interface( pAdapter, rtnl_held );
+ hdd_initialize_adapter_common(pAdapter);
hdd_init_tx_rx( pAdapter );
//Stop the Interface TX queue.
@@ -7167,7 +7146,7 @@
if( VOS_STATUS_SUCCESS == status )
{
- //Add it to the hdd's session list.
+ //Add it to the hdd's session list.
pHddAdapterNode = vos_mem_malloc( sizeof( hdd_adapter_list_node_t ) );
if( NULL == pHddAdapterNode )
{
@@ -9719,6 +9698,10 @@
init_completion(&pHddCtx->scan_info.abortscan_event_var);
init_completion(&pHddCtx->wiphy_channel_update_event);
init_completion(&pHddCtx->ssr_comp_var);
+ init_completion(&pHddCtx->mc_sus_event_var);
+ init_completion(&pHddCtx->tx_sus_event_var);
+ init_completion(&pHddCtx->rx_sus_event_var);
+
hdd_init_ll_stats_ctx(pHddCtx);
@@ -12166,6 +12149,45 @@
return sta_id;
}
+void hdd_initialize_adapter_common(hdd_adapter_t *pAdapter)
+{
+ if (NULL == pAdapter)
+ {
+ hddLog(VOS_TRACE_LEVEL_ERROR, "%s: pAdapter is NULL ", __func__);
+ return;
+ }
+ init_completion(&pAdapter->session_open_comp_var);
+ init_completion(&pAdapter->session_close_comp_var);
+ init_completion(&pAdapter->disconnect_comp_var);
+ init_completion(&pAdapter->linkup_event_var);
+ init_completion(&pAdapter->cancel_rem_on_chan_var);
+ init_completion(&pAdapter->rem_on_chan_ready_event);
+ init_completion(&pAdapter->pno_comp_var);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
+ init_completion(&pAdapter->offchannel_tx_event);
+#endif
+ init_completion(&pAdapter->tx_action_cnf_event);
+#ifdef FEATURE_WLAN_TDLS
+ init_completion(&pAdapter->tdls_add_station_comp);
+ init_completion(&pAdapter->tdls_del_station_comp);
+ init_completion(&pAdapter->tdls_mgmt_comp);
+ init_completion(&pAdapter->tdls_link_establish_req_comp);
+#endif
+
+#ifdef WLAN_FEATURE_RMC
+ init_completion(&pAdapter->ibss_peer_info_comp);
+#endif /* WLAN_FEATURE_RMC */
+ init_completion(&pAdapter->ula_complete);
+ init_completion(&pAdapter->change_country_code);
+
+#ifdef FEATURE_WLAN_BATCH_SCAN
+ init_completion(&pAdapter->hdd_set_batch_scan_req_var);
+ init_completion(&pAdapter->hdd_get_batch_scan_req_var);
+#endif
+
+ return;
+}
+
//Register the module init/exit functions
module_init(hdd_module_init);
module_exit(hdd_module_exit);