aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_init.c
diff options
context:
space:
mode:
authorJames Smart <James.Smart@Emulex.Com>2008-08-24 21:50:30 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-10-13 09:28:55 -0400
commit9399627f340794baebf7e4581470ccb92f019acc (patch)
treec30e656a1c353e2f025bb5ca3daf142128434a34 /drivers/scsi/lpfc/lpfc_init.c
parent0f1f53a7efd60d7cdd8e82925f0c62dcf64ba092 (diff)
[SCSI] lpfc 8.2.8 : Add MSI-X support
Add support for MSI-X Multi-Message interrupts. We use different vectors for fast-path interrupts (i/o) and slow-patch interrupts (discovery, etc). Signed-off-by: James Smart <james.smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_init.c')
-rw-r--r--drivers/scsi/lpfc/lpfc_init.c230
1 files changed, 185 insertions, 45 deletions
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index 333166b17908..49577d5f130f 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -389,6 +389,29 @@ lpfc_config_port_post(struct lpfc_hba *phba)
389 if (phba->sli_rev != 3) 389 if (phba->sli_rev != 3)
390 lpfc_post_rcv_buf(phba); 390 lpfc_post_rcv_buf(phba);
391 391
392 /*
393 * Configure HBA MSI-X attention conditions to messages if MSI-X mode
394 */
395 if (phba->intr_type == MSIX) {
396 rc = lpfc_config_msi(phba, pmb);
397 if (rc) {
398 mempool_free(pmb, phba->mbox_mem_pool);
399 return -EIO;
400 }
401 rc = lpfc_sli_issue_mbox(phba, pmb, MBX_POLL);
402 if (rc != MBX_SUCCESS) {
403 lpfc_printf_log(phba, KERN_ERR, LOG_MBOX,
404 "0352 Config MSI mailbox command "
405 "failed, mbxCmd x%x, mbxStatus x%x\n",
406 pmb->mb.mbxCommand, pmb->mb.mbxStatus);
407 mempool_free(pmb, phba->mbox_mem_pool);
408 return -EIO;
409 }
410 }
411
412 /* Initialize ERATT handling flag */
413 phba->hba_flag &= ~HBA_ERATT_HANDLED;
414
392 /* Enable appropriate host interrupts */ 415 /* Enable appropriate host interrupts */
393 spin_lock_irq(&phba->hbalock); 416 spin_lock_irq(&phba->hbalock);
394 status = readl(phba->HCregaddr); 417 status = readl(phba->HCregaddr);
@@ -404,20 +427,21 @@ lpfc_config_port_post(struct lpfc_hba *phba)
404 427
405 if ((phba->cfg_poll & ENABLE_FCP_RING_POLLING) && 428 if ((phba->cfg_poll & ENABLE_FCP_RING_POLLING) &&
406 (phba->cfg_poll & DISABLE_FCP_RING_INT)) 429 (phba->cfg_poll & DISABLE_FCP_RING_INT))
407 status &= ~(HC_R0INT_ENA << LPFC_FCP_RING); 430 status &= ~(HC_R0INT_ENA);
408 431
409 writel(status, phba->HCregaddr); 432 writel(status, phba->HCregaddr);
410 readl(phba->HCregaddr); /* flush */ 433 readl(phba->HCregaddr); /* flush */
411 spin_unlock_irq(&phba->hbalock); 434 spin_unlock_irq(&phba->hbalock);
412 435
413 /* 436 /* Set up ring-0 (ELS) timer */
414 * Setup the ring 0 (els) timeout handler 437 timeout = phba->fc_ratov * 2;
415 */
416 timeout = phba->fc_ratov << 1;
417 mod_timer(&vport->els_tmofunc, jiffies + HZ * timeout); 438 mod_timer(&vport->els_tmofunc, jiffies + HZ * timeout);
439 /* Set up heart beat (HB) timer */
418 mod_timer(&phba->hb_tmofunc, jiffies + HZ * LPFC_HB_MBOX_INTERVAL); 440 mod_timer(&phba->hb_tmofunc, jiffies + HZ * LPFC_HB_MBOX_INTERVAL);
419 phba->hb_outstanding = 0; 441 phba->hb_outstanding = 0;
420 phba->last_completion_time = jiffies; 442 phba->last_completion_time = jiffies;
443 /* Set up error attention (ERATT) polling timer */
444 mod_timer(&phba->eratt_poll, jiffies + HZ * LPFC_ERATT_POLL_INTERVAL);
421 445
422 lpfc_init_link(phba, pmb, phba->cfg_topology, phba->cfg_link_speed); 446 lpfc_init_link(phba, pmb, phba->cfg_topology, phba->cfg_link_speed);
423 pmb->mbox_cmpl = lpfc_sli_def_mbox_cmpl; 447 pmb->mbox_cmpl = lpfc_sli_def_mbox_cmpl;
@@ -581,12 +605,15 @@ lpfc_hb_timeout(unsigned long ptr)
581 unsigned long iflag; 605 unsigned long iflag;
582 606
583 phba = (struct lpfc_hba *)ptr; 607 phba = (struct lpfc_hba *)ptr;
608
609 /* Check for heart beat timeout conditions */
584 spin_lock_irqsave(&phba->pport->work_port_lock, iflag); 610 spin_lock_irqsave(&phba->pport->work_port_lock, iflag);
585 tmo_posted = phba->pport->work_port_events & WORKER_HB_TMO; 611 tmo_posted = phba->pport->work_port_events & WORKER_HB_TMO;
586 if (!tmo_posted) 612 if (!tmo_posted)
587 phba->pport->work_port_events |= WORKER_HB_TMO; 613 phba->pport->work_port_events |= WORKER_HB_TMO;
588 spin_unlock_irqrestore(&phba->pport->work_port_lock, iflag); 614 spin_unlock_irqrestore(&phba->pport->work_port_lock, iflag);
589 615
616 /* Tell the worker thread there is work to do */
590 if (!tmo_posted) 617 if (!tmo_posted)
591 lpfc_worker_wake_up(phba); 618 lpfc_worker_wake_up(phba);
592 return; 619 return;
@@ -617,6 +644,7 @@ lpfc_hb_mbox_cmpl(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmboxq)
617 phba->hb_outstanding = 0; 644 phba->hb_outstanding = 0;
618 spin_unlock_irqrestore(&phba->hbalock, drvr_flag); 645 spin_unlock_irqrestore(&phba->hbalock, drvr_flag);
619 646
647 /* Check and reset heart-beat timer is necessary */
620 mempool_free(pmboxq, phba->mbox_mem_pool); 648 mempool_free(pmboxq, phba->mbox_mem_pool);
621 if (!(phba->pport->fc_flag & FC_OFFLINE_MODE) && 649 if (!(phba->pport->fc_flag & FC_OFFLINE_MODE) &&
622 !(phba->link_state == LPFC_HBA_ERROR) && 650 !(phba->link_state == LPFC_HBA_ERROR) &&
@@ -856,8 +884,8 @@ lpfc_handle_eratt(struct lpfc_hba *phba)
856 884
857 } else { 885 } else {
858 /* The if clause above forces this code path when the status 886 /* The if clause above forces this code path when the status
859 * failure is a value other than FFER6. Do not call the offline 887 * failure is a value other than FFER6. Do not call the offline
860 * twice. This is the adapter hardware error path. 888 * twice. This is the adapter hardware error path.
861 */ 889 */
862 lpfc_printf_log(phba, KERN_ERR, LOG_INIT, 890 lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
863 "0457 Adapter Hardware Error " 891 "0457 Adapter Hardware Error "
@@ -873,6 +901,7 @@ lpfc_handle_eratt(struct lpfc_hba *phba)
873 901
874 lpfc_offline_eratt(phba); 902 lpfc_offline_eratt(phba);
875 } 903 }
904 return;
876} 905}
877 906
878/** 907/**
@@ -1656,6 +1685,7 @@ lpfc_stop_phba_timers(struct lpfc_hba *phba)
1656 del_timer_sync(&phba->fabric_block_timer); 1685 del_timer_sync(&phba->fabric_block_timer);
1657 phba->hb_outstanding = 0; 1686 phba->hb_outstanding = 0;
1658 del_timer_sync(&phba->hb_tmofunc); 1687 del_timer_sync(&phba->hb_tmofunc);
1688 del_timer_sync(&phba->eratt_poll);
1659 return; 1689 return;
1660} 1690}
1661 1691
@@ -2172,30 +2202,97 @@ void lpfc_host_attrib_init(struct Scsi_Host *shost)
2172static int 2202static int
2173lpfc_enable_msix(struct lpfc_hba *phba) 2203lpfc_enable_msix(struct lpfc_hba *phba)
2174{ 2204{
2175 int error; 2205 int rc, i;
2206 LPFC_MBOXQ_t *pmb;
2176 2207
2177 phba->msix_entries[0].entry = 0; 2208 /* Set up MSI-X multi-message vectors */
2178 phba->msix_entries[0].vector = 0; 2209 for (i = 0; i < LPFC_MSIX_VECTORS; i++)
2210 phba->msix_entries[i].entry = i;
2179 2211
2180 error = pci_enable_msix(phba->pcidev, phba->msix_entries, 2212 /* Configure MSI-X capability structure */
2213 rc = pci_enable_msix(phba->pcidev, phba->msix_entries,
2181 ARRAY_SIZE(phba->msix_entries)); 2214 ARRAY_SIZE(phba->msix_entries));
2182 if (error) { 2215 if (rc) {
2183 lpfc_printf_log(phba, KERN_INFO, LOG_INIT, 2216 lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
2184 "0420 Enable MSI-X failed (%d), continuing " 2217 "0420 Enable MSI-X failed (%d), continuing "
2185 "with MSI\n", error); 2218 "with MSI\n", rc);
2186 pci_disable_msix(phba->pcidev); 2219 goto msi_fail_out;
2187 return error; 2220 } else
2221 for (i = 0; i < LPFC_MSIX_VECTORS; i++)
2222 lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
2223 "0477 MSI-X entry[%d]: vector=x%x "
2224 "message=%d\n", i,
2225 phba->msix_entries[i].vector,
2226 phba->msix_entries[i].entry);
2227 /*
2228 * Assign MSI-X vectors to interrupt handlers
2229 */
2230
2231 /* vector-0 is associated to slow-path handler */
2232 rc = request_irq(phba->msix_entries[0].vector, &lpfc_sp_intr_handler,
2233 IRQF_SHARED, LPFC_SP_DRIVER_HANDLER_NAME, phba);
2234 if (rc) {
2235 lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
2236 "0421 MSI-X slow-path request_irq failed "
2237 "(%d), continuing with MSI\n", rc);
2238 goto msi_fail_out;
2188 } 2239 }
2189 2240
2190 error = request_irq(phba->msix_entries[0].vector, lpfc_intr_handler, 0, 2241 /* vector-1 is associated to fast-path handler */
2191 LPFC_DRIVER_NAME, phba); 2242 rc = request_irq(phba->msix_entries[1].vector, &lpfc_fp_intr_handler,
2192 if (error) { 2243 IRQF_SHARED, LPFC_FP_DRIVER_HANDLER_NAME, phba);
2244
2245 if (rc) {
2193 lpfc_printf_log(phba, KERN_ERR, LOG_INIT, 2246 lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
2194 "0421 MSI-X request_irq failed (%d), " 2247 "0429 MSI-X fast-path request_irq failed "
2195 "continuing with MSI\n", error); 2248 "(%d), continuing with MSI\n", rc);
2196 pci_disable_msix(phba->pcidev); 2249 goto irq_fail_out;
2197 } 2250 }
2198 return error; 2251
2252 /*
2253 * Configure HBA MSI-X attention conditions to messages
2254 */
2255 pmb = (LPFC_MBOXQ_t *) mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL);
2256
2257 if (!pmb) {
2258 rc = -ENOMEM;
2259 lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
2260 "0474 Unable to allocate memory for issuing "
2261 "MBOX_CONFIG_MSI command\n");
2262 goto mem_fail_out;
2263 }
2264 rc = lpfc_config_msi(phba, pmb);
2265 if (rc)
2266 goto mbx_fail_out;
2267 rc = lpfc_sli_issue_mbox(phba, pmb, MBX_POLL);
2268 if (rc != MBX_SUCCESS) {
2269 lpfc_printf_log(phba, KERN_ERR, LOG_MBOX,
2270 "0351 Config MSI mailbox command failed, "
2271 "mbxCmd x%x, mbxStatus x%x\n",
2272 pmb->mb.mbxCommand, pmb->mb.mbxStatus);
2273 goto mbx_fail_out;
2274 }
2275
2276 /* Free memory allocated for mailbox command */
2277 mempool_free(pmb, phba->mbox_mem_pool);
2278 return rc;
2279
2280mbx_fail_out:
2281 /* Free memory allocated for mailbox command */
2282 mempool_free(pmb, phba->mbox_mem_pool);
2283
2284mem_fail_out:
2285 /* free the irq already requested */
2286 free_irq(phba->msix_entries[1].vector, phba);
2287
2288irq_fail_out:
2289 /* free the irq already requested */
2290 free_irq(phba->msix_entries[0].vector, phba);
2291
2292msi_fail_out:
2293 /* Unconfigure MSI-X capability structure */
2294 pci_disable_msix(phba->pcidev);
2295 return rc;
2199} 2296}
2200 2297
2201/** 2298/**
@@ -2208,7 +2305,12 @@ lpfc_enable_msix(struct lpfc_hba *phba)
2208static void 2305static void
2209lpfc_disable_msix(struct lpfc_hba *phba) 2306lpfc_disable_msix(struct lpfc_hba *phba)
2210{ 2307{
2211 free_irq(phba->msix_entries[0].vector, phba); 2308 int i;
2309
2310 /* Free up MSI-X multi-message vectors */
2311 for (i = 0; i < LPFC_MSIX_VECTORS; i++)
2312 free_irq(phba->msix_entries[i].vector, phba);
2313 /* Disable MSI-X */
2212 pci_disable_msix(phba->pcidev); 2314 pci_disable_msix(phba->pcidev);
2213} 2315}
2214 2316
@@ -2288,6 +2390,9 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
2288 init_timer(&phba->fabric_block_timer); 2390 init_timer(&phba->fabric_block_timer);
2289 phba->fabric_block_timer.function = lpfc_fabric_block_timeout; 2391 phba->fabric_block_timer.function = lpfc_fabric_block_timeout;
2290 phba->fabric_block_timer.data = (unsigned long) phba; 2392 phba->fabric_block_timer.data = (unsigned long) phba;
2393 init_timer(&phba->eratt_poll);
2394 phba->eratt_poll.function = lpfc_poll_eratt;
2395 phba->eratt_poll.data = (unsigned long) phba;
2291 2396
2292 pci_set_master(pdev); 2397 pci_set_master(pdev);
2293 pci_try_set_mwi(pdev); 2398 pci_try_set_mwi(pdev);
@@ -2307,7 +2412,7 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
2307 bar2map_len = pci_resource_len(phba->pcidev, 2); 2412 bar2map_len = pci_resource_len(phba->pcidev, 2);
2308 2413
2309 /* Map HBA SLIM to a kernel virtual address. */ 2414 /* Map HBA SLIM to a kernel virtual address. */
2310 phba->slim_memmap_p = ioremap(phba->pci_bar0_map, bar0map_len); 2415 phba->slim_memmap_p = ioremap(phba->pci_bar0_map, bar0map_len);
2311 if (!phba->slim_memmap_p) { 2416 if (!phba->slim_memmap_p) {
2312 error = -ENODEV; 2417 error = -ENODEV;
2313 dev_printk(KERN_ERR, &pdev->dev, 2418 dev_printk(KERN_ERR, &pdev->dev,
@@ -2405,7 +2510,7 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
2405 phba->fc_arbtov = FF_DEF_ARBTOV; 2510 phba->fc_arbtov = FF_DEF_ARBTOV;
2406 2511
2407 INIT_LIST_HEAD(&phba->work_list); 2512 INIT_LIST_HEAD(&phba->work_list);
2408 phba->work_ha_mask = (HA_ERATT|HA_MBATT|HA_LATT); 2513 phba->work_ha_mask = (HA_ERATT | HA_MBATT | HA_LATT);
2409 phba->work_ha_mask |= (HA_RXMASK << (LPFC_ELS_RING * 4)); 2514 phba->work_ha_mask |= (HA_RXMASK << (LPFC_ELS_RING * 4));
2410 2515
2411 /* Initialize the wait queue head for the kernel thread */ 2516 /* Initialize the wait queue head for the kernel thread */
@@ -2440,21 +2545,42 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
2440 pci_set_drvdata(pdev, shost); 2545 pci_set_drvdata(pdev, shost);
2441 phba->intr_type = NONE; 2546 phba->intr_type = NONE;
2442 2547
2548 phba->MBslimaddr = phba->slim_memmap_p;
2549 phba->HAregaddr = phba->ctrl_regs_memmap_p + HA_REG_OFFSET;
2550 phba->CAregaddr = phba->ctrl_regs_memmap_p + CA_REG_OFFSET;
2551 phba->HSregaddr = phba->ctrl_regs_memmap_p + HS_REG_OFFSET;
2552 phba->HCregaddr = phba->ctrl_regs_memmap_p + HC_REG_OFFSET;
2553
2554 /* Configure and enable interrupt */
2443 if (phba->cfg_use_msi == 2) { 2555 if (phba->cfg_use_msi == 2) {
2444 error = lpfc_enable_msix(phba); 2556 /* Need to issue conf_port mbox cmd before conf_msi mbox cmd */
2445 if (!error) 2557 error = lpfc_sli_config_port(phba, 3);
2446 phba->intr_type = MSIX; 2558 if (error)
2559 lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
2560 "0427 Firmware not capable of SLI 3 mode.\n");
2561 else {
2562 lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
2563 "0426 Firmware capable of SLI 3 mode.\n");
2564 /* Now, try to enable MSI-X interrupt mode */
2565 error = lpfc_enable_msix(phba);
2566 if (!error) {
2567 phba->intr_type = MSIX;
2568 lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
2569 "0430 enable MSI-X mode.\n");
2570 }
2571 }
2447 } 2572 }
2448 2573
2449 /* Fallback to MSI if MSI-X initialization failed */ 2574 /* Fallback to MSI if MSI-X initialization failed */
2450 if (phba->cfg_use_msi >= 1 && phba->intr_type == NONE) { 2575 if (phba->cfg_use_msi >= 1 && phba->intr_type == NONE) {
2451 retval = pci_enable_msi(phba->pcidev); 2576 retval = pci_enable_msi(phba->pcidev);
2452 if (!retval) 2577 if (!retval) {
2453 phba->intr_type = MSI; 2578 phba->intr_type = MSI;
2454 else
2455 lpfc_printf_log(phba, KERN_INFO, LOG_INIT, 2579 lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
2456 "0452 Enable MSI failed, continuing " 2580 "0473 enable MSI mode.\n");
2457 "with IRQ\n"); 2581 } else
2582 lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
2583 "0452 enable IRQ mode.\n");
2458 } 2584 }
2459 2585
2460 /* MSI-X is the only case the doesn't need to call request_irq */ 2586 /* MSI-X is the only case the doesn't need to call request_irq */
@@ -2470,18 +2596,16 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
2470 phba->intr_type = INTx; 2596 phba->intr_type = INTx;
2471 } 2597 }
2472 2598
2473 phba->MBslimaddr = phba->slim_memmap_p;
2474 phba->HAregaddr = phba->ctrl_regs_memmap_p + HA_REG_OFFSET;
2475 phba->CAregaddr = phba->ctrl_regs_memmap_p + CA_REG_OFFSET;
2476 phba->HSregaddr = phba->ctrl_regs_memmap_p + HS_REG_OFFSET;
2477 phba->HCregaddr = phba->ctrl_regs_memmap_p + HC_REG_OFFSET;
2478
2479 if (lpfc_alloc_sysfs_attr(vport)) { 2599 if (lpfc_alloc_sysfs_attr(vport)) {
2600 lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
2601 "1476 Failed to allocate sysfs attr\n");
2480 error = -ENOMEM; 2602 error = -ENOMEM;
2481 goto out_free_irq; 2603 goto out_free_irq;
2482 } 2604 }
2483 2605
2484 if (lpfc_sli_hba_setup(phba)) { 2606 if (lpfc_sli_hba_setup(phba)) {
2607 lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
2608 "1477 Failed to set up hba\n");
2485 error = -ENODEV; 2609 error = -ENODEV;
2486 goto out_remove_device; 2610 goto out_remove_device;
2487 } 2611 }
@@ -2500,6 +2624,8 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
2500 spin_unlock_irq(shost->host_lock); 2624 spin_unlock_irq(shost->host_lock);
2501 } 2625 }
2502 2626
2627 lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
2628 "0428 Perform SCSI scan\n");
2503 scsi_scan_host(shost); 2629 scsi_scan_host(shost);
2504 2630
2505 return 0; 2631 return 0;
@@ -2732,20 +2858,34 @@ static pci_ers_result_t lpfc_io_slot_reset(struct pci_dev *pdev)
2732 /* Enable configured interrupt method */ 2858 /* Enable configured interrupt method */
2733 phba->intr_type = NONE; 2859 phba->intr_type = NONE;
2734 if (phba->cfg_use_msi == 2) { 2860 if (phba->cfg_use_msi == 2) {
2735 error = lpfc_enable_msix(phba); 2861 /* Need to issue conf_port mbox cmd before conf_msi mbox cmd */
2736 if (!error) 2862 error = lpfc_sli_config_port(phba, 3);
2737 phba->intr_type = MSIX; 2863 if (error)
2864 lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
2865 "0478 Firmware not capable of SLI 3 mode.\n");
2866 else {
2867 lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
2868 "0479 Firmware capable of SLI 3 mode.\n");
2869 /* Now, try to enable MSI-X interrupt mode */
2870 error = lpfc_enable_msix(phba);
2871 if (!error) {
2872 phba->intr_type = MSIX;
2873 lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
2874 "0480 enable MSI-X mode.\n");
2875 }
2876 }
2738 } 2877 }
2739 2878
2740 /* Fallback to MSI if MSI-X initialization failed */ 2879 /* Fallback to MSI if MSI-X initialization failed */
2741 if (phba->cfg_use_msi >= 1 && phba->intr_type == NONE) { 2880 if (phba->cfg_use_msi >= 1 && phba->intr_type == NONE) {
2742 retval = pci_enable_msi(phba->pcidev); 2881 retval = pci_enable_msi(phba->pcidev);
2743 if (!retval) 2882 if (!retval) {
2744 phba->intr_type = MSI; 2883 phba->intr_type = MSI;
2745 else
2746 lpfc_printf_log(phba, KERN_INFO, LOG_INIT, 2884 lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
2747 "0470 Enable MSI failed, continuing " 2885 "0481 enable MSI mode.\n");
2748 "with IRQ\n"); 2886 } else
2887 lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
2888 "0470 enable IRQ mode.\n");
2749 } 2889 }
2750 2890
2751 /* MSI-X is the only case the doesn't need to call request_irq */ 2891 /* MSI-X is the only case the doesn't need to call request_irq */