aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/mthca
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband/hw/mthca')
-rw-r--r--drivers/infiniband/hw/mthca/mthca_eq.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/infiniband/hw/mthca/mthca_eq.c b/drivers/infiniband/hw/mthca/mthca_eq.c
index f2afdc6c7e60..e5a047a6dbeb 100644
--- a/drivers/infiniband/hw/mthca/mthca_eq.c
+++ b/drivers/infiniband/hw/mthca/mthca_eq.c
@@ -411,20 +411,21 @@ static irqreturn_t mthca_tavor_interrupt(int irq, void *dev_ptr, struct pt_regs
411 writel(dev->eq_table.clr_mask, dev->eq_table.clr_int); 411 writel(dev->eq_table.clr_mask, dev->eq_table.clr_int);
412 412
413 ecr = readl(dev->eq_regs.tavor.ecr_base + 4); 413 ecr = readl(dev->eq_regs.tavor.ecr_base + 4);
414 if (ecr) { 414 if (!ecr)
415 writel(ecr, dev->eq_regs.tavor.ecr_base + 415 return IRQ_NONE;
416 MTHCA_ECR_CLR_BASE - MTHCA_ECR_BASE + 4);
417 416
418 for (i = 0; i < MTHCA_NUM_EQ; ++i) 417 writel(ecr, dev->eq_regs.tavor.ecr_base +
419 if (ecr & dev->eq_table.eq[i].eqn_mask && 418 MTHCA_ECR_CLR_BASE - MTHCA_ECR_BASE + 4);
420 mthca_eq_int(dev, &dev->eq_table.eq[i])) { 419
420 for (i = 0; i < MTHCA_NUM_EQ; ++i)
421 if (ecr & dev->eq_table.eq[i].eqn_mask) {
422 if (mthca_eq_int(dev, &dev->eq_table.eq[i]))
421 tavor_set_eq_ci(dev, &dev->eq_table.eq[i], 423 tavor_set_eq_ci(dev, &dev->eq_table.eq[i],
422 dev->eq_table.eq[i].cons_index); 424 dev->eq_table.eq[i].cons_index);
423 tavor_eq_req_not(dev, dev->eq_table.eq[i].eqn); 425 tavor_eq_req_not(dev, dev->eq_table.eq[i].eqn);
424 } 426 }
425 }
426 427
427 return IRQ_RETVAL(ecr); 428 return IRQ_HANDLED;
428} 429}
429 430
430static irqreturn_t mthca_tavor_msi_x_interrupt(int irq, void *eq_ptr, 431static irqreturn_t mthca_tavor_msi_x_interrupt(int irq, void *eq_ptr,