Browse Source

qcacld-3.0: Legacy vdev type nss inis cleanup

With the introduction of new 32 bit ini for per vdev
nss and chains, the legacy inis are no longer required.

Cleanup the legacy inis of per vdev nss for both the
bands.

Change-Id: Ia4c8301062457a15a9bda49dca4a4a36a4372f88
CRs-Fixed: 2349204
gaurank kathpalia 6 years ago
parent
commit
651abcd134

+ 0 - 94
core/hdd/inc/wlan_hdd_cfg.h

@@ -3130,98 +3130,6 @@ enum hdd_link_speed_rpt_type {
 #define CFG_ENABLE_BT_CHAIN_SEPARATION_MAX     (1)
 #define CFG_ENABLE_BT_CHAIN_SEPARATION_DEFAULT (0)
 
-/*
- * <ini>
- * gVdevTypeNss_2g - set Number of streams per VDEV for 2G band.
- * @Min: 0x5555
- * @Max: 0xAAAA
- * @Default: 0xAAAA
- *
- * This ini is  used to set set Number of streams per VDEV for 2G band
- *
- * These Nss parameters will have 32-bit configuration value, 2 bits are
- * allocated for each vdev.
- * Valid values are:
- * Min value – 0x5555
- * Max value – 0xAAAA
- * Default value will be 0xAAAA for both the parameters.
- * Value 0x5555 will configure all vdevs in 1x1 mode in 2.4G band.
- * Value 0xAAAA will configure all vdevs in 2x2 mode in 2.4G band.
- *
- * The max value is defined based on the valid max Nss of the vdev, the valid
- * values for each vdev 2-bits are 0x1 and 0x2. 0x3 and 0x0 are not valid vdev
- * Nss values.
- *
- * NSS cfg bit definition.
- * STA          BIT[0:1]
- * SAP          BIT[2:3]
- * P2P_GO       BIT[4:5]
- * P2P_CLIENT   BIT[6:7]
- * IBSS         BIT[8:9]
- * TDLS         BIT[10:11]
- * P2P_DEVICE   BIT[12:13]
- * OCB          BIT[14:15]
- *
- * Related: NA
- *
- * Supported Feature: Antenna Sharing
- *
- * Usage: External
- *
- * </ini>
- */
-
-#define CFG_VDEV_TYPE_NSS_2G         "gVdevTypeNss_2g"
-#define CFG_VDEV_TYPE_NSS_2G_MIN     (0x5555)
-#define CFG_VDEV_TYPE_NSS_2G_MAX     (0xAAAA)
-#define CFG_VDEV_TYPE_NSS_2G_DEFAULT (0xAAAA)
-
-/*
- * <ini>
- * gVdevTypeNss_5g - set Number of streams per VDEV for 5G band.
- * @Min: 0x5555
- * @Max: 0xAAAA
- * @Default: 0xAAAA
- *
- * This ini is  used to set set Number of streams per VDEV for 2G band
- *
- * These Nss parameters will have 32-bit configuration value, 2 bits are
- * allocated for each vdev.
- * Valid values are:
- * Min value – 0x5555
- * Max value – 0xAAAA
- * Default value will be 0xAAAA for both the parameters.
- * Value 0x5555 will configure all vdevs in 1x1 mode in 5 band.
- * Value 0xAAAA will configure all vdevs in 2x2 mode in 5 band.
- *
- * The max value is defined based on the valid max Nss of the vdev, the valid
- * values for each vdev 2-bits are 0x1 and 0x2. 0x3 and 0x0 are not valid vdev
- * Nss values.
- *
- * NSS cfg bit definition.
- * STA          BIT[0:1]
- * SAP          BIT[2:3]
- * P2P_GO       BIT[4:5]
- * P2P_CLIENT   BIT[6:7]
- * IBSS         BIT[8:9]
- * TDLS         BIT[10:11]
- * P2P_DEVICE   BIT[12:13]
- * OCB          BIT[14:15]
- *
- * Related: NA
- *
- * Supported Feature: Antenna Sharing
- *
- * Usage: External
- *
- * </ini>
- */
-
-#define CFG_VDEV_TYPE_NSS_5G         "gVdevTypeNss_5g"
-#define CFG_VDEV_TYPE_NSS_5G_MIN     (0x5555)
-#define CFG_VDEV_TYPE_NSS_5G_MAX     (0xAAAA)
-#define CFG_VDEV_TYPE_NSS_5G_DEFAULT (0xAAAA)
-
 /*
  * <ini>
  * gDisableDFSChSwitch - Disable channel switch if radar is found
@@ -6774,8 +6682,6 @@ struct hdd_config {
 	uint32_t bad_peer_tput_ieee80211ac;
 	uint32_t bad_peer_limit_ieee80211ac;
 #endif
-	uint32_t vdev_type_nss_2g;
-	uint32_t vdev_type_nss_5g;
 	bool enableFirstScan2GOnly;
 	uint8_t enable_tx_ldpc;
 	uint8_t enable_rx_ldpc;

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

@@ -1400,13 +1400,6 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_THROTTLE_DUTY_CYCLE_LEVEL3_MIN,
 		     CFG_THROTTLE_DUTY_CYCLE_LEVEL3_MAX),
 
-	REG_VARIABLE(CFG_VDEV_TYPE_NSS_2G, WLAN_PARAM_Integer,
-		     struct hdd_config, vdev_type_nss_2g,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_VDEV_TYPE_NSS_2G_DEFAULT,
-		     CFG_VDEV_TYPE_NSS_2G_MIN,
-		     CFG_VDEV_TYPE_NSS_2G_MAX),
-
 	REG_VARIABLE(CFG_ENABLE_BT_CHAIN_SEPARATION, WLAN_PARAM_Integer,
 		     struct hdd_config, enable_bt_chain_separation,
 		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -1414,13 +1407,6 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_ENABLE_BT_CHAIN_SEPARATION_MIN,
 		     CFG_ENABLE_BT_CHAIN_SEPARATION_MAX),
 
-	REG_VARIABLE(CFG_VDEV_TYPE_NSS_5G, WLAN_PARAM_Integer,
-		     struct hdd_config, vdev_type_nss_5g,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_VDEV_TYPE_NSS_5G_DEFAULT,
-		     CFG_VDEV_TYPE_NSS_5G_MIN,
-		     CFG_VDEV_TYPE_NSS_5G_MAX),
-
 	REG_VARIABLE(CFG_DISABLE_DFS_CH_SWITCH, WLAN_PARAM_Integer,
 		     struct hdd_config, disableDFSChSwitch,
 		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,

+ 1 - 0
core/hdd/src/wlan_hdd_hostapd_wext.c

@@ -996,6 +996,7 @@ static __iw_softap_setparam(struct net_device *dev,
 	case QCASAP_NSS_CMD:
 	{
 		hdd_debug("QCASAP_NSS_CMD val %d", set_value);
+		hdd_update_nss(adapter, set_value);
 		ret = wma_cli_set_command(adapter->session_id,
 					  WMI_VDEV_PARAM_NSS,
 					  set_value, VDEV_CMD);

+ 21 - 17
core/hdd/src/wlan_hdd_main.c

@@ -1372,13 +1372,18 @@ static int hdd_update_tdls_config(struct hdd_context *hdd_ctx)
 {
 	struct wlan_objmgr_psoc *psoc = hdd_ctx->psoc;
 	struct tdls_start_params tdls_cfg;
-	struct hdd_config *cfg = hdd_ctx->config;
 	QDF_STATUS status;
+	struct wlan_mlme_nss_chains vdev_ini_cfg;
+
+	/* Populate the nss chain params from ini for this vdev type */
+	sme_populate_nss_chain_params(hdd_ctx->mac_handle, &vdev_ini_cfg,
+				      QDF_TDLS_MODE,
+				      hdd_ctx->num_rf_chains);
 
 	cfg_tdls_set_vdev_nss_2g(hdd_ctx->psoc,
-				 CFG_TDLS_NSS(cfg->vdev_type_nss_2g));
+				 vdev_ini_cfg.rx_nss[NSS_CHAINS_BAND_2GHZ]);
 	cfg_tdls_set_vdev_nss_5g(hdd_ctx->psoc,
-				 CFG_TDLS_NSS(cfg->vdev_type_nss_5g));
+				 vdev_ini_cfg.rx_nss[NSS_CHAINS_BAND_5GHZ]);
 	tdls_cfg.tdls_send_mgmt_req = eWNI_SME_TDLS_SEND_MGMT_REQ;
 	tdls_cfg.tdls_add_sta_req = eWNI_SME_TDLS_ADD_STA_REQ;
 	tdls_cfg.tdls_del_sta_req = eWNI_SME_TDLS_DEL_STA_REQ;
