diff options
-rw-r--r-- | drivers/net/ethernet/brocade/bna/bnad.c | 18 |
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); |