diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/infiniband/hw/mlx4/main.c | 3 | ||||
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/en_cq.c | 3 | ||||
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/eq.c | 12 |
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 | } |
1061 | EXPORT_SYMBOL(mlx4_test_interrupts); | 1062 | EXPORT_SYMBOL(mlx4_test_interrupts); |
1062 | 1063 | ||
1063 | int mlx4_assign_eq(struct mlx4_dev *dev, char* name, int * vector) | 1064 | int 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], |