diff options
author | Krishna Gudipati <kgudipat@brocade.com> | 2012-08-22 22:52:18 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-09-24 04:10:57 -0400 |
commit | 9aec02497590cac5abdb5c044e3ec57010b1d808 (patch) | |
tree | a11d14e7e61df199b16c28825fbd781cd74ac1aa /drivers/scsi/bfa | |
parent | 881c1b3c486c7f181e0ca8c8df30f5f860c0d659 (diff) |
[SCSI] bfa: Fix to process mbox interrupts only if interrupts are enabled in INTx mode.
- Made changes to process mbox and error interrupts only if interrupts are
enabled, when running in INTx mode.
Signed-off-by: Krishna Gudipati <kgudipat@brocade.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/bfa')
-rw-r--r-- | drivers/scsi/bfa/bfa_core.c | 9 | ||||
-rw-r--r-- | drivers/scsi/bfa/bfa_modules.h | 1 |
2 files changed, 9 insertions, 1 deletions
diff --git a/drivers/scsi/bfa/bfa_core.c b/drivers/scsi/bfa/bfa_core.c index a4129c929f24..b7c326f7a6d0 100644 --- a/drivers/scsi/bfa/bfa_core.c +++ b/drivers/scsi/bfa/bfa_core.c | |||
@@ -775,7 +775,8 @@ bfa_intx(struct bfa_s *bfa) | |||
775 | if (!intr) | 775 | if (!intr) |
776 | return BFA_TRUE; | 776 | return BFA_TRUE; |
777 | 777 | ||
778 | bfa_msix_lpu_err(bfa, intr); | 778 | if (bfa->intr_enabled) |
779 | bfa_msix_lpu_err(bfa, intr); | ||
779 | 780 | ||
780 | return BFA_TRUE; | 781 | return BFA_TRUE; |
781 | } | 782 | } |
@@ -803,11 +804,17 @@ bfa_isr_enable(struct bfa_s *bfa) | |||
803 | writel(~umsk, bfa->iocfc.bfa_regs.intr_mask); | 804 | writel(~umsk, bfa->iocfc.bfa_regs.intr_mask); |
804 | bfa->iocfc.intr_mask = ~umsk; | 805 | bfa->iocfc.intr_mask = ~umsk; |
805 | bfa_isr_mode_set(bfa, bfa->msix.nvecs != 0); | 806 | bfa_isr_mode_set(bfa, bfa->msix.nvecs != 0); |
807 | |||
808 | /* | ||
809 | * Set the flag indicating successful enabling of interrupts | ||
810 | */ | ||
811 | bfa->intr_enabled = BFA_TRUE; | ||
806 | } | 812 | } |
807 | 813 | ||
808 | void | 814 | void |
809 | bfa_isr_disable(struct bfa_s *bfa) | 815 | bfa_isr_disable(struct bfa_s *bfa) |
810 | { | 816 | { |
817 | bfa->intr_enabled = BFA_FALSE; | ||
811 | bfa_isr_mode_set(bfa, BFA_FALSE); | 818 | bfa_isr_mode_set(bfa, BFA_FALSE); |
812 | writel(-1L, bfa->iocfc.bfa_regs.intr_mask); | 819 | writel(-1L, bfa->iocfc.bfa_regs.intr_mask); |
813 | bfa_msix_uninstall(bfa); | 820 | bfa_msix_uninstall(bfa); |
diff --git a/drivers/scsi/bfa/bfa_modules.h b/drivers/scsi/bfa/bfa_modules.h index 2d36e4823835..189fff71e3c2 100644 --- a/drivers/scsi/bfa/bfa_modules.h +++ b/drivers/scsi/bfa/bfa_modules.h | |||
@@ -121,6 +121,7 @@ struct bfa_s { | |||
121 | bfa_boolean_t fcs; /* FCS is attached to BFA */ | 121 | bfa_boolean_t fcs; /* FCS is attached to BFA */ |
122 | struct bfa_msix_s msix; | 122 | struct bfa_msix_s msix; |
123 | int bfa_aen_seq; | 123 | int bfa_aen_seq; |
124 | bfa_boolean_t intr_enabled; /* Status of interrupts */ | ||
124 | }; | 125 | }; |
125 | 126 | ||
126 | extern bfa_boolean_t bfa_auto_recover; | 127 | extern bfa_boolean_t bfa_auto_recover; |