diff options
| author | Amir Vadai <amirv@mellanox.com> | 2014-07-16 06:33:50 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2014-07-17 02:28:32 -0400 |
| commit | 858e6c321065344339906672bccd0eafe9622258 (patch) | |
| tree | 85f404788bb54c1503bb03705b9f16147a48acc4 | |
| parent | a4b70a07ed12a71131cab7adce2ce91c71b37060 (diff) | |
net/mlx4_en: cq->irq_desc wasn't set in legacy EQ's
Fix a regression introduced by commit 35f6f45 ("net/mlx4_en: Don't use
irq_affinity_notifier to track changes in IRQ affinity map").
When core is started in legacy EQ's (number of IRQ's < rx rings), cq->irq_desc
was NULL. This caused a kernel crash under heavy traffic - when having more
than rx NAPI budget completions.
Fixed to have it set for both EQ modes.
Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/en_cq.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_cq.c b/drivers/net/ethernet/mellanox/mlx4/en_cq.c index 14c00048bbec..82322b1c8411 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_cq.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_cq.c | |||
| @@ -129,14 +129,15 @@ int mlx4_en_activate_cq(struct mlx4_en_priv *priv, struct mlx4_en_cq *cq, | |||
| 129 | name); | 129 | name); |
| 130 | } | 130 | } |
| 131 | 131 | ||
| 132 | cq->irq_desc = | ||
| 133 | irq_to_desc(mlx4_eq_get_irq(mdev->dev, | ||
| 134 | cq->vector)); | ||
| 135 | } | 132 | } |
| 136 | } else { | 133 | } else { |
| 137 | cq->vector = (cq->ring + 1 + priv->port) % | 134 | cq->vector = (cq->ring + 1 + priv->port) % |
| 138 | mdev->dev->caps.num_comp_vectors; | 135 | mdev->dev->caps.num_comp_vectors; |
| 139 | } | 136 | } |
| 137 | |||
| 138 | cq->irq_desc = | ||
| 139 | irq_to_desc(mlx4_eq_get_irq(mdev->dev, | ||
| 140 | cq->vector)); | ||
| 140 | } else { | 141 | } else { |
| 141 | /* For TX we use the same irq per | 142 | /* For TX we use the same irq per |
| 142 | ring we assigned for the RX */ | 143 | ring we assigned for the RX */ |
