diff --git a/dp/wifi3.0/dp_rx.c b/dp/wifi3.0/dp_rx.c index cd15fea0bf..17353dd803 100644 --- a/dp/wifi3.0/dp_rx.c +++ b/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; } diff --git a/wlan_cfg/cfg_dp.h b/wlan_cfg/cfg_dp.h index f1b90921e6..159cc85105 100644 --- a/wlan_cfg/cfg_dp.h +++ b/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) \ diff --git a/wlan_cfg/wlan_cfg.c b/wlan_cfg/wlan_cfg.c index 811d430623..b691f31db3 100644 --- a/wlan_cfg/wlan_cfg.c +++ b/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) { diff --git a/wlan_cfg/wlan_cfg.h b/wlan_cfg/wlan_cfg.h index 749cecd5b7..5eef7640de 100644 --- a/wlan_cfg/wlan_cfg.h +++ b/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