Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 596f9d55 authored by Michael Chan's avatar Michael Chan Committed by David S. Miller
Browse files

bnxt_en: Improve resource accounting for SRIOV.



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: default avatarMichael Chan <michael.chan@broadcom.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent db4723b3
Loading
Loading
Loading
Loading
+8 −10
Original line number Original line Diff line number Diff line
@@ -510,18 +510,16 @@ static int bnxt_hwrm_func_vf_resc_cfg(struct bnxt *bp, int num_vfs)
	}
	}
	mutex_unlock(&bp->hwrm_cmd_lock);
	mutex_unlock(&bp->hwrm_cmd_lock);
	if (pf->active_vfs) {
	if (pf->active_vfs) {
		u16 n = 1;
		u16 n = pf->active_vfs;


		if (pf->vf_resv_strategy != BNXT_VF_RESV_STRATEGY_MINIMAL)
		hw_resc->max_tx_rings -= le16_to_cpu(req.min_tx_rings) * n;
			n = pf->active_vfs;
		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) *
		hw_resc->max_tx_rings -= vf_tx_rings * n;
					     n;
		hw_resc->max_rx_rings -= vf_rx_rings * n;
		hw_resc->max_cp_rings -= le16_to_cpu(req.min_cmpl_rings) * n;
		hw_resc->max_hw_ring_grps -= vf_ring_grps * n;
		hw_resc->max_cp_rings -= vf_cp_rings * n;
		hw_resc->max_rsscos_ctxs -= pf->active_vfs;
		hw_resc->max_rsscos_ctxs -= pf->active_vfs;
		hw_resc->max_stat_ctxs -= vf_stat_ctx * n;
		hw_resc->max_stat_ctxs -= le16_to_cpu(req.min_stat_ctx) * n;
		hw_resc->max_vnics -= vf_vnics * n;
		hw_resc->max_vnics -= le16_to_cpu(req.min_vnics) * n;


		rc = pf->active_vfs;
		rc = pf->active_vfs;
	}
	}