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