aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/bfa
diff options
context:
space:
mode:
authorKrishna Gudipati <kgudipat@brocade.com>2012-08-22 22:52:18 -0400
committerJames Bottomley <JBottomley@Parallels.com>2012-09-24 04:10:57 -0400
commit9aec02497590cac5abdb5c044e3ec57010b1d808 (patch)
treea11d14e7e61df199b16c28825fbd781cd74ac1aa /drivers/scsi/bfa
parent881c1b3c486c7f181e0ca8c8df30f5f860c0d659 (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.c9
-rw-r--r--drivers/scsi/bfa/bfa_modules.h1
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
808void 814void
809bfa_isr_disable(struct bfa_s *bfa) 815bfa_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
126extern bfa_boolean_t bfa_auto_recover; 127extern bfa_boolean_t bfa_auto_recover;