@@ -1505,7 +1510,6 @@ static void hdd_update_tgt_services(struct hdd_context *hdd_ctx,
  */
 static void hdd_update_vdev_nss(struct hdd_context *hdd_ctx)
 {
-	struct hdd_config *cfg_ini = hdd_ctx->config;
 	uint8_t max_supp_nss = 1;
 	mac_handle_t mac_handle;
 	QDF_STATUS status;
@@ -1517,16 +1521,15 @@ static void hdd_update_vdev_nss(struct hdd_context *hdd_ctx)
 
 	if (bval && !cds_is_sub_20_mhz_enabled())
 		max_supp_nss = 2;
-	hdd_debug("max nss %d vdev_type_nss_2g %x vdev_type_nss_5g %x",
-		  max_supp_nss, cfg_ini->vdev_type_nss_2g,
-		  cfg_ini->vdev_type_nss_5g);
+
+	hdd_debug("max nss %d", max_supp_nss);
 
 	mac_handle = hdd_ctx->mac_handle;
 	sme_update_vdev_type_nss(mac_handle, max_supp_nss,
-				 cfg_ini->vdev_type_nss_2g, BAND_2G);
+				 NSS_CHAINS_BAND_2GHZ);
 
 	sme_update_vdev_type_nss(mac_handle, max_supp_nss,
-				 cfg_ini->vdev_type_nss_5g, BAND_5G);
+				 NSS_CHAINS_BAND_5GHZ);
 }
 
 /**
@@ -14133,21 +14136,22 @@ QDF_STATUS hdd_update_score_config(
 {
 	struct hdd_config *cfg = hdd_ctx->config;
 	QDF_STATUS status;
+	struct wlan_mlme_nss_chains vdev_ini_cfg;
 	bool bval = false;
 
+	/* Populate the nss chain params from ini for this vdev type */
+	sme_populate_nss_chain_params(hdd_ctx->mac_handle, &vdev_ini_cfg,
+				      QDF_STA_MODE,
+				      hdd_ctx->num_rf_chains);
+
+	score_config->vdev_nss_24g = vdev_ini_cfg.rx_nss[NSS_CHAINS_BAND_2GHZ];
+	score_config->vdev_nss_24g = vdev_ini_cfg.rx_nss[NSS_CHAINS_BAND_5GHZ];
+
 	sme_update_score_config(hdd_ctx->mac_handle, score_config);
 
 	score_config->cb_mode_24G = cfg->nChannelBondingMode24GHz;
 	score_config->cb_mode_5G = cfg->nChannelBondingMode5GHz;
 
