Ver código fonte

qcacld-3.0: Add ini to disable abg rate for tx data

qcacld-2.0 to qcacld-3.0 propagation

Add ini config option to disable abg rate for tx data.

Change-Id: Ideb1fd6471c6fbdade99b4c7c533cb1bf3bf206c
CRs-Fixed: 1111787
Hong Shi 8 anos atrás
pai
commit
a9ef87198d

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

@@ -4985,6 +4985,27 @@ typedef enum {
 #define CFG_MAX_HT_MCS_FOR_TX_DATA_MAX      (WNI_CFG_MAX_HT_MCS_TX_DATA_STAMAX)
 #define CFG_MAX_HT_MCS_FOR_TX_DATA_DEFAULT  (WNI_CFG_MAX_HT_MCS_TX_DATA_STADEF)
 
+/*
+ * <ini>
+ * gDisableABGRateForTxData - disable abg rate for tx data
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * This ini is used to disable abg rate for tx data.
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_DISABLE_ABG_RATE_FOR_TX_DATA        "gDisableABGRateForTxData"
+#define CFG_DISABLE_ABG_RATE_FOR_TX_DATA_MIN \
+	(WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STAMIN)
+#define CFG_DISABLE_ABG_RATE_FOR_TX_DATA_MAX \
+	(WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STAMAX)
+#define CFG_DISABLE_ABG_RATE_FOR_TX_DATA_DEFAULT \
+	(WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STADEF)
+
 /*
  * <ini>
  * gTDLSTxPacketThreshold - Tx/Rx Packet threshold for initiating TDLS.
@@ -9143,6 +9164,7 @@ struct hdd_config {
 	bool gEnableOverLapCh;
 	bool fRegChangeDefCountry;
 	uint16_t max_ht_mcs_txdata;
+	bool disable_abg_rate_txdata;
 #ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
 	uint32_t TxFlowLowWaterMark;
 	uint32_t TxFlowHighWaterMarkOffset;

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

@@ -2132,6 +2132,13 @@ REG_TABLE_ENTRY g_registry_table[] = {
 		     CFG_MAX_HT_MCS_FOR_TX_DATA_MIN,
 		     CFG_MAX_HT_MCS_FOR_TX_DATA_MAX),
 
+	REG_VARIABLE(CFG_DISABLE_ABG_RATE_FOR_TX_DATA, WLAN_PARAM_Integer,
+		     struct hdd_config, disable_abg_rate_txdata,
+		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+		     CFG_DISABLE_ABG_RATE_FOR_TX_DATA_DEFAULT,
+		     CFG_DISABLE_ABG_RATE_FOR_TX_DATA_MIN,
+		     CFG_DISABLE_ABG_RATE_FOR_TX_DATA_MAX),
+
 	REG_VARIABLE(CFG_ENABLE_FIRST_SCAN_2G_ONLY_NAME, WLAN_PARAM_Integer,
 		     struct hdd_config, enableFirstScan2GOnly,
 		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -6691,6 +6698,14 @@ bool hdd_update_config_cfg(hdd_context_t *hdd_ctx)
 		status = false;
 		hdd_err("Couldn't pass on WNI_CFG_MAX_HT_MCS_TX_DATA to CCM");
 	}
+
+	if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA,
+			    config->disable_abg_rate_txdata) ==
+			    QDF_STATUS_E_FAILURE) {
+		status = false;
+		hdd_err("Couldn't pass on WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA to CCM");
+	}
+
 	return status;
 }
 #ifdef FEATURE_WLAN_SCAN_PNO

+ 5 - 0
core/mac/inc/wni_cfg.h

@@ -252,6 +252,7 @@ enum {
 	WNI_CFG_OBSS_HT40_SCAN_ACTIVITY_THRESHOLD,
 	WNI_CFG_TGT_GTX_USR_CFG,
 	WNI_CFG_MAX_HT_MCS_TX_DATA,
+	WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA,
 	/* Any new items to be added should be above this strictly */
 	CFG_PARAM_MAX_NUM
 };
