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
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general
To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general