aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Drozdov <denisd@mellanox.com>2018-08-08 19:23:48 -0400
committerDavid S. Miller <davem@davemloft.net>2018-08-08 22:34:54 -0400
commit342ac8448f1fb213908656ae5581d0f37a5954e8 (patch)
tree00b7a898f23d709012d59599a78accf90c67d72b
parent13403d6952a5adf80d3d5668c290490852b4def2 (diff)
net/mlx5: Use max_num_eqs for calculation of required MSIX vectors
New firmware has defined new HCA capability field called "max_num_eqs", that is the number of available EQs after subtracting reserved FW EQs. Before this capability the FW reported the EQ number in "log_max_eqs", the reported value also contained FW reserved EQs, but the driver might be failing to load on 320 cpus systems due to the fact that FW reserved EQs were not available to the driver. Now the driver has to obtain max_num_eqs value from new FW to get real number of EQs available. Signed-off-by: Denis Drozdov <denisd@mellanox.com> Reviewed-by: Alex Vesker <valex@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/main.c4
-rw-r--r--include/linux/mlx5/mlx5_ifc.h5
2 files changed, 7 insertions, 2 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
index 03b9c6733eed..cf3e4a659052 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
@@ -323,7 +323,9 @@ static int mlx5_alloc_irq_vectors(struct mlx5_core_dev *dev)
323{ 323{
324 struct mlx5_priv *priv = &dev->priv; 324 struct mlx5_priv *priv = &dev->priv;
325 struct mlx5_eq_table *table = &priv->eq_table; 325 struct mlx5_eq_table *table = &priv->eq_table;
326 int num_eqs = 1 << MLX5_CAP_GEN(dev, log_max_eq); 326 int num_eqs = MLX5_CAP_GEN(dev, max_num_eqs) ?
327 MLX5_CAP_GEN(dev, max_num_eqs) :
328 1 << MLX5_CAP_GEN(dev, log_max_eq);
327 int nvec; 329 int nvec;
328 int err; 330 int err;
329 331
diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h
index 60c2308fe062..63e1ce4c4826 100644
--- a/include/linux/mlx5/mlx5_ifc.h
+++ b/include/linux/mlx5/mlx5_ifc.h
@@ -1133,7 +1133,10 @@ struct mlx5_ifc_cmd_hca_cap_bits {
1133 1133
1134 u8 general_obj_types[0x40]; 1134 u8 general_obj_types[0x40];
1135 1135
1136 u8 reserved_at_440[0x40]; 1136 u8 reserved_at_440[0x20];
1137
1138 u8 reserved_at_460[0x10];
1139 u8 max_num_eqs[0x10];
1137 1140
1138 u8 reserved_at_480[0x3]; 1141 u8 reserved_at_480[0x3];
1139 u8 log_max_l2_table[0x5]; 1142 u8 log_max_l2_table[0x5];