bnxt_en: Add macros related to TC and TX rings
authorMichael Chan <michael.chan@broadcom.com>
Tue, 14 Nov 2023 00:16:19 +0000 (16:16 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 15 Nov 2023 10:07:40 +0000 (10:07 +0000)
Add 3 macros that handle to conversions between TC numbers and TX
ring numbers.  These will help to clarify the existing logic and the
new logic in the next patch.

Reviewed-by: Andy Gospodarek <andrew.gospodarek@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index 7c1a3db651f5847ad45aae360c455b7739e1e7dc..d0eca7648927bffa01a67364e7b991171b786e96 100644 (file)
@@ -3415,6 +3415,15 @@ static void bnxt_free_tx_rings(struct bnxt *bp)
        }
 }
 
+#define BNXT_TC_TO_RING_BASE(bp, tc)   \
+       ((tc) * (bp)->tx_nr_rings_per_tc)
+
+#define BNXT_RING_TO_TC_OFF(bp, tx)    \
+       ((tx) % (bp)->tx_nr_rings_per_tc)
+
+#define BNXT_RING_TO_TC(bp, tx)                \
+       ((tx) / (bp)->tx_nr_rings_per_tc)
+
 static int bnxt_alloc_tx_rings(struct bnxt *bp)
 {
        int i, j, rc;
@@ -3470,7 +3479,7 @@ static int bnxt_alloc_tx_rings(struct bnxt *bp)
                spin_lock_init(&txr->xdp_tx_lock);
                if (i < bp->tx_nr_rings_xdp)
                        continue;
-               if (i % bp->tx_nr_rings_per_tc == (bp->tx_nr_rings_per_tc - 1))
+               if (BNXT_RING_TO_TC_OFF(bp, i) == (bp->tx_nr_rings_per_tc - 1))
                        j++;
        }
        return 0;
@@ -9140,7 +9149,7 @@ static void bnxt_setup_msix(struct bnxt *bp)
 
                for (i = 0; i < tcs; i++) {
                        count = bp->tx_nr_rings_per_tc;
-                       off = i * count;
+                       off = BNXT_TC_TO_RING_BASE(bp, i);
                        netdev_set_tc_queue(dev, i, count, off);
                }
        }