Browse Source

qcacmn: Add provision to set desc to higher value

Add support to change the tx_desc value to 65536. Some changes
to make the function argument as u32 type us made

Change-Id: I7cbde1b7ed4ab4e278c25c1ecfa94b7f673197f2
CRs-Fixed: 3130833
Nandha Kishore Easwaran 3 years ago
parent
commit
cf10304673

+ 1 - 1
dp/wifi3.0/be/dp_be_tx.c

@@ -847,7 +847,7 @@ void dp_tx_update_bank_profile(struct dp_soc_be *be_soc,
 }
 
 QDF_STATUS dp_tx_desc_pool_init_be(struct dp_soc *soc,
-				   uint16_t num_elem,
+				   uint32_t num_elem,
 				   uint8_t pool_id)
 {
 	struct dp_tx_desc_pool_s *tx_desc_pool;

+ 1 - 1
dp/wifi3.0/be/dp_be_tx.h

@@ -142,7 +142,7 @@ void dp_tx_update_bank_profile(struct dp_soc_be *be_soc,
  * Return: QDF_STATUS_SUCCESS - success, others - failure
  */
 QDF_STATUS dp_tx_desc_pool_init_be(struct dp_soc *soc,
-				   uint16_t num_elem,
+				   uint32_t num_elem,
 				   uint8_t pool_id);
 /**
  * dp_tx_desc_pool_deinit_be() - De-initialize Tx Descriptor pool(s)

+ 2 - 2
dp/wifi3.0/dp_internal.h

@@ -3224,7 +3224,7 @@ void dp_desc_multi_pages_mem_alloc(struct dp_soc *soc,
 				   enum dp_desc_type desc_type,
 				   struct qdf_mem_multi_page_t *pages,
 				   size_t element_size,
-				   uint16_t element_num,
+				   uint32_t element_num,
 				   qdf_dma_context_t memctxt,
 				   bool cacheable);
 
@@ -3268,7 +3268,7 @@ void dp_desc_multi_pages_mem_alloc(struct dp_soc *soc,
 				   enum dp_desc_type desc_type,
 				   struct qdf_mem_multi_page_t *pages,
 				   size_t element_size,
-				   uint16_t element_num,
+				   uint32_t element_num,
 				   qdf_dma_context_t memctxt,
 				   bool cacheable)
 {

+ 1 - 1
dp/wifi3.0/dp_main.c

@@ -2024,7 +2024,7 @@ void dp_desc_multi_pages_mem_alloc(struct dp_soc *soc,
 				   enum dp_desc_type desc_type,
 				   struct qdf_mem_multi_page_t *pages,
 				   size_t element_size,
-				   uint16_t element_num,
+				   uint32_t element_num,
 				   qdf_dma_context_t memctxt,
 				   bool cacheable)
 {

+ 5 - 5
dp/wifi3.0/dp_tx.c

@@ -5440,7 +5440,7 @@ static QDF_STATUS dp_tx_alloc_static_pools(struct dp_soc *soc, int num_pool,
 }
 
 static QDF_STATUS dp_tx_init_static_pools(struct dp_soc *soc, int num_pool,
-					  int num_desc)
+					  uint32_t num_desc)
 {
 	return QDF_STATUS_SUCCESS;
 }
@@ -5458,7 +5458,7 @@ static void dp_tx_delete_static_pools(struct dp_soc *soc, int num_pool)
 }
 #else /* QCA_LL_TX_FLOW_CONTROL_V2! */
 static QDF_STATUS dp_tx_alloc_static_pools(struct dp_soc *soc, int num_pool,
-					   int num_desc)
+					   uint32_t num_desc)
 {
 	uint8_t i, count;
 
@@ -5481,7 +5481,7 @@ fail:
 }
 
 static QDF_STATUS dp_tx_init_static_pools(struct dp_soc *soc, int num_pool,
-					  int num_desc)
+					  uint32_t num_desc)
 {
 	uint8_t i;
 	for (i = 0; i < num_pool; i++) {
@@ -5591,7 +5591,7 @@ void dp_soc_tx_desc_sw_pools_deinit(struct dp_soc *soc)
  */
 QDF_STATUS dp_tx_tso_cmn_desc_pool_alloc(struct dp_soc *soc,
 					 uint8_t num_pool,
-					 uint16_t num_desc)
+					 uint32_t num_desc)
 {
 	if (dp_tx_tso_desc_pool_alloc(soc, num_pool, num_desc)) {
 		dp_err("TSO Desc Pool alloc %d failed %pK", num_pool, soc);
@@ -5620,7 +5620,7 @@ QDF_STATUS dp_tx_tso_cmn_desc_pool_alloc(struct dp_soc *soc,
 
 QDF_STATUS dp_tx_tso_cmn_desc_pool_init(struct dp_soc *soc,
 					uint8_t num_pool,
-					uint16_t num_desc)
+					uint32_t num_desc)
 {
 	if (dp_tx_tso_desc_pool_init(soc, num_pool, num_desc)) {
 		dp_err("TSO Desc Pool alloc %d failed %pK", num_pool, soc);

+ 2 - 9
dp/wifi3.0/dp_tx.h

@@ -236,21 +236,14 @@ void dp_tx_deinit_pair_by_index(struct dp_soc *soc, int index);
 
 void dp_tx_tso_cmn_desc_pool_deinit(struct dp_soc *soc, uint8_t num_pool);
 void dp_tx_tso_cmn_desc_pool_free(struct dp_soc *soc, uint8_t num_pool);
-QDF_STATUS dp_tx_tso_cmn_desc_pool_alloc(struct dp_soc *soc,
-					 uint8_t num_pool,
-					 uint16_t num_desc);
-QDF_STATUS dp_tx_tso_cmn_desc_pool_init(struct dp_soc *soc,
-					uint8_t num_pool,
-					uint16_t num_desc);
-
 void dp_tx_tso_cmn_desc_pool_deinit(struct dp_soc *soc, uint8_t num_pool);
 void dp_tx_tso_cmn_desc_pool_free(struct dp_soc *soc, uint8_t num_pool);
 QDF_STATUS dp_tx_tso_cmn_desc_pool_alloc(struct dp_soc *soc,
 					 uint8_t num_pool,
-					 uint16_t num_desc);
+					 uint32_t num_desc);
 QDF_STATUS dp_tx_tso_cmn_desc_pool_init(struct dp_soc *soc,
 					uint8_t num_pool,
-					uint16_t num_desc);
+					uint32_t num_desc);
 void dp_tx_comp_free_buf(struct dp_soc *soc, struct dp_tx_desc_s *desc);
 void dp_tx_desc_release(struct dp_tx_desc_s *tx_desc, uint8_t desc_pool_id);
 void dp_tx_compute_delay(struct dp_vdev *vdev, struct dp_tx_desc_s *tx_desc,

+ 13 - 12
dp/wifi3.0/dp_tx_desc.c

@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -91,7 +92,7 @@ dp_tx_desc_pool_counter_initialize(struct dp_tx_desc_pool_s *tx_desc_pool,
  * Return: Status code. 0 for success.
  */
 QDF_STATUS dp_tx_desc_pool_alloc(struct dp_soc *soc, uint8_t pool_id,
-				 uint16_t num_elem)
+				 uint32_t num_elem)
 {
 	uint32_t desc_size;
 	struct dp_tx_desc_pool_s *tx_desc_pool;
@@ -138,7 +139,7 @@ void dp_tx_desc_pool_free(struct dp_soc *soc, uint8_t pool_id)
  *	   QDF_STATUS_E_FAULT
  */
 QDF_STATUS dp_tx_desc_pool_init(struct dp_soc *soc, uint8_t pool_id,
-				uint16_t num_elem)
+				uint32_t num_elem)
 {
 	struct dp_tx_desc_pool_s *tx_desc_pool;
 	uint32_t desc_size;
@@ -196,7 +197,7 @@ void dp_tx_desc_pool_deinit(struct dp_soc *soc, uint8_t pool_id)
  *	    QDF_STATUS_E_NOMEM
  */
 QDF_STATUS dp_tx_ext_desc_pool_alloc(struct dp_soc *soc, uint8_t num_pool,
-				     uint16_t num_elem)
+				     uint32_t num_elem)
 {
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
 	qdf_dma_context_t memctx = 0;
@@ -285,7 +286,7 @@ fail_exit:
  *	    QDF_STATUS_E_NOMEM
  */
 QDF_STATUS dp_tx_ext_desc_pool_init(struct dp_soc *soc, uint8_t num_pool,
-				    uint16_t num_elem)
+				    uint32_t num_elem)
 {
 	uint32_t i;
 	struct dp_tx_ext_desc_elem_s *c_elem, *p_elem;
@@ -418,7 +419,7 @@ void dp_tx_ext_desc_pool_deinit(struct dp_soc *soc, uint8_t num_pool)
  *	    QDF_STATUS_E_NOMEM
  */
 QDF_STATUS dp_tx_tso_desc_pool_alloc(struct dp_soc *soc, uint8_t num_pool,
-				     uint16_t num_elem)
+				     uint32_t num_elem)
 {
 	struct dp_tx_tso_seg_pool_s *tso_desc_pool;
 	uint32_t desc_size, pool_id, i;
@@ -480,7 +481,7 @@ void dp_tx_tso_desc_pool_free(struct dp_soc *soc, uint8_t num_pool)
  *	    QDF_STATUS_E_NOMEM
  */
 QDF_STATUS dp_tx_tso_desc_pool_init(struct dp_soc *soc, uint8_t num_pool,
-				    uint16_t num_elem)
+				    uint32_t num_elem)
 {
 	struct dp_tx_tso_seg_pool_s *tso_desc_pool;
 	uint32_t desc_size, pool_id;
@@ -546,7 +547,7 @@ void dp_tx_tso_desc_pool_deinit(struct dp_soc *soc, uint8_t num_pool)
  *	    QDF_STATUS_E_NOMEM
  */
 QDF_STATUS dp_tx_tso_num_seg_pool_alloc(struct dp_soc *soc, uint8_t num_pool,
-					uint16_t num_elem)
+					uint32_t num_elem)
 {
 	struct dp_tx_tso_num_seg_pool_s *tso_num_seg_pool;
 	uint32_t desc_size, pool_id, i;
@@ -610,7 +611,7 @@ void dp_tx_tso_num_seg_pool_free(struct dp_soc *soc, uint8_t num_pool)
  *	    QDF_STATUS_E_FAULT
  */
 QDF_STATUS dp_tx_tso_num_seg_pool_init(struct dp_soc *soc, uint8_t num_pool,
-				       uint16_t num_elem)
+				       uint32_t num_elem)
 {
 	struct dp_tx_tso_num_seg_pool_s *tso_num_seg_pool;
 	uint32_t desc_size, pool_id;
@@ -666,13 +667,13 @@ void dp_tx_tso_num_seg_pool_deinit(struct dp_soc *soc, uint8_t num_pool)
 }
 #else
 QDF_STATUS dp_tx_tso_desc_pool_alloc(struct dp_soc *soc, uint8_t num_pool,
-				     uint16_t num_elem)
+				     uint32_t num_elem)
 {
 	return QDF_STATUS_SUCCESS;
 }
 
 QDF_STATUS dp_tx_tso_desc_pool_init(struct dp_soc *soc, uint8_t num_pool,
-				    uint16_t num_elem)
+				    uint32_t num_elem)
 {
 	return QDF_STATUS_SUCCESS;
 }
@@ -686,7 +687,7 @@ void dp_tx_tso_desc_pool_deinit(struct dp_soc *soc, uint8_t num_pool)
 }
 
 QDF_STATUS dp_tx_tso_num_seg_pool_alloc(struct dp_soc *soc, uint8_t num_pool,
-					uint16_t num_elem)
+					uint32_t num_elem)
 {
 	return QDF_STATUS_SUCCESS;
 }
