In order to prevent losing interrupts, all EQs must be rearmed
whenever an interrupt occurs, regardless if that interrupt is
generated for the EQ or not.

Signed-off-by: Eli Cohen <[EMAIL PROTECTED]>

---

Index: connectx_kernel/drivers/net/mlx4/eq.c
===================================================================
--- connectx_kernel.orig/drivers/net/mlx4/eq.c  2007-05-07 12:32:35.000000000 
+0300
+++ connectx_kernel/drivers/net/mlx4/eq.c       2007-05-07 17:33:09.000000000 
+0300
@@ -266,13 +266,17 @@ static irqreturn_t mlx4_interrupt(int ir
 {
        struct mlx4_dev *dev = dev_ptr;
        struct mlx4_priv *priv = mlx4_priv(dev);
+       struct mlx4_eq *eq;
        int work = 0;
        int i;
 
        writel(priv->eq_table.clr_mask, priv->eq_table.clr_int);
 
-       for (i = 0; i < MLX4_EQ_CATAS; ++i)
-               work |= mlx4_eq_int(dev, &priv->eq_table.eq[i]);
+       for (i = 0; i < MLX4_EQ_CATAS; ++i) {
+               eq = &priv->eq_table.eq[i];
+               work |= mlx4_eq_int(dev, eq);
+               eq_set_ci(eq, 1);
+       }
 
        return IRQ_RETVAL(work);
 }

_______________________________________________
general mailing list
general@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to