]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
bnxt_en: Improve resource accounting for SRIOV.
authorMichael Chan <michael.chan@broadcom.com>
Sat, 31 Mar 2018 17:54:14 +0000 (13:54 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sun, 1 Apr 2018 03:24:19 +0000 (23:24 -0400)
When VFs are created, the current code subtracts the maximum VF
resources from the PF's pool.  This under-estimates the resources
remaining in the PF pool.  Instead, we should subtract the minimum
VF resources.  The VF minimum resources are guaranteed to the VFs
and only these should be subtracted from the PF's pool.

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

index a3d368ee30726d47a24f5642a13b2ff3c1abd248..4fa4761fbd1c73e51d2fe2cdc45982d6465c0635 100644 (file)
@@ -510,18 +510,16 @@ static int bnxt_hwrm_func_vf_resc_cfg(struct bnxt *bp, int num_vfs)
        }
        mutex_unlock(&bp->hwrm_cmd_lock);
        if (pf->active_vfs) {
-               u16 n = 1;
+               u16 n = pf->active_vfs;
 
-               if (pf->vf_resv_strategy != BNXT_VF_RESV_STRATEGY_MINIMAL)
-                       n = pf->active_vfs;
-
-               hw_resc->max_tx_rings -= vf_tx_rings * n;
-               hw_resc->max_rx_rings -= vf_rx_rings * n;
-               hw_resc->max_hw_ring_grps -= vf_ring_grps * n;
-               hw_resc->max_cp_rings -= vf_cp_rings * n;
+               hw_resc->max_tx_rings -= le16_to_cpu(req.min_tx_rings) * n;
+               hw_resc->max_rx_rings -= le16_to_cpu(req.min_rx_rings) * n;
+               hw_resc->max_hw_ring_grps -= le16_to_cpu(req.min_hw_ring_grps) *
+                                            n;
+               hw_resc->max_cp_rings -= le16_to_cpu(req.min_cmpl_rings) * n;
                hw_resc->max_rsscos_ctxs -= pf->active_vfs;
-               hw_resc->max_stat_ctxs -= vf_stat_ctx * n;
-               hw_resc->max_vnics -= vf_vnics * n;
+               hw_resc->max_stat_ctxs -= le16_to_cpu(req.min_stat_ctx) * n;
+               hw_resc->max_vnics -= le16_to_cpu(req.min_vnics) * n;
 
                rc = pf->active_vfs;
        }