Bladeren bron

qcacmn: INI param to configure Rx S/W desc count

Rx s/w descriptor count should be configurable from
dp_rx_sw_desc_num INI

Change-Id: Id4bbe261b985219dad8d129679ab85e2dd1ba084
Mainak Sen 5 jaren geleden
bovenliggende
commit
eeaa5b7471
4 gewijzigde bestanden met toevoegingen van 42 en 8 verwijderingen
  1. 7 8
      dp/wifi3.0/dp_rx.c
  2. 17 0
      wlan_cfg/cfg_dp.h
  3. 8 0
      wlan_cfg/wlan_cfg.c
  4. 10 0
      wlan_cfg/wlan_cfg.h

+ 7 - 8
dp/wifi3.0/dp_rx.c

@@ -2901,7 +2901,7 @@ dp_rx_pdev_desc_pool_alloc(struct dp_pdev *pdev)
 {
 	struct dp_soc *soc = pdev->soc;
 	uint32_t rxdma_entries;
-	uint32_t rx_sw_desc_weight;
+	uint32_t rx_sw_desc_num;
 	struct dp_srng *dp_rxdma_srng;
 	struct rx_desc_pool *rx_desc_pool;
 	uint32_t status = QDF_STATUS_SUCCESS;
@@ -2918,10 +2918,10 @@ dp_rx_pdev_desc_pool_alloc(struct dp_pdev *pdev)
 	rxdma_entries = dp_rxdma_srng->num_entries;
 
 	rx_desc_pool = &soc->rx_desc_buf[mac_for_pdev];
-	rx_sw_desc_weight = wlan_cfg_get_dp_soc_rx_sw_desc_weight(soc->wlan_cfg_ctx);
+	rx_sw_desc_num = wlan_cfg_get_dp_soc_rx_sw_desc_num(soc->wlan_cfg_ctx);
 
 	status = dp_rx_desc_pool_alloc(soc,
-				       rx_sw_desc_weight * rxdma_entries,
+				       rx_sw_desc_num,
 				       rx_desc_pool);
 	if (status != QDF_STATUS_SUCCESS)
 		return status;
@@ -2958,7 +2958,7 @@ QDF_STATUS dp_rx_pdev_desc_pool_init(struct dp_pdev *pdev)
 	int mac_for_pdev = pdev->lmac_id;
 	struct dp_soc *soc = pdev->soc;
 	uint32_t rxdma_entries;
-	uint32_t rx_sw_desc_weight;
+	uint32_t rx_sw_desc_num;
 	struct dp_srng *dp_rxdma_srng;
 	struct rx_desc_pool *rx_desc_pool;
 
@@ -2977,16 +2977,15 @@ QDF_STATUS dp_rx_pdev_desc_pool_init(struct dp_pdev *pdev)
 
 	soc->process_rx_status = CONFIG_PROCESS_RX_STATUS;
 
-	rx_sw_desc_weight =
-	wlan_cfg_get_dp_soc_rx_sw_desc_weight(soc->wlan_cfg_ctx);
+	rx_sw_desc_num =
+	wlan_cfg_get_dp_soc_rx_sw_desc_num(soc->wlan_cfg_ctx);
 
 	rx_desc_pool->owner = DP_WBM2SW_RBM;
 	rx_desc_pool->buf_size = RX_DATA_BUFFER_SIZE;
 	rx_desc_pool->buf_alignment = RX_DATA_BUFFER_ALIGNMENT;
 
 	dp_rx_desc_pool_init(soc, mac_for_pdev,
-			     rx_sw_desc_weight * rxdma_entries,
-			     rx_desc_pool);
+			     rx_sw_desc_num, rx_desc_pool);
 	return QDF_STATUS_SUCCESS;
 }
 

+ 17 - 0
wlan_cfg/cfg_dp.h

@@ -311,6 +311,9 @@
 #define WLAN_CFG_RX_SW_DESC_WEIGHT_SIZE 1
 #define WLAN_CFG_RX_SW_DESC_WEIGHT_SIZE_MIN 1
 #define WLAN_CFG_RX_SW_DESC_WEIGHT_SIZE_MAX 1
