bnxt_en: Refactor completion ring free routine
authorSomnath Kotur <somnath.kotur@broadcom.com>
Thu, 13 Feb 2025 01:12:32 +0000 (17:12 -0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 15 Feb 2025 03:50:22 +0000 (19:50 -0800)
Add a wrapper routine to free L2 completion rings.  This will be
useful later in the series.

Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Link: https://patch.msgid.link/20250213011240.1640031-5-michael.chan@broadcom.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index 8ab7345acb0acc96d0335abcd1b5cd53f57ca019..52d4dc22275925a60ea102da197b755d4ee87289 100644 (file)
@@ -7405,6 +7405,20 @@ static void bnxt_hwrm_rx_agg_ring_free(struct bnxt *bp,
        bp->grp_info[grp_idx].agg_fw_ring_id = INVALID_HW_RING_ID;
 }
 
+static void bnxt_hwrm_cp_ring_free(struct bnxt *bp,
+                                  struct bnxt_cp_ring_info *cpr)
+{
+       struct bnxt_ring_struct *ring;
+
+       ring = &cpr->cp_ring_struct;
+       if (ring->fw_ring_id == INVALID_HW_RING_ID)
+               return;
+
+       hwrm_ring_free_send_msg(bp, ring, RING_FREE_REQ_RING_TYPE_L2_CMPL,
+                               INVALID_HW_RING_ID);
+       ring->fw_ring_id = INVALID_HW_RING_ID;
+}
+
 static void bnxt_hwrm_ring_free(struct bnxt *bp, bool close_path)
 {
        u32 type;
@@ -7450,17 +7464,9 @@ static void bnxt_hwrm_ring_free(struct bnxt *bp, bool close_path)
                struct bnxt_ring_struct *ring;
                int j;
 
-               for (j = 0; j < cpr->cp_ring_count && cpr->cp_ring_arr; j++) {
-                       struct bnxt_cp_ring_info *cpr2 = &cpr->cp_ring_arr[j];
+               for (j = 0; j < cpr->cp_ring_count && cpr->cp_ring_arr; j++)
+                       bnxt_hwrm_cp_ring_free(bp, &cpr->cp_ring_arr[j]);
 
-                       ring = &cpr2->cp_ring_struct;
-                       if (ring->fw_ring_id == INVALID_HW_RING_ID)
-                               continue;
-                       hwrm_ring_free_send_msg(bp, ring,
-                                               RING_FREE_REQ_RING_TYPE_L2_CMPL,
-                                               INVALID_HW_RING_ID);
-                       ring->fw_ring_id = INVALID_HW_RING_ID;
-               }
                ring = &cpr->cp_ring_struct;
                if (ring->fw_ring_id != INVALID_HW_RING_ID) {
                        hwrm_ring_free_send_msg(bp, ring, type,