eqe = next_eqe_sw(eq); if (!eqe) @@ -122,6 +122,7 @@ static int mlx5_eq_comp_int(struct notifier_block *nb, do { struct mlx5_core_cq *cq; + u32 cqn; /* Make sure we read EQ entry contents after we've * checked the ownership bit. @@ -134,6 +135,7 @@ static int mlx5_eq_comp_int(struct notifier_block *nb, if (likely(cq)) { ++cq->arm_sn; cq->comp(cq, eqe); + schedule_tasklet |= !!cq->tasklet_ctx.comp; mlx5_cq_put(cq); } else { dev_dbg_ratelimited(eq->dev->device, @@ -147,7 +149,7 @@ static int mlx5_eq_comp_int(struct notifier_block *nb, out: eq_update_ci(eq, 1); - if (cqn != -1) + if (schedule_tasklet) tasklet_schedule(&eq_comp->tasklet_ctx.task); return 0; Thanks, Caleb