[ofa-general] [PATCH] IB/mlx4 mlx4_ib: eq interrupts
Eli Cohen
eli at mellanox.co.il
Mon May 7 08:20:33 PDT 2007
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 <eli at mellanox.co.il>
---
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);
}
More information about the general
mailing list