aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/brocade/bna/bnad.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/net/ethernet/brocade/bna/bnad.c b/drivers/net/ethernet/brocade/bna/bnad.c
index c81550b076ad..11990cf0a265 100644
--- a/drivers/net/ethernet/brocade/bna/bnad.c
+++ b/drivers/net/ethernet/brocade/bna/bnad.c
@@ -586,10 +586,11 @@ bnad_msix_mbox_handler(int irq, void *data)
586 unsigned long flags; 586 unsigned long flags;
587 struct bnad *bnad = (struct bnad *)data; 587 struct bnad *bnad = (struct bnad *)data;
588 588
589 if (unlikely(test_bit(BNAD_RF_MBOX_IRQ_DISABLED, &bnad->run_flags)))
590 return IRQ_HANDLED;
591
592 spin_lock_irqsave(&bnad->bna_lock, flags); 589 spin_lock_irqsave(&bnad->bna_lock, flags);
590 if (unlikely(test_bit(BNAD_RF_MBOX_IRQ_DISABLED, &bnad->run_flags))) {
591 spin_unlock_irqrestore(&bnad->bna_lock, flags);
592 return IRQ_HANDLED;
593 }
593 594
594 bna_intr_status_get(&bnad->bna, intr_status); 595 bna_intr_status_get(&bnad->bna, intr_status);
595 596
@@ -612,15 +613,18 @@ bnad_isr(int irq, void *data)
612 struct bnad_rx_ctrl *rx_ctrl; 613 struct bnad_rx_ctrl *rx_ctrl;
613 struct bna_tcb *tcb = NULL; 614 struct bna_tcb *tcb = NULL;
614 615
615 if (unlikely(test_bit(BNAD_RF_MBOX_IRQ_DISABLED, &bnad->run_flags))) 616 spin_lock_irqsave(&bnad->bna_lock, flags);
617 if (unlikely(test_bit(BNAD_RF_MBOX_IRQ_DISABLED, &bnad->run_flags))) {
618 spin_unlock_irqrestore(&bnad->bna_lock, flags);
616 return IRQ_NONE; 619 return IRQ_NONE;
620 }
617 621
618 bna_intr_status_get(&bnad->bna, intr_status); 622 bna_intr_status_get(&bnad->bna, intr_status);
619 623
620 if (unlikely(!intr_status)) 624 if (unlikely(!intr_status)) {
625 spin_unlock_irqrestore(&bnad->bna_lock, flags);
621 return IRQ_NONE; 626 return IRQ_NONE;
622 627 }
623 spin_lock_irqsave(&bnad->bna_lock, flags);
624 628
625 if (BNA_IS_MBOX_ERR_INTR(&bnad->bna, intr_status)) 629 if (BNA_IS_MBOX_ERR_INTR(&bnad->bna, intr_status))
626 bna_mbox_handler(&bnad->bna, intr_status); 630 bna_mbox_handler(&bnad->bna, intr_status);