diff options
author | James Smart <James.Smart@Emulex.Com> | 2008-08-24 21:49:55 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-10-13 09:28:53 -0400 |
commit | 34b02dcdcf1865405f4762b991965c0c3b8a3ae0 (patch) | |
tree | 00829334c2813d30e574a5f1290fbf7dd210d1cb /drivers/scsi/lpfc/lpfc_init.c | |
parent | 90160e010b6f3a91a9bb044bbe6723731e6f366c (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.c | 28 |
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); |
2515 | out_free_hbqslimp: | 2521 | out_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); |
2518 | out_free_slim: | 2524 | out_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); |
2521 | out_iounmap: | 2527 | out_iounmap: |
2522 | iounmap(phba->ctrl_regs_memmap_p); | 2528 | iounmap(phba->ctrl_regs_memmap_p); |
2523 | out_iounmap_slim: | 2529 | out_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); |