aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/infiniband/hw/mlx4/main.c3
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/en_cq.c3
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/eq.c12
3 files changed, 15 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
index 8a3a2037b005..a07b774e7864 100644
--- a/drivers/infiniband/hw/mlx4/main.c
+++ b/drivers/infiniband/hw/mlx4/main.c
@@ -1159,7 +1159,8 @@ static void mlx4_ib_alloc_eqs(struct mlx4_dev *dev, struct mlx4_ib_dev *ibdev)
1159 sprintf(name, "mlx4-ib-%d-%d@%s", 1159 sprintf(name, "mlx4-ib-%d-%d@%s",
1160 i, j, dev->pdev->bus->name); 1160 i, j, dev->pdev->bus->name);
1161 /* Set IRQ for specific name (per ring) */ 1161 /* Set IRQ for specific name (per ring) */
1162 if (mlx4_assign_eq(dev, name, &ibdev->eq_table[eq])) { 1162 if (mlx4_assign_eq(dev, name, NULL,
1163 &ibdev->eq_table[eq])) {
1163 /* Use legacy (same as mlx4_en driver) */ 1164 /* Use legacy (same as mlx4_en driver) */
1164 pr_warn("Can't allocate EQ %d; reverting to legacy\n", eq); 1165 pr_warn("Can't allocate EQ %d; reverting to legacy\n", eq);
1165 ibdev->eq_table[eq] = 1166 ibdev->eq_table[eq] =
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_cq.c b/drivers/net/ethernet/mellanox/mlx4/en_cq.c
index 908a460d8db6..0ef615684021 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_cq.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_cq.c
@@ -91,7 +91,8 @@ int mlx4_en_activate_cq(struct mlx4_en_priv *priv, struct mlx4_en_cq *cq,
91 sprintf(name, "%s-%d", priv->dev->name, 91 sprintf(name, "%s-%d", priv->dev->name,
92 cq->ring); 92 cq->ring);
93 /* Set IRQ for specific name (per ring) */ 93 /* Set IRQ for specific name (per ring) */
94 if (mlx4_assign_eq(mdev->dev, name, &cq->vector)) { 94 if (mlx4_assign_eq(mdev->dev, name, NULL,
95 &cq->vector)) {
95 cq->vector = (cq->ring + 1 + priv->port) 96 cq->vector = (cq->ring + 1 + priv->port)
96 % mdev->dev->caps.num_comp_vectors; 97 % mdev->dev->caps.num_comp_vectors;
97 mlx4_warn(mdev, "Failed Assigning an EQ to " 98 mlx4_warn(mdev, "Failed Assigning an EQ to "
diff --git a/drivers/net/ethernet/mellanox/mlx4/eq.c b/drivers/net/ethernet/mellanox/mlx4/eq.c
index bce98d9c0039..cd48337cbfc0 100644
--- a/drivers/net/ethernet/mellanox/mlx4/eq.c
+++ b/drivers/net/ethernet/mellanox/mlx4/eq.c
@@ -39,6 +39,7 @@
39#include <linux/dma-mapping.h> 39#include <linux/dma-mapping.h>
40 40
41#include <linux/mlx4/cmd.h> 41#include <linux/mlx4/cmd.h>
42#include <linux/cpu_rmap.h>
42 43
43#include "mlx4.h" 44#include "mlx4.h"
44#include "fw.h" 45#include "fw.h"
@@ -1060,7 +1061,8 @@ int mlx4_test_interrupts(struct mlx4_dev *dev)
1060} 1061}
1061EXPORT_SYMBOL(mlx4_test_interrupts); 1062EXPORT_SYMBOL(mlx4_test_interrupts);
1062 1063
1063int mlx4_assign_eq(struct mlx4_dev *dev, char* name, int * vector) 1064int mlx4_assign_eq(struct mlx4_dev *dev, char *name, struct cpu_rmap *rmap,
1065 int *vector)
1064{ 1066{
1065 1067
1066 struct mlx4_priv *priv = mlx4_priv(dev); 1068 struct mlx4_priv *priv = mlx4_priv(dev);
@@ -1074,6 +1076,14 @@ int mlx4_assign_eq(struct mlx4_dev *dev, char* name, int * vector)
1074 snprintf(priv->eq_table.irq_names + 1076 snprintf(priv->eq_table.irq_names +
1075 vec * MLX4_IRQNAME_SIZE, 1077 vec * MLX4_IRQNAME_SIZE,
1076 MLX4_IRQNAME_SIZE, "%s", name); 1078 MLX4_IRQNAME_SIZE, "%s", name);
1079#ifdef CONFIG_RFS_ACCEL
1080 if (rmap) {
1081 err = irq_cpu_rmap_add(rmap,
1082 priv->eq_table.eq[vec].irq);
1083 if (err)
1084 mlx4_warn(dev, "Failed adding irq rmap\n");
1085 }
1086#endif
1077 err = request_irq(priv->eq_table.eq[vec].irq, 1087 err = request_irq(priv->eq_table.eq[vec].irq,
1078 mlx4_msi_x_interrupt, 0, 1088 mlx4_msi_x_interrupt, 0,
1079 &priv->eq_table.irq_names[vec<<5], 1089 &priv->eq_table.irq_names[vec<<5],