wlan: Auto Channel Selection Support in HT40/VHT80

Auto Channel Selection Support in HT40/VHT80

Change-Id: I0b6424031f11446395a0b6f6a724b879758df9ca
CR-Fixed: 427491
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index ad9ac0c..4902862 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -1239,20 +1239,19 @@
  * called by wlan_hdd_cfg80211_start_bss() and
  * This function  selects the cbmode based on primary channel
  */ 
-static VOS_STATUS wlan_hdd_select_cbmode(hdd_adapter_t *pAdapter,tsap_Config_t *pSapConfig )
+VOS_STATUS wlan_sap_select_cbmode(void *pAdapter,eSapPhyMode SapHw_mode, v_U8_t channel)
 {
     tSmeConfigParams smeConfig;
-    hdd_context_t  *pHddCtx  = ( hdd_context_t *) pAdapter->pHddCtx;
-    hdd_config_t  *pConfigIni = ((hdd_context_t *)(pAdapter->pHddCtx))->cfg_ini;
-    v_U8_t         channel;
-
+    hdd_context_t  *pHddCtx  = ( hdd_context_t *) pAdapter;
+    hdd_config_t  *pConfigIni = ((hdd_context_t *)(pAdapter))->cfg_ini;
+    
     if(
 #ifdef WLAN_FEATURE_11AC
-      pSapConfig->SapHw_mode != eSAP_DOT11_MODE_11ac &&
-      pSapConfig->SapHw_mode != eSAP_DOT11_MODE_11ac_ONLY &&
+      SapHw_mode != eSAP_DOT11_MODE_11ac &&
+      SapHw_mode != eSAP_DOT11_MODE_11ac_ONLY &&
 #endif
-      pSapConfig->SapHw_mode != eSAP_DOT11_MODE_11n &&
-      pSapConfig->SapHw_mode != eSAP_DOT11_MODE_11n_ONLY 
+      SapHw_mode != eSAP_DOT11_MODE_11n &&
+      SapHw_mode != eSAP_DOT11_MODE_11n_ONLY 
       )
     {
         return VOS_STATUS_SUCCESS;
@@ -1262,15 +1261,15 @@
         return VOS_STATUS_SUCCESS;
     }
 
-    channel = pSapConfig->channel;
+    //channel = pSapConfig->channel;
     vos_mem_zero(&smeConfig, sizeof (tSmeConfigParams));
 
     sme_GetConfigParam(pHddCtx->hHal, &smeConfig);
 
 #ifdef WLAN_FEATURE_11AC
 
-    if ( pSapConfig->SapHw_mode == eSAP_DOT11_MODE_11ac || 
-         pSapConfig->SapHw_mode == eSAP_DOT11_MODE_11ac_ONLY )
+    if ( SapHw_mode == eSAP_DOT11_MODE_11ac || 
+         SapHw_mode == eSAP_DOT11_MODE_11ac_ONLY )
     {
         if ( channel== 36 || channel == 52 || channel == 100 ||
              channel == 116 || channel == 149 )
@@ -1302,8 +1301,8 @@
         }
     }
 #endif
-    if ( pSapConfig->SapHw_mode == eSAP_DOT11_MODE_11n ||
-          pSapConfig->SapHw_mode == eSAP_DOT11_MODE_11n_ONLY )
+    if ( SapHw_mode == eSAP_DOT11_MODE_11n ||
+          SapHw_mode == eSAP_DOT11_MODE_11n_ONLY )
     {
         if ( channel== 40 || channel == 48 || channel == 56 ||
              channel == 64 || channel == 104 || channel == 112 ||
@@ -1631,7 +1630,8 @@
     }
 #endif
      
-    wlan_hdd_select_cbmode(pHostapdAdapter,pConfig);
+    if( AUTO_CHANNEL_SELECT != pConfig->channel)
+        wlan_sap_select_cbmode((WLAN_HDD_GET_CTX(pHostapdAdapter)),pConfig->SapHw_mode,pConfig->channel);
     // ht_capab is not what the name conveys,this is used for protection bitmap
     pConfig->ht_capab =
                  (WLAN_HDD_GET_CTX(pHostapdAdapter))->cfg_ini->apProtection;