aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_init.c
diff options
context:
space:
mode:
authorJames Smart <James.Smart@Emulex.Com>2008-08-24 21:49:55 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-10-13 09:28:53 -0400
commit34b02dcdcf1865405f4762b991965c0c3b8a3ae0 (patch)
tree00829334c2813d30e574a5f1290fbf7dd210d1cb /drivers/scsi/lpfc/lpfc_init.c
parent90160e010b6f3a91a9bb044bbe6723731e6f366c (diff)
[SCSI] lpfc 8.2.8 : Update driver for new SLI-3 features
Update driver for new SLI-3 features: - interrupt enhancements - lose adapter doorbell writes - inlining support for FCP_Ixx cmds 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.c28
1 files changed, 17 insertions, 11 deletions
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index 93fd09daca87..6a7a039e8904 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -2312,12 +2312,18 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
2312 } 2312 }
2313 2313
2314 /* Allocate memory for SLI-2 structures */ 2314 /* Allocate memory for SLI-2 structures */
2315 phba->slim2p = dma_alloc_coherent(&phba->pcidev->dev, SLI2_SLIM_SIZE, 2315 phba->slim2p.virt = dma_alloc_coherent(&phba->pcidev->dev,
2316 &phba->slim2p_mapping, GFP_KERNEL); 2316 SLI2_SLIM_SIZE,
2317 if (!phba->slim2p) 2317 &phba->slim2p.phys,
2318 GFP_KERNEL);
2319 if (!phba->slim2p.virt)
2318 goto out_iounmap; 2320 goto out_iounmap;
2319 2321
2320 memset(phba->slim2p, 0, SLI2_SLIM_SIZE); 2322 memset(phba->slim2p.virt, 0, SLI2_SLIM_SIZE);
2323 phba->mbox = phba->slim2p.virt;
2324 phba->pcb = (phba->slim2p.virt + sizeof(MAILBOX_t));
2325 phba->IOCBs = (phba->slim2p.virt + sizeof(MAILBOX_t) +
2326 sizeof(struct _PCB));
2321 2327
2322 phba->hbqslimp.virt = dma_alloc_coherent(&phba->pcidev->dev, 2328 phba->hbqslimp.virt = dma_alloc_coherent(&phba->pcidev->dev,
2323 lpfc_sli_hbq_size(), 2329 lpfc_sli_hbq_size(),
@@ -2513,11 +2519,11 @@ out_free_iocbq:
2513 } 2519 }
2514 lpfc_mem_free(phba); 2520 lpfc_mem_free(phba);
2515out_free_hbqslimp: 2521out_free_hbqslimp:
2516 dma_free_coherent(&pdev->dev, lpfc_sli_hbq_size(), phba->hbqslimp.virt, 2522 dma_free_coherent(&pdev->dev, lpfc_sli_hbq_size(),
2517 phba->hbqslimp.phys); 2523 phba->hbqslimp.virt, phba->hbqslimp.phys);
2518out_free_slim: 2524out_free_slim:
2519 dma_free_coherent(&pdev->dev, SLI2_SLIM_SIZE, phba->slim2p, 2525 dma_free_coherent(&pdev->dev, SLI2_SLIM_SIZE,
2520 phba->slim2p_mapping); 2526 phba->slim2p.virt, phba->slim2p.phys);
2521out_iounmap: 2527out_iounmap:
2522 iounmap(phba->ctrl_regs_memmap_p); 2528 iounmap(phba->ctrl_regs_memmap_p);
2523out_iounmap_slim: 2529out_iounmap_slim:
@@ -2599,12 +2605,12 @@ lpfc_pci_remove_one(struct pci_dev *pdev)
2599 lpfc_scsi_free(phba); 2605 lpfc_scsi_free(phba);
2600 lpfc_mem_free(phba); 2606 lpfc_mem_free(phba);
2601 2607
2602 dma_free_coherent(&pdev->dev, lpfc_sli_hbq_size(), phba->hbqslimp.virt, 2608 dma_free_coherent(&pdev->dev, lpfc_sli_hbq_size(),
2603 phba->hbqslimp.phys); 2609 phba->hbqslimp.virt, phba->hbqslimp.phys);
2604 2610
2605 /* Free resources associated with SLI2 interface */ 2611 /* Free resources associated with SLI2 interface */
2606 dma_free_coherent(&pdev->dev, SLI2_SLIM_SIZE, 2612 dma_free_coherent(&pdev->dev, SLI2_SLIM_SIZE,
2607 phba->slim2p, phba->slim2p_mapping); 2613 phba->slim2p.virt, phba->slim2p.phys);
2608 2614
2609 /* unmap adapter SLIM and Control Registers */ 2615 /* unmap adapter SLIM and Control Registers */
2610 iounmap(phba->ctrl_regs_memmap_p); 2616 iounmap(phba->ctrl_regs_memmap_p);