net/mlx4_en: cq->irq_desc wasn't set in legacy EQ's
authorAmir Vadai <amirv@mellanox.com>
Wed, 16 Jul 2014 10:33:50 +0000 (13:33 +0300)
committerDavid S. Miller <davem@davemloft.net>
Thu, 17 Jul 2014 06:28:32 +0000 (23:28 -0700)
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>
drivers/net/ethernet/mellanox/mlx4/en_cq.c

index 14c0004..82322b1 100644 (file)
@@ -129,14 +129,15 @@ int mlx4_en_activate_cq(struct mlx4_en_priv *priv, struct mlx4_en_cq *cq,
                                                  name);
                                }
 
-                               cq->irq_desc =
-                                       irq_to_desc(mlx4_eq_get_irq(mdev->dev,
-                                                                   cq->vector));
                        }
                } else {
                        cq->vector = (cq->ring + 1 + priv->port) %
                                mdev->dev->caps.num_comp_vectors;
                }
+
+               cq->irq_desc =
+                       irq_to_desc(mlx4_eq_get_irq(mdev->dev,
+                                                   cq->vector));
        } else {
                /* For TX we use the same irq per
                ring we assigned for the RX    */