@@ -1265,6 +1266,10 @@ enum {
 #define WNI_CFG_MAX_HT_MCS_TX_DATA_STAMAX  0x17f
 #define WNI_CFG_MAX_HT_MCS_TX_DATA_STADEF  0x0
 
+#define WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STAMIN  0
+#define WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STAMAX  1
+#define WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STADEF  0
+
 #define CFG_STA_MAGIC_DWORD    0xbeefbeef
 
 #endif

+ 1 - 0
core/mac/src/cfg/cfg_param_name.c

@@ -324,4 +324,5 @@ unsigned char *g_cfg_param_name[] = {
 	(unsigned char *)"OBSS_HT40_SCAN_ACTIVITY_THRESHOLD",
 	(unsigned char *)"TGT_GTX_USR_CFG",
 	(unsigned char *)"MAX_HT_MCS_TX_DATA",
+	(unsigned char *)"DISABLE_ABG_RATE_TX_DATA",
 };

+ 6 - 1
core/mac/src/cfg/cfg_proc_msg.c

@@ -1183,7 +1183,12 @@ cgstatic cfg_static[CFG_PARAM_MAX_NUM] = {
 	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
 	WNI_CFG_MAX_HT_MCS_TX_DATA_STAMIN,
 	WNI_CFG_MAX_HT_MCS_TX_DATA_STAMAX,
-	WNI_CFG_MAX_HT_MCS_TX_DATA_STADEF}
+	WNI_CFG_MAX_HT_MCS_TX_DATA_STADEF},
+	{WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA,
+	CFG_CTL_VALID | CFG_CTL_RE | CFG_CTL_WE | CFG_CTL_INT,
+	WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STAMIN,
+	WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STAMAX,
+	WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STADEF}
 };
 
 

+ 23 - 15
core/wma/src/wma_mgmt.c

@@ -887,6 +887,7 @@ QDF_STATUS wma_send_peer_assoc(tp_wma_handle wma,
 	uint32_t num_peer_11a_rates = 0;
 	uint32_t phymode;
 	uint32_t peer_nss = 1;
+	uint32_t disable_abg_rate;
 	struct wma_txrx_node *intr = NULL;
 	QDF_STATUS status;
 
@@ -917,21 +918,28 @@ QDF_STATUS wma_send_peer_assoc(tp_wma_handle wma,
 				   params->ch_width,
 				   params->vhtCapable);
 
-	/* Legacy Rateset */
-	rate_pos = (uint8_t *) peer_legacy_rates.rates;
-	for (i = 0; i < SIR_NUM_11B_RATES; i++) {
-		if (!params->supportedRates.llbRates[i])
-			continue;
-		rate_pos[peer_legacy_rates.num_rates++] =
-			params->supportedRates.llbRates[i];
-		num_peer_11b_rates++;
-	}
-	for (i = 0; i < SIR_NUM_11A_RATES; i++) {
-		if (!params->supportedRates.llaRates[i])
-			continue;
-		rate_pos[peer_legacy_rates.num_rates++] =
-			params->supportedRates.llaRates[i];
-		num_peer_11a_rates++;
+	if (wlan_cfg_get_int(wma->mac_context,
+			     WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA,
+			     &disable_abg_rate) != eSIR_SUCCESS)
+		disable_abg_rate = WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA_STADEF;
+
+	if (!disable_abg_rate) {
+		/* Legacy Rateset */
+		rate_pos = (uint8_t *) peer_legacy_rates.rates;
+		for (i = 0; i < SIR_NUM_11B_RATES; i++) {
+			if (!params->supportedRates.llbRates[i])
+				continue;
+			rate_pos[peer_legacy_rates.num_rates++] =
+				params->supportedRates.llbRates[i];
+			num_peer_11b_rates++;
+		}
+		for (i = 0; i < SIR_NUM_11A_RATES; i++) {
+			if (!params->supportedRates.llaRates[i])
+				continue;
+			rate_pos[peer_legacy_rates.num_rates++] =
+				params->supportedRates.llaRates[i];
+			num_peer_11a_rates++;
+		}
 	}
 
 	if ((phymode == MODE_11A && num_peer_11a_rates == 0) ||