aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTariq Toukan <tariqt@mellanox.com>2017-05-18 06:34:43 -0400
committerSaeed Mahameed <saeedm@mellanox.com>2017-05-23 09:23:32 -0400
commitb665d98edc9ab295169be2fc5bb4e89a46de0a1a (patch)
tree6ae433a8ce37a29fc4de3a5b7c12d42d2b9789ed
parent73dd3a4839c1d27c36d4dcc92e1ff44225ecbeb7 (diff)
net/mlx5: Tolerate irq_set_affinity_hint() failures
Add tolerance to failures of irq_set_affinity_hint(). Its role is to give hints that optimizes performance, and should not block the driver load. In non-SMP systems, functionality is not available as there is a single core, and all these calls definitely fail. Hence, do not call the function and avoid the warning prints. Fixes: db058a186f98 ("net/mlx5_core: Set irq affinity hints") Signed-off-by: Tariq Toukan <tariqt@mellanox.com> Cc: kernel-team@fb.com Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/main.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c
index 0c123d571b4c..fe5546bb4153 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c
@@ -612,7 +612,6 @@ static int mlx5_irq_set_affinity_hint(struct mlx5_core_dev *mdev, int i)
612 struct mlx5_priv *priv = &mdev->priv; 612 struct mlx5_priv *priv = &mdev->priv;
613 struct msix_entry *msix = priv->msix_arr; 613 struct msix_entry *msix = priv->msix_arr;
614 int irq = msix[i + MLX5_EQ_VEC_COMP_BASE].vector; 614 int irq = msix[i + MLX5_EQ_VEC_COMP_BASE].vector;
615 int err;
616 615
617 if (!zalloc_cpumask_var(&priv->irq_info[i].mask, GFP_KERNEL)) { 616 if (!zalloc_cpumask_var(&priv->irq_info[i].mask, GFP_KERNEL)) {
618 mlx5_core_warn(mdev, "zalloc_cpumask_var failed"); 617 mlx5_core_warn(mdev, "zalloc_cpumask_var failed");
@@ -622,18 +621,12 @@ static int mlx5_irq_set_affinity_hint(struct mlx5_core_dev *mdev, int i)
622 cpumask_set_cpu(cpumask_local_spread(i, priv->numa_node), 621 cpumask_set_cpu(cpumask_local_spread(i, priv->numa_node),
623 priv->irq_info[i].mask); 622 priv->irq_info[i].mask);
624 623
625 err = irq_set_affinity_hint(irq, priv->irq_info[i].mask); 624#ifdef CONFIG_SMP
626 if (err) { 625 if (irq_set_affinity_hint(irq, priv->irq_info[i].mask))
627 mlx5_core_warn(mdev, "irq_set_affinity_hint failed,irq 0x%.4x", 626 mlx5_core_warn(mdev, "irq_set_affinity_hint failed, irq 0x%.4x", irq);
628 irq); 627#endif
629 goto err_clear_mask;
630 }
631 628
632 return 0; 629 return 0;
633
634err_clear_mask:
635 free_cpumask_var(priv->irq_info[i].mask);
636 return err;
637} 630}
638 631
639static void mlx5_irq_clear_affinity_hint(struct mlx5_core_dev *mdev, int i) 632static void mlx5_irq_clear_affinity_hint(struct mlx5_core_dev *mdev, int i)