Commit ca4c7b35 authored by Or Gerlitz's avatar Or Gerlitz Committed by David S. Miller

net/mlx4_core: Set number of msix vectors under SRIOV mode to firmware defaults

The lines

	if (mlx4_is_mfunc(dev)) {
		nreq = 2;
	} else {

which hard code the number of requested msi-x vectors under multi-function
mode to two can be removed completely, since the firmware sets num_eqs and
reserved_eqs appropriately Thus, the code line:

	nreq = min_t(int, dev->caps.num_eqs - dev->caps.reserved_eqs, nreq);

is by itself sufficient and correct for all cases. Currently, for mfunc
mode num_eqs = 32 and reserved_eqs = 28, hence four vectors will be enabled.

This triples (one vector is used for the async events and commands EQ) the
horse power provided for processing of incoming packets on netdev RSS scheme,
IO initiators/targets commands processing flows, etc.
Reviewed-by: default avatarJack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: default avatarAmir Vadai <amirv@mellanox.com>
Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 213815a1
...@@ -1790,15 +1790,8 @@ static void mlx4_enable_msi_x(struct mlx4_dev *dev) ...@@ -1790,15 +1790,8 @@ static void mlx4_enable_msi_x(struct mlx4_dev *dev)
int i; int i;
if (msi_x) { if (msi_x) {
/* In multifunction mode each function gets 2 msi-X vectors nreq = min_t(int, dev->caps.num_eqs - dev->caps.reserved_eqs,
* one for data path completions anf the other for asynch events nreq);
* or command completions */
if (mlx4_is_mfunc(dev)) {
nreq = 2;
} else {
nreq = min_t(int, dev->caps.num_eqs -
dev->caps.reserved_eqs, nreq);
}
entries = kcalloc(nreq, sizeof *entries, GFP_KERNEL); entries = kcalloc(nreq, sizeof *entries, GFP_KERNEL);
if (!entries) if (!entries)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment