Sfoglia il codice sorgente

qcacld-3.0: Restrict SAP in 11abg mode when starting in 5/10 MHz

Restrict SAP in 11abg mode when starting in 5/10 MHz, since sub 20MHz
channel width is not compatible with HT and VHT rates.

Change-Id: I80b3f7b8f360368f3c3cfe653c90432dfd173ce2
CRs-Fixed: 1113259
Naveen Rawat 8 anni fa
parent
commit
10b1c15524

+ 3 - 0
core/hdd/src/wlan_hdd_cfg.c

@@ -5871,6 +5871,9 @@ config_exit:
  */
 eCsrPhyMode hdd_cfg_xlate_to_csr_phy_mode(eHddDot11Mode dot11Mode)
 {
+	if (cds_is_sub_20_mhz_enabled())
+		return eCSR_DOT11_MODE_abg;
+
 	switch (dot11Mode) {
 	case (eHDD_DOT11_MODE_abg):
 		return eCSR_DOT11_MODE_abg;

+ 6 - 1
core/hdd/src/wlan_hdd_hostapd.c

@@ -7570,7 +7570,9 @@ int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter,
 		}
 	}
 
-	wlan_hdd_set_sap_hwmode(pHostapdAdapter);
+	if (!cds_is_sub_20_mhz_enabled())
+		wlan_hdd_set_sap_hwmode(pHostapdAdapter);
+
 	if (pHddCtx->config->sap_force_11n_for_11ac) {
 		if (pConfig->SapHw_mode == eCSR_DOT11_MODE_11ac ||
 		    pConfig->SapHw_mode == eCSR_DOT11_MODE_11ac_ONLY)
@@ -8053,6 +8055,8 @@ static int __wlan_hdd_cfg80211_start_ap(struct wiphy *wiphy,
 	if (cds_is_sub_20_mhz_enabled()) {
 		enum channel_state ch_state;
 		enum phy_ch_width sub_20_ch_width = CH_WIDTH_INVALID;
+		tsap_Config_t *sap_cfg = &pAdapter->sessionCtx.ap.sapConfig;
+
 		/* Avoid ACS/DFS, and overwrite ch wd to 20 */
 		if (channel == 0) {
 			hdd_err("Can't start SAP-ACS (channel=0) with sub 20 MHz ch width.");
@@ -8081,6 +8085,7 @@ static int __wlan_hdd_cfg80211_start_ap(struct wiphy *wiphy,
 			hdd_err("Given ch width not supported by reg domain.");
 			return -EINVAL;
 		}
+		sap_cfg->SapHw_mode = eCSR_DOT11_MODE_abg;
 	}
 
 	/* check if concurrency is allowed */

+ 1 - 1
core/hdd/src/wlan_hdd_main.c

@@ -796,7 +796,7 @@ static void hdd_update_vdev_nss(hdd_context_t *hdd_ctx)
 	struct hdd_config *cfg_ini = hdd_ctx->config;
 	uint8_t max_supp_nss = 1;
 
-	if (cfg_ini->enable2x2)
+	if (cfg_ini->enable2x2 && !cds_is_sub_20_mhz_enabled())
 		max_supp_nss = 2;
 
 	sme_update_vdev_type_nss(hdd_ctx->hHal, max_supp_nss,

+ 3 - 2
core/sme/src/csr/csr_api_roam.c

@@ -12789,8 +12789,9 @@ csr_roam_get_bss_start_parms(tpAniSirGlobal pMac,
 	 * ignore basic and extended rates from hostapd.conf and should
 	 * populate default rates.
 	 */
-	if (!skip_hostapd_rate && (pProfile->supported_rates.numRates ||
-				   pProfile->extended_rates.numRates)) {
+	if (!cds_is_sub_20_mhz_enabled() && !skip_hostapd_rate &&
+			(pProfile->supported_rates.numRates ||
+			pProfile->extended_rates.numRates)) {
 		csr_populate_supported_rates_from_hostapd(opr_rates,
 				ext_rates, pProfile);
 		pParam->operationChn = tmp_opr_ch;