DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] net/bnxt: refactor HWRM rings allocation routine
@ 2021-02-19  9:28 Somnath Kotur
  0 siblings, 0 replies; only message in thread
From: Somnath Kotur @ 2021-02-19  9:28 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, Somnath Kotur

bnxt_alloc_hwrm_rings() was duplicating a snippet of code that was
already present in bnxt_alloc_hwrm_rx_ring() with just one line/function
invocation missing. Add that line and replace the snippet of code
with a call to bnxt_hwrm_alloc_rx_ring

Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
---
 drivers/net/bnxt/bnxt_ring.c | 59 ++++--------------------------------
 1 file changed, 6 insertions(+), 53 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c
index ba23c1fa03..997dcdc28b 100644
--- a/drivers/net/bnxt/bnxt_ring.c
+++ b/drivers/net/bnxt/bnxt_ring.c
@@ -581,6 +581,7 @@ int bnxt_alloc_hwrm_rx_ring(struct bnxt *bp, int queue_index)
 	struct bnxt_cp_ring_info *cpr = rxq->cp_ring;
 	struct bnxt_ring *cp_ring = cpr->cp_ring_struct;
 	struct bnxt_rx_ring_info *rxr = rxq->rx_ring;
+	struct bnxt_coal coal;
 	int rc;
 
 	/*
@@ -603,6 +604,9 @@ int bnxt_alloc_hwrm_rx_ring(struct bnxt *bp, int queue_index)
 		bp->grp_info[queue_index].cp_fw_ring_id = cp_ring->fw_ring_id;
 	}
 
+	bnxt_init_dflt_coal(&coal);
+	bnxt_hwrm_set_ring_coal(bp, &coal, cp_ring->fw_ring_id);
+
 	if (!BNXT_NUM_ASYNC_CPR(bp) && !queue_index) {
 		/*
 		 * If a dedicated async event completion ring is not enabled,
@@ -699,60 +703,9 @@ int bnxt_alloc_hwrm_rings(struct bnxt *bp)
 	bnxt_init_all_rings(bp);
 
 	for (i = 0; i < bp->rx_cp_nr_rings; i++) {
-		struct bnxt_rx_queue *rxq = bp->rx_queues[i];
-		struct bnxt_cp_ring_info *cpr = rxq->cp_ring;
-		struct bnxt_ring *cp_ring = cpr->cp_ring_struct;
-		struct bnxt_rx_ring_info *rxr = rxq->rx_ring;
-
-		/*
-		 * Storage for the cp ring is allocated based on worst-case
-		 * usage, the actual size to be used by hw is computed here.
-		 */
-		cp_ring->ring_size = rxr->rx_ring_struct->ring_size * 2;
-
-		if (bp->eth_dev->data->scattered_rx)
-			cp_ring->ring_size *= AGG_RING_SIZE_FACTOR;
-
-		cp_ring->ring_mask = cp_ring->ring_size - 1;
-
-		if (bnxt_alloc_cmpl_ring(bp, i, cpr))
-			goto err_out;
-
-		if (BNXT_HAS_RING_GRPS(bp)) {
-			bp->grp_info[i].fw_stats_ctx = cpr->hw_stats_ctx_id;
-			bp->grp_info[i].cp_fw_ring_id = cp_ring->fw_ring_id;
-		}
-
-		bnxt_hwrm_set_ring_coal(bp, &coal, cp_ring->fw_ring_id);
-		if (!BNXT_NUM_ASYNC_CPR(bp) && !i) {
-			/*
-			 * If a dedicated async event completion ring is not
-			 * enabled, use the first completion ring as the default
-			 * completion ring for async event handling.
-			 */
-			bp->async_cp_ring = cpr;
-			rc = bnxt_hwrm_set_async_event_cr(bp);
-			if (rc)
-				goto err_out;
-		}
-
-		if (bnxt_alloc_rx_ring(bp, i))
-			goto err_out;
-
-		if (bnxt_alloc_rx_agg_ring(bp, i))
+		rc = bnxt_alloc_hwrm_rx_ring(bp, i);
+		if (rc)
 			goto err_out;
-
-		if (bnxt_init_one_rx_ring(rxq)) {
-			PMD_DRV_LOG(ERR, "bnxt_init_one_rx_ring failed!\n");
-			bnxt_rx_queue_release_op(rxq);
-			return -ENOMEM;
-		}
-		bnxt_db_write(&rxr->rx_db, rxr->rx_raw_prod);
-		bnxt_db_write(&rxr->ag_db, rxr->ag_raw_prod);
-		rxq->index = i;
-#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64)
-		bnxt_rxq_vec_setup(rxq);
-#endif
 	}
 
 	for (i = 0; i < bp->tx_cp_nr_rings; i++) {
-- 
2.28.0.497.g54e85e7


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-02-19  9:28 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-19  9:28 [dpdk-dev] [PATCH] net/bnxt: refactor HWRM rings allocation routine Somnath Kotur

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ http://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git