@@ -696,7 +697,7 @@ void dp_tx_tso_num_seg_pool_free(struct dp_soc *soc, uint8_t num_pool)
 }
 
 QDF_STATUS dp_tx_tso_num_seg_pool_init(struct dp_soc *soc, uint8_t num_pool,
-				       uint16_t num_elem)
+				       uint32_t num_elem)
 {
 	return QDF_STATUS_SUCCESS;
 }

+ 11 - 11
dp/wifi3.0/dp_tx_desc.h

@@ -107,30 +107,30 @@ static inline void dp_tx_desc_set_magic(struct dp_tx_desc_s *tx_desc,
 #endif
 
 QDF_STATUS dp_tx_desc_pool_alloc(struct dp_soc *soc, uint8_t pool_id,
-				 uint16_t num_elem);
+				 uint32_t num_elem);
 QDF_STATUS dp_tx_desc_pool_init(struct dp_soc *soc, uint8_t pool_id,
-				uint16_t num_elem);
+				uint32_t num_elem);
 void dp_tx_desc_pool_free(struct dp_soc *soc, uint8_t pool_id);
 void dp_tx_desc_pool_deinit(struct dp_soc *soc, uint8_t pool_id);
 
 QDF_STATUS dp_tx_ext_desc_pool_alloc(struct dp_soc *soc, uint8_t pool_id,
-				     uint16_t num_elem);
+				     uint32_t num_elem);
 QDF_STATUS dp_tx_ext_desc_pool_init(struct dp_soc *soc, uint8_t pool_id,
-				    uint16_t num_elem);
+				    uint32_t num_elem);
 void dp_tx_ext_desc_pool_free(struct dp_soc *soc, uint8_t pool_id);
 void dp_tx_ext_desc_pool_deinit(struct dp_soc *soc, uint8_t pool_id);
 
 QDF_STATUS dp_tx_tso_desc_pool_alloc(struct dp_soc *soc, uint8_t pool_id,
-				     uint16_t num_elem);
+				     uint32_t num_elem);
 QDF_STATUS dp_tx_tso_desc_pool_init(struct dp_soc *soc, uint8_t pool_id,
-				    uint16_t num_elem);
+				    uint32_t num_elem);
 void dp_tx_tso_desc_pool_free(struct dp_soc *soc, uint8_t pool_id);
 void dp_tx_tso_desc_pool_deinit(struct dp_soc *soc, uint8_t pool_id);
 
 QDF_STATUS dp_tx_tso_num_seg_pool_alloc(struct dp_soc *soc, uint8_t pool_id,
-		uint16_t num_elem);
+		uint32_t num_elem);
 QDF_STATUS dp_tx_tso_num_seg_pool_init(struct dp_soc *soc, uint8_t pool_id,
-				       uint16_t num_elem);
+				       uint32_t num_elem);
 void dp_tx_tso_num_seg_pool_free(struct dp_soc *soc, uint8_t pool_id);
 void dp_tx_tso_num_seg_pool_deinit(struct dp_soc *soc, uint8_t pool_id);
 
@@ -146,10 +146,10 @@ void dp_tx_flow_pool_unmap(struct cdp_soc_t *handle, uint8_t pdev_id,
 			   uint8_t vdev_id);
 void dp_tx_clear_flow_pool_stats(struct dp_soc *soc);
 struct dp_tx_desc_pool_s *dp_tx_create_flow_pool(struct dp_soc *soc,
-	uint8_t flow_pool_id, uint16_t flow_pool_size);
+	uint8_t flow_pool_id, uint32_t flow_pool_size);
 
 QDF_STATUS dp_tx_flow_pool_map_handler(struct dp_pdev *pdev, uint8_t flow_id,
-	uint8_t flow_type, uint8_t flow_pool_id, uint16_t flow_pool_size);
+	uint8_t flow_type, uint8_t flow_pool_id, uint32_t flow_pool_size);
 void dp_tx_flow_pool_unmap_handler(struct dp_pdev *pdev, uint8_t flow_id,
 	uint8_t flow_type, uint8_t flow_pool_id);
 
@@ -647,7 +647,7 @@ static inline void dp_tx_flow_control_deinit(struct dp_soc *handle)
 
 static inline QDF_STATUS dp_tx_flow_pool_map_handler(struct dp_pdev *pdev,
 	uint8_t flow_id, uint8_t flow_type, uint8_t flow_pool_id,
-	uint16_t flow_pool_size)
+	uint32_t flow_pool_size)
 {
 	return QDF_STATUS_SUCCESS;
 }

+ 2 - 2
dp/wifi3.0/dp_tx_flow_control.c

@@ -327,7 +327,7 @@ void dp_tx_clear_flow_pool_stats(struct dp_soc *soc)
  * Return: flow_pool pointer / NULL for error
  */
 struct dp_tx_desc_pool_s *dp_tx_create_flow_pool(struct dp_soc *soc,
-	uint8_t flow_pool_id, uint16_t flow_pool_size)
+	uint8_t flow_pool_id, uint32_t flow_pool_size)
 {
 	struct dp_tx_desc_pool_s *pool;
 	uint32_t stop_threshold;
@@ -512,7 +512,7 @@ static void dp_tx_flow_pool_vdev_unmap(struct dp_pdev *pdev,
  * Return: none
  */
 QDF_STATUS dp_tx_flow_pool_map_handler(struct dp_pdev *pdev, uint8_t flow_id,
-	uint8_t flow_type, uint8_t flow_pool_id, uint16_t flow_pool_size)
+	uint8_t flow_type, uint8_t flow_pool_id, uint32_t flow_pool_size)
 {
 	struct dp_soc *soc = pdev->soc;
 	struct dp_tx_desc_pool_s *pool;

+ 1 - 1
dp/wifi3.0/dp_types.h

@@ -1711,7 +1711,7 @@ struct dp_arch_ops {
 				  uint8_t reo_ring_num, uint32_t quota);
 
 	QDF_STATUS (*dp_tx_desc_pool_init)(struct dp_soc *soc,
-					   uint16_t num_elem,
+					   uint32_t num_elem,
 					   uint8_t pool_id);
 	void (*dp_tx_desc_pool_deinit)(
 				struct dp_soc *soc,

+ 1 - 1
dp/wifi3.0/li/dp_li_tx.c

@@ -521,7 +521,7 @@ ring_access_fail:
 }
 
 QDF_STATUS dp_tx_desc_pool_init_li(struct dp_soc *soc,
-				   uint16_t num_elem,
+				   uint32_t num_elem,
 				   uint8_t pool_id)
 {
 	uint32_t id, count, page_id, offset, pool_id_32;

+ 2 - 2
dp/wifi3.0/li/dp_li_tx.h

@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
- * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -79,7 +79,7 @@ void dp_tx_process_htt_completion_li(struct dp_soc *soc,
  * Return: QDF_STATUS_SUCCESS - success, others - failure
  */
 QDF_STATUS dp_tx_desc_pool_init_li(struct dp_soc *soc,
-				   uint16_t num_elem,
+				   uint32_t num_elem,
 				   uint8_t pool_id);
 
 /**

+ 1 - 1
wlan_cfg/cfg_dp.h

@@ -166,7 +166,7 @@
 #define WLAN_CFG_TX_COMP_RING_SIZE_MAX 0x80000
 
 #define WLAN_CFG_NUM_TX_DESC_MIN  16
-#define WLAN_CFG_NUM_TX_DESC_MAX  32768
+#define WLAN_CFG_NUM_TX_DESC_MAX  0x10000
 
 #define WLAN_CFG_NUM_TX_EXT_DESC_MIN  16
 #define WLAN_CFG_NUM_TX_EXT_DESC_MAX  0x80000