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

Commit e3dc867c authored by Suresh Reddy's avatar Suresh Reddy Committed by David S. Miller
Browse files

be2net: fix max_evt_qs calculation for BE3 in SR-IOV config



The driver wrongly assumes 16 EQs/vectors are available for each BE3 PF.
When SR-IOV is enabled, a BE3 PF can support only a max of 8 EQs.

Signed-off-by: default avatarSuresh Reddy <suresh.reddy@emulex.com>
Signed-off-by: default avatarSathya Perla <sathya.perla@emulex.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5eeff635
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@ static inline char *nic_name(struct pci_dev *pdev)
#define BE3_MAX_RSS_QS		16
#define BE3_MAX_TX_QS		16
#define BE3_MAX_EVT_QS		16
#define BE3_SRIOV_MAX_EVT_QS	8

#define MAX_RX_QS		32
#define MAX_EVT_QS		32
+8 −4
Original line number Diff line number Diff line
@@ -3127,11 +3127,11 @@ static void BEx_get_resources(struct be_adapter *adapter,
{
	struct pci_dev *pdev = adapter->pdev;
	bool use_sriov = false;

	if (BE3_chip(adapter) && sriov_want(adapter)) {
	int max_vfs;

	max_vfs = pci_sriov_get_totalvfs(pdev);

	if (BE3_chip(adapter) && sriov_want(adapter)) {
		res->max_vfs = max_vfs > 0 ? min(MAX_VFS, max_vfs) : 0;
		use_sriov = res->max_vfs;
	}
@@ -3162,7 +3162,11 @@ static void BEx_get_resources(struct be_adapter *adapter,
					   BE3_MAX_RSS_QS : BE2_MAX_RSS_QS;
	res->max_rx_qs = res->max_rss_qs + 1;

	res->max_evt_qs = be_physfn(adapter) ? BE3_MAX_EVT_QS : 1;
	if (be_physfn(adapter))
		res->max_evt_qs = (max_vfs > 0) ?
					BE3_SRIOV_MAX_EVT_QS : BE3_MAX_EVT_QS;
	else
		res->max_evt_qs = 1;

	res->if_cap_flags = BE_IF_CAP_FLAGS_WANT;
	if (!(adapter->function_caps & BE_FUNCTION_CAPS_RSS))