wlan: linux regulatory changes
Properly separate out the regulatory changes when CONFIG_ENABLE_LINUX_REG
is defined and when it is not defined.
Change-Id: Ia01777a8b2e18a52b532e460a9ebcb1ab3196e50
CRs-Fixed: 538940
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 66d5fae..4a57141 100644
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -6725,7 +6725,12 @@
init_completion(&pHddCtx->req_bmps_comp_var);
init_completion(&pHddCtx->scan_info.scan_req_completion_event);
init_completion(&pHddCtx->scan_info.abortscan_event_var);
+
+#ifdef CONFIG_ENABLE_LINUX_REG
init_completion(&pHddCtx->linux_reg_req);
+#else
+ init_completion(&pHddCtx->driver_crda_req);
+#endif
spin_lock_init(&pHddCtx->schedScan_lock);
@@ -6870,11 +6875,20 @@
goto err_wdclose;
}
+#ifdef CONFIG_ENABLE_LINUX_REG
+ /* registration of wiphy dev with cfg80211 */
+ if (0 > wlan_hdd_cfg80211_register(wiphy))
+ {
+ hddLog(VOS_TRACE_LEVEL_ERROR,"%s: wiphy register failed", __func__);
+ goto err_clkvote;
+ }
+#endif
+
status = vos_open( &pVosContext, 0);
if ( !VOS_IS_STATUS_SUCCESS( status ))
{
hddLog(VOS_TRACE_LEVEL_FATAL, "%s: vos_open failed", __func__);
- goto err_clkvote;
+ goto err_wiphy_unregister;
}
pHddCtx->hHal = (tHalHandle)vos_get_context( VOS_MODULE_ID_SME, pVosContext );
@@ -7015,6 +7029,8 @@
__func__);
goto err_vosstop;
}
+
+#ifndef CONFIG_ENABLE_LINUX_REG
wlan_hdd_cfg80211_update_reg_info( wiphy );
/* registration of wiphy dev with cfg80211 */
@@ -7023,6 +7039,7 @@
hddLog(VOS_TRACE_LEVEL_ERROR,"%s: wiphy register failed", __func__);
goto err_vosstop;
}
+#endif
if (VOS_STA_SAP_MODE == hdd_get_conparam())
{
@@ -7267,21 +7284,31 @@
err_close_adapter:
hdd_close_all_adapters( pHddCtx );
+
+#ifndef CONFIG_ENABLE_LINUX_REG
wiphy_unregister(wiphy) ;
+#endif
err_vosstop:
vos_stop(pVosContext);
-err_vosclose:
+err_vosclose:
status = vos_sched_close( pVosContext );
if (!VOS_IS_STATUS_SUCCESS(status)) {
VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL,
"%s: Failed to close VOSS Scheduler", __func__);
VOS_ASSERT( VOS_IS_STATUS_SUCCESS( status ) );
}
- vos_close(pVosContext );
+ vos_close(pVosContext );
+
+err_wiphy_unregister:
+
+#ifdef CONFIG_ENABLE_LINUX_REG
+ wiphy_unregister(wiphy);
err_clkvote:
+#endif
+
vos_chipVoteOffXOBuffer(NULL, NULL, NULL);
err_wdclose: