diff options
Diffstat (limited to 'drivers/scsi/bfa/bfad_intr.c')
| -rw-r--r-- | drivers/scsi/bfa/bfad_intr.c | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/scsi/bfa/bfad_intr.c b/drivers/scsi/bfa/bfad_intr.c index 7de8832f6fe..2b7dbecbebc 100644 --- a/drivers/scsi/bfa/bfad_intr.c +++ b/drivers/scsi/bfa/bfad_intr.c @@ -23,8 +23,10 @@ BFA_TRC_FILE(LDRV, INTR);  /**   *  bfa_isr BFA driver interrupt functions   */ -static int msix_disable; -module_param(msix_disable, int, S_IRUGO | S_IWUSR); +static int msix_disable_cb; +static int msix_disable_ct; +module_param(msix_disable_cb, int, S_IRUGO | S_IWUSR); +module_param(msix_disable_ct, int, S_IRUGO | S_IWUSR);  /**   * Line based interrupt handler.   */ @@ -141,6 +143,7 @@ bfad_setup_intr(struct bfad_s *bfad)  	int error = 0;  	u32 mask = 0, i, num_bit = 0, max_bit = 0;  	struct msix_entry msix_entries[MAX_MSIX_ENTRY]; +	struct pci_dev *pdev = bfad->pcidev;  	/* Call BFA to get the msix map for this PCI function.  */  	bfa_msix_getvecs(&bfad->bfa, &mask, &num_bit, &max_bit); @@ -148,7 +151,9 @@ bfad_setup_intr(struct bfad_s *bfad)  	/* Set up the msix entry table */  	bfad_init_msix_entry(bfad, msix_entries, mask, max_bit); -	if (!msix_disable) { +	if ((pdev->device == BFA_PCI_DEVICE_ID_CT && !msix_disable_ct) || +	    (pdev->device != BFA_PCI_DEVICE_ID_CT && !msix_disable_cb)) { +  		error = pci_enable_msix(bfad->pcidev, msix_entries, bfad->nvec);  		if (error) {  			/*  |