wlan:Block WiFi Direct GO mode on UNII-1 Band.
Make UNII-1 Band channels to passive channel.
GO shouldn't be started on UNII-1 band channels
(36,38,40,42,44,46,48) if regulatory domain is FCC.
CRs-Fixed: 472846
Change-Id: I87b2cc3ff6e634ef8a57cc5c0c60c3dcc151ee87
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 334c389..df81f9b 100644
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -604,6 +604,7 @@
if ((SIOCDEVPRIVATE + 1) == cmd)
{
hdd_context_t *pHddCtx = (hdd_context_t*)pAdapter->pHddCtx;
+ struct wiphy *wiphy = pHddCtx->wiphy;
VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
"%s: Received %s cmd from Wi-Fi GUI***", __func__, command);
@@ -648,6 +649,14 @@
"%s: SME Change Country code fail ret=%d\n",__func__, ret);
}
+ /* If you get a 00 country code it means you are world roaming.
+ In case of world roaming, country code should be updated by
+ DRIVER COUNTRY */
+ if (memcmp(pHddCtx->cfg_ini->crdaDefaultCountryCode,
+ CFG_CRDA_DEFAULT_COUNTRY_CODE_DEFAULT , 2) == 0)
+ {
+ regulatory_hint(wiphy, "00");
+ }
}
/*
command should be a string having format
@@ -5412,7 +5421,7 @@
/*
* cfg80211: wiphy allocation
*/
- wiphy = wlan_hdd_cfg80211_init(sizeof(hdd_context_t)) ;
+ wiphy = wlan_hdd_cfg80211_wiphy_alloc(sizeof(hdd_context_t)) ;
if(wiphy == NULL)
{
@@ -5511,13 +5520,13 @@
pHddCtx->cfg_ini->nthBeaconFilter = 1;
}
/*
- * cfg80211: Initialization and registration ...
+ * cfg80211: Initialization ...
*/
- if (0 < wlan_hdd_cfg80211_register(dev, wiphy, pHddCtx->cfg_ini))
+ if (0 < wlan_hdd_cfg80211_init(dev, wiphy, pHddCtx->cfg_ini))
{
hddLog(VOS_TRACE_LEVEL_FATAL,
- "%s: wlan_hdd_cfg80211_register return failure", __func__);
- goto err_wiphy_reg;
+ "%s: wlan_hdd_cfg80211_init return failure", __func__);
+ goto err_config;
}
// Update VOS trace levels based upon the cfg.ini
@@ -5574,7 +5583,7 @@
if(!VOS_IS_STATUS_SUCCESS( status ))
{
hddLog(VOS_TRACE_LEVEL_FATAL,"%s: vos_watchdog_open failed",__func__);
- goto err_wiphy_reg;
+ goto err_wdclose;
}
}
@@ -5733,6 +5742,14 @@
__func__);
goto err_vosstop;
}
+ wlan_hdd_cfg80211_update_reg_info( wiphy );
+
+ /* 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_vosstop;
+ }
if (VOS_STA_SAP_MODE == hdd_get_conparam())
{
@@ -5984,6 +6001,7 @@
err_close_adapter:
hdd_close_all_adapters( pHddCtx );
+ wiphy_unregister(wiphy) ;
err_vosstop:
vos_stop(pVosContext);
@@ -6004,9 +6022,6 @@
if(pHddCtx->cfg_ini->fIsLogpEnabled)
vos_watchdog_close(pVosContext);
-err_wiphy_reg:
- wiphy_unregister(wiphy) ;
-
err_config:
kfree(pHddCtx->cfg_ini);
pHddCtx->cfg_ini= NULL;