+#define WLAN_CFG_RX_SW_DESC_NUM_SIZE 4096
+#define WLAN_CFG_RX_SW_DESC_NUM_SIZE_MIN 4096
+#define WLAN_CFG_RX_SW_DESC_NUM_SIZE_MAX 4096
 
 /**
  * For low memory AP cases using 1 will reduce the rx descriptors memory req
@@ -319,6 +322,9 @@
 #define WLAN_CFG_RX_SW_DESC_WEIGHT_SIZE 1
 #define WLAN_CFG_RX_SW_DESC_WEIGHT_SIZE_MIN 1
 #define WLAN_CFG_RX_SW_DESC_WEIGHT_SIZE_MAX 3
+#define WLAN_CFG_RX_SW_DESC_NUM_SIZE 4096
+#define WLAN_CFG_RX_SW_DESC_NUM_SIZE_MIN 1024
+#define WLAN_CFG_RX_SW_DESC_NUM_SIZE_MAX 12288
 
 /**
  * AP use cases need to allocate more RX Descriptors than the number of
@@ -331,6 +337,9 @@
 #define WLAN_CFG_RX_SW_DESC_WEIGHT_SIZE 3
 #define WLAN_CFG_RX_SW_DESC_WEIGHT_SIZE_MIN 1
 #define WLAN_CFG_RX_SW_DESC_WEIGHT_SIZE_MAX 3
+#define WLAN_CFG_RX_SW_DESC_NUM_SIZE 12288
+#define WLAN_CFG_RX_SW_DESC_NUM_SIZE_MIN 4096
+#define WLAN_CFG_RX_SW_DESC_NUM_SIZE_MAX 12288
 #endif //QCA_HOST2FW_RXBUF_RING
 
 #define WLAN_CFG_RX_FLOW_SEARCH_TABLE_SIZE 16384
@@ -804,6 +813,13 @@
 		WLAN_CFG_RX_SW_DESC_WEIGHT_SIZE, \
 		CFG_VALUE_OR_DEFAULT, "DP RX SW DESC weight")
 
+#define CFG_DP_RX_SW_DESC_NUM \
+		CFG_INI_UINT("dp_rx_sw_desc_num", \
+		WLAN_CFG_RX_SW_DESC_NUM_SIZE_MIN, \
+		WLAN_CFG_RX_SW_DESC_NUM_SIZE_MAX, \
+		WLAN_CFG_RX_SW_DESC_NUM_SIZE, \
+		CFG_VALUE_OR_DEFAULT, "DP RX SW DESC num")
+
 #define CFG_DP_RX_FLOW_SEARCH_TABLE_SIZE \
 	CFG_INI_UINT("dp_rx_flow_search_table_size", \
 		WLAN_CFG_RX_FLOW_SEARCH_TABLE_SIZE_MIN, \
@@ -946,6 +962,7 @@
 		CFG(CFG_DP_AP_STA_SECURITY_SEPERATION) \
 		CFG(CFG_DP_ENABLE_DATA_STALL_DETECTION) \
 		CFG(CFG_DP_RX_SW_DESC_WEIGHT) \
+		CFG(CFG_DP_RX_SW_DESC_NUM) \
 		CFG(CFG_DP_RX_FLOW_SEARCH_TABLE_SIZE) \
 		CFG(CFG_DP_RX_FLOW_TAG_ENABLE) \
 		CFG(CFG_DP_RX_FLOW_SEARCH_TABLE_PER_PDEV) \

+ 8 - 0
wlan_cfg/wlan_cfg.c

@@ -593,6 +593,8 @@ wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc)
 		cfg_get(psoc, CFG_DP_AP_STA_SECURITY_SEPERATION);
 	wlan_cfg_ctx->rx_sw_desc_weight = cfg_get(psoc,
 						   CFG_DP_RX_SW_DESC_WEIGHT);
+	wlan_cfg_ctx->rx_sw_desc_num = cfg_get(psoc,
+						   CFG_DP_RX_SW_DESC_NUM);
 	wlan_cfg_ctx->rx_toeplitz_hash_key = (uint8_t *)rx_fst_toeplitz_key;
 	wlan_cfg_ctx->rx_flow_max_search = WLAN_CFG_RX_FST_MAX_SEARCH;
 	wlan_cfg_ctx->is_rx_flow_tag_enabled =
@@ -1229,6 +1231,12 @@ wlan_cfg_get_dp_soc_rx_sw_desc_weight(struct wlan_cfg_dp_soc_ctxt *cfg)
 	return cfg->rx_sw_desc_weight;
 }
 
+int
+wlan_cfg_get_dp_soc_rx_sw_desc_num(struct wlan_cfg_dp_soc_ctxt *cfg)
+{
+	return cfg->rx_sw_desc_num;
+}
+
 uint32_t
 wlan_cfg_get_reo_rings_mapping(struct wlan_cfg_dp_soc_ctxt *cfg)
 {

+ 10 - 0
wlan_cfg/wlan_cfg.h

@@ -278,6 +278,7 @@ struct wlan_cfg_dp_soc_ctxt {
 	bool tx_comp_enable_eol_data_check;
 #endif /* WLAN_FEATURE_RX_SOFTIRQ_TIME_LIMIT */
 	int rx_sw_desc_weight;
+	int rx_sw_desc_num;
 	bool is_rx_mon_protocol_flow_tag_enabled;
 	bool is_rx_flow_tag_enabled;
 	bool is_rx_flow_search_table_per_pdev;
@@ -1183,6 +1184,15 @@ wlan_cfg_get_dp_soc_rxdma_err_dst_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
 int
 wlan_cfg_get_dp_soc_rx_sw_desc_weight(struct wlan_cfg_dp_soc_ctxt *cfg);
 
+/*
+ * wlan_cfg_get_dp_soc_rx_sw_desc_num - Get rx sw desc num
+ * @wlan_cfg_soc_ctx
+ *
+ * Return: rx_sw_desc_num
+ */
+int
+wlan_cfg_get_dp_soc_rx_sw_desc_num(struct wlan_cfg_dp_soc_ctxt *cfg);
+
 /*
  * wlan_cfg_get_dp_caps - Get dp capablities
  * @wlan_cfg_soc_ctx