-	status = ucfg_mlme_get_vht_enable2x2(hdd_ctx->psoc, &bval);
-	if (!QDF_IS_STATUS_SUCCESS(status))
-		hdd_err("unable to get vht_enable2x2");
-	score_config->vdev_nss_24g =
-		bval ? CFG_STA_NSS(cfg->vdev_type_nss_2g) : 1;
-	score_config->vdev_nss_5g =
-		bval ? CFG_STA_NSS(cfg->vdev_type_nss_5g) : 1;
-
 	if (cfg->dot11Mode == eHDD_DOT11_MODE_AUTO ||
 	    cfg->dot11Mode == eHDD_DOT11_MODE_11ax ||
 	    cfg->dot11Mode == eHDD_DOT11_MODE_11ax_ONLY)

+ 0 - 21
core/mac/inc/ani_global.h

@@ -122,27 +122,6 @@ static inline mac_handle_t MAC_HANDLE(tpAniSirGlobal mac)
 /* Minimum size of vendor IE = 3 bytes of oui_data + 1 byte of data */
 #define IE_VENDOR_OUI_SIZE   (4)
 
-/*
- * NSS cfg bit definition.
- * STA          BIT[0:1]
- * SAP          BIT[2:3]
- * P2P_GO       BIT[4:5]
- * P2P_CLIENT   BIT[6:7]
- * IBSS         BIT[8:9]
- * TDLS         BIT[10:11]
- * P2P_DEVICE   BIT[12:13]
- * OCB          BIT[14:15]
- */
-
-#define CFG_STA_NSS(_x)     ((((_x) >> 0) & 0x3) ? (((_x) >> 0) & 0x3) : 1)
-#define CFG_SAP_NSS(_x)     ((((_x) >> 2) & 0x3) ? (((_x) >> 2) & 0x3) : 1)
-#define CFG_P2P_GO_NSS(_x)  ((((_x) >> 4) & 0x3) ? (((_x) >> 4) & 0x3) : 1)
-#define CFG_P2P_CLI_NSS(_x) ((((_x) >> 6) & 0x3) ? (((_x) >> 6) & 0x3) : 1)
-#define CFG_IBSS_NSS(_x)    ((((_x) >> 8) & 0x3) ? (((_x) >> 8) & 0x3) : 1)
-#define CFG_TDLS_NSS(_x)    ((((_x) >> 10) & 0x3) ? (((_x) >> 10) & 0x3) : 1)
-#define CFG_P2P_DEV_NSS(_x) ((((_x) >> 12) & 0x3) ? (((_x) >> 12) & 0x3) : 1)
-#define CFG_OCB_NSS(_x)     ((((_x) >> 14) & 0x3) ? (((_x) >> 14) & 0x3) : 1)
-
 /**
  * enum log_event_type - Type of event initiating bug report
  * @WLAN_LOG_TYPE_NON_FATAL: Non fatal event

+ 2 - 1
core/sme/inc/sme_api.h

@@ -1773,8 +1773,9 @@ void sme_set_vdev_ies_per_band(mac_handle_t hal, uint8_t vdev_id);
 void sme_set_pdev_ht_vht_ies(mac_handle_t mac_handle, bool enable2x2);
 
 void sme_update_vdev_type_nss(mac_handle_t hal, uint8_t max_supp_nss,
-		uint32_t vdev_type_nss, enum band_info band);
+			      enum nss_chains_band_info band);
 void sme_update_hw_dbs_capable(mac_handle_t hal, uint8_t hw_dbs_capable);
+
 #ifdef FEATURE_P2P_LISTEN_OFFLOAD
 void sme_register_p2p_lo_event(mac_handle_t mac_handle, void *context,
 					p2p_lo_callback callback);

+ 40 - 15
core/sme/src/common/sme_api.c

@@ -4775,7 +4775,7 @@ QDF_STATUS sme_oem_data_req(mac_handle_t hal, struct oem_data_req *hdd_oem_req)
 #define SAP_NSS_CHAINS_SHIFT               3
 #define P2P_GO_NSS_CHAINS_SHIFT            6
 #define P2P_CLI_CHAINS_SHIFT               9
-#define TDLS_CHAINS_SHIFT                  12
+#define TDLS_NSS_CHAINS_SHIFT              12
 #define IBSS_NSS_CHAINS_SHIFT              15
 #define P2P_DEV_NSS_CHAINS_SHIFT           18
 #define OCB_NSS_CHAINS_SHIFT               21
@@ -4800,6 +4800,8 @@ static uint8_t sme_get_nss_chain_shift(enum QDF_OPMODE device_mode)
 		return P2P_DEV_NSS_CHAINS_SHIFT;
 	case QDF_OCB_MODE:
 		return OCB_NSS_CHAINS_SHIFT;
+	case QDF_TDLS_MODE:
+		return TDLS_NSS_CHAINS_SHIFT;
 
 	default:
 		sme_err("Device mode %d invalid", device_mode);
@@ -14704,7 +14706,6 @@ void sme_set_pdev_ht_vht_ies(mac_handle_t hal, bool enable2x2)
 /**
  * sme_update_vdev_type_nss() - sets the nss per vdev type
  * @hal: Pointer to HAL
- * @max_supp_nss: max_supported Nss
  * @band: 5G or 2.4G band
  *
  * Sets the per band Nss for each vdev type based on INI and configured
@@ -14713,27 +14714,51 @@ void sme_set_pdev_ht_vht_ies(mac_handle_t hal, bool enable2x2)
  * Return: None
  */
 void sme_update_vdev_type_nss(mac_handle_t hal, uint8_t max_supp_nss,
-		uint32_t vdev_type_nss, enum band_info band)
+			      enum nss_chains_band_info band)
 {
 	tpAniSirGlobal mac_ctx = PMAC_STRUCT(hal);
 	struct vdev_type_nss *vdev_nss;
 
-	if (BAND_5G == band)
+	struct wlan_mlme_nss_chains *nss_chains_ini_cfg =
+					&mac_ctx->mlme_cfg->nss_chains_ini_cfg;
+
+	if (band == NSS_CHAINS_BAND_5GHZ)
 		vdev_nss = &mac_ctx->vdev_type_nss_5g;
 	else
 		vdev_nss = &mac_ctx->vdev_type_nss_2g;
 
-	vdev_nss->sta = QDF_MIN(max_supp_nss, CFG_STA_NSS(vdev_type_nss));
-	vdev_nss->sap = QDF_MIN(max_supp_nss, CFG_SAP_NSS(vdev_type_nss));
-	vdev_nss->p2p_go = QDF_MIN(max_supp_nss,
-				CFG_P2P_GO_NSS(vdev_type_nss));
-	vdev_nss->p2p_cli = QDF_MIN(max_supp_nss,
-				CFG_P2P_CLI_NSS(vdev_type_nss));
-	vdev_nss->p2p_dev = QDF_MIN(max_supp_nss,
-				CFG_P2P_DEV_NSS(vdev_type_nss));
-	vdev_nss->ibss = QDF_MIN(max_supp_nss, CFG_IBSS_NSS(vdev_type_nss));
-	vdev_nss->tdls = QDF_MIN(max_supp_nss, CFG_TDLS_NSS(vdev_type_nss));
-	vdev_nss->ocb = QDF_MIN(max_supp_nss, CFG_OCB_NSS(vdev_type_nss));
+	vdev_nss->sta = QDF_MIN(max_supp_nss, GET_VDEV_NSS_CHAIN(
+						nss_chains_ini_cfg->
+							num_rx_chains[band],
+						STA_NSS_CHAINS_SHIFT));
+	vdev_nss->sap = QDF_MIN(max_supp_nss, GET_VDEV_NSS_CHAIN(
+						nss_chains_ini_cfg->
+							num_rx_chains[band],
+						SAP_NSS_CHAINS_SHIFT));
+	vdev_nss->p2p_go = QDF_MIN(max_supp_nss, GET_VDEV_NSS_CHAIN(
+						nss_chains_ini_cfg->
+							num_rx_chains[band],
+						P2P_GO_NSS_CHAINS_SHIFT));
+	vdev_nss->p2p_cli = QDF_MIN(max_supp_nss, GET_VDEV_NSS_CHAIN(
+						nss_chains_ini_cfg->
+							num_rx_chains[band],
+						P2P_CLI_CHAINS_SHIFT));
+	vdev_nss->p2p_dev = QDF_MIN(max_supp_nss, GET_VDEV_NSS_CHAIN(
+						nss_chains_ini_cfg->
+							num_rx_chains[band],
+						P2P_DEV_NSS_CHAINS_SHIFT));
+	vdev_nss->ibss = QDF_MIN(max_supp_nss, GET_VDEV_NSS_CHAIN(
+						nss_chains_ini_cfg->
+							num_rx_chains[band],
+						IBSS_NSS_CHAINS_SHIFT));
+	vdev_nss->tdls = QDF_MIN(max_supp_nss, GET_VDEV_NSS_CHAIN(
+						nss_chains_ini_cfg->
+							num_rx_chains[band],
+						TDLS_NSS_CHAINS_SHIFT));
+	vdev_nss->ocb = QDF_MIN(max_supp_nss, GET_VDEV_NSS_CHAIN(
+						nss_chains_ini_cfg->
+							num_rx_chains[band],
+						OCB_NSS_CHAINS_SHIFT));
 
 	sme_debug("band %d NSS:sta %d sap %d cli %d go %d dev %d ibss %d tdls %d ocb %d",
 		band, vdev_nss->sta, vdev_nss->sap, vdev_nss->p2p_cli,