Blob Blame History Raw
From: Michael Chan <michael.chan@broadcom.com>
Date: Sun, 5 May 2019 07:17:05 -0400
Subject: bnxt_en: Improve NQ reservations.
Patch-mainline: v5.2-rc1
Git-commit: 01989c6b69d91a0df0af8d5c6b5f33d82a239ae0
References: bsc#1134090 jsc#SLE-5954

bnxt_need_reserve_rings() determines if any resources have changed and
requires new reservation with firmware.  The NQ checking is currently
just an approximation.  Improve the NQ checking logic to make it
accurate.  NQ reservation is only needed on 57500 PFs.  This fix will
eliminate unnecessary reservations and will reduce NQ reservations
when some NQs have been released on 57500 PFs.

Fixes: c0b8cda05e1d ("bnxt_en: Fix NQ/CP rings accounting on the new 57500 chips.")
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -5499,11 +5499,13 @@ static bool bnxt_need_reserve_rings(stru
 	stat = bnxt_get_func_stat_ctxs(bp);
 	if (BNXT_NEW_RM(bp) &&
 	    (hw_resc->resv_rx_rings != rx || hw_resc->resv_cp_rings != cp ||
-	     hw_resc->resv_irqs < nq || hw_resc->resv_vnics != vnic ||
-	     hw_resc->resv_stat_ctxs != stat ||
+	     hw_resc->resv_vnics != vnic || hw_resc->resv_stat_ctxs != stat ||
 	     (hw_resc->resv_hw_ring_grps != grp &&
 	      !(bp->flags & BNXT_FLAG_CHIP_P5))))
 		return true;
+	if ((bp->flags & BNXT_FLAG_CHIP_P5) && BNXT_PF(bp) &&
+	    hw_resc->resv_irqs != nq)
+		return true;
 	return false;
 }