diff options
author | James Smart <james.smart@emulex.com> | 2010-02-12 14:42:03 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-02-17 18:40:48 -0500 |
commit | 28baac7492fa084dbff6a1b9c4b42ed0d014b558 (patch) | |
tree | dcf6dc190d0b85153eb8606b64f83089fae8084f /drivers/scsi/lpfc/lpfc_scsi.c | |
parent | ecfd03c6a99ad98fea5cb75ec83cd9945adff8d9 (diff) |
[SCSI] lpfc 8.3.9: SLI enhancments to support new hardware.
- Add support for the INTF (Interface) PCI register.
- Add support for greater than 2 page SGLs.
- Add support for up to 32 bit BDE lengths.
- Implement the Port Capabilities Mailbox command.
- Stop checking the Minor Code in the EQE structure.
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_scsi.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_scsi.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c index 8f4b90a9d151..8e98c6335e00 100644 --- a/drivers/scsi/lpfc/lpfc_scsi.c +++ b/drivers/scsi/lpfc/lpfc_scsi.c | |||
@@ -798,19 +798,17 @@ lpfc_new_scsi_buf_s4(struct lpfc_vport *vport, int num_to_alloc) | |||
798 | */ | 798 | */ |
799 | sgl->addr_hi = cpu_to_le32(putPaddrHigh(pdma_phys_fcp_cmd)); | 799 | sgl->addr_hi = cpu_to_le32(putPaddrHigh(pdma_phys_fcp_cmd)); |
800 | sgl->addr_lo = cpu_to_le32(putPaddrLow(pdma_phys_fcp_cmd)); | 800 | sgl->addr_lo = cpu_to_le32(putPaddrLow(pdma_phys_fcp_cmd)); |
801 | bf_set(lpfc_sli4_sge_len, sgl, sizeof(struct fcp_cmnd)); | ||
802 | bf_set(lpfc_sli4_sge_last, sgl, 0); | 801 | bf_set(lpfc_sli4_sge_last, sgl, 0); |
803 | sgl->word2 = cpu_to_le32(sgl->word2); | 802 | sgl->word2 = cpu_to_le32(sgl->word2); |
804 | sgl->word3 = cpu_to_le32(sgl->word3); | 803 | sgl->sge_len = cpu_to_le32(sizeof(struct fcp_cmnd)); |
805 | sgl++; | 804 | sgl++; |
806 | 805 | ||
807 | /* Setup the physical region for the FCP RSP */ | 806 | /* Setup the physical region for the FCP RSP */ |
808 | sgl->addr_hi = cpu_to_le32(putPaddrHigh(pdma_phys_fcp_rsp)); | 807 | sgl->addr_hi = cpu_to_le32(putPaddrHigh(pdma_phys_fcp_rsp)); |
809 | sgl->addr_lo = cpu_to_le32(putPaddrLow(pdma_phys_fcp_rsp)); | 808 | sgl->addr_lo = cpu_to_le32(putPaddrLow(pdma_phys_fcp_rsp)); |
810 | bf_set(lpfc_sli4_sge_len, sgl, sizeof(struct fcp_rsp)); | ||
811 | bf_set(lpfc_sli4_sge_last, sgl, 1); | 809 | bf_set(lpfc_sli4_sge_last, sgl, 1); |
812 | sgl->word2 = cpu_to_le32(sgl->word2); | 810 | sgl->word2 = cpu_to_le32(sgl->word2); |
813 | sgl->word3 = cpu_to_le32(sgl->word3); | 811 | sgl->sge_len = cpu_to_le32(sizeof(struct fcp_rsp)); |
814 | 812 | ||
815 | /* | 813 | /* |
816 | * Since the IOCB for the FCP I/O is built into this | 814 | * Since the IOCB for the FCP I/O is built into this |
@@ -1872,7 +1870,6 @@ lpfc_scsi_prep_dma_buf_s4(struct lpfc_hba *phba, struct lpfc_scsi_buf *lpfc_cmd) | |||
1872 | scsi_for_each_sg(scsi_cmnd, sgel, nseg, num_bde) { | 1870 | scsi_for_each_sg(scsi_cmnd, sgel, nseg, num_bde) { |
1873 | physaddr = sg_dma_address(sgel); | 1871 | physaddr = sg_dma_address(sgel); |
1874 | dma_len = sg_dma_len(sgel); | 1872 | dma_len = sg_dma_len(sgel); |
1875 | bf_set(lpfc_sli4_sge_len, sgl, sg_dma_len(sgel)); | ||
1876 | sgl->addr_lo = cpu_to_le32(putPaddrLow(physaddr)); | 1873 | sgl->addr_lo = cpu_to_le32(putPaddrLow(physaddr)); |
1877 | sgl->addr_hi = cpu_to_le32(putPaddrHigh(physaddr)); | 1874 | sgl->addr_hi = cpu_to_le32(putPaddrHigh(physaddr)); |
1878 | if ((num_bde + 1) == nseg) | 1875 | if ((num_bde + 1) == nseg) |
@@ -1881,7 +1878,7 @@ lpfc_scsi_prep_dma_buf_s4(struct lpfc_hba *phba, struct lpfc_scsi_buf *lpfc_cmd) | |||
1881 | bf_set(lpfc_sli4_sge_last, sgl, 0); | 1878 | bf_set(lpfc_sli4_sge_last, sgl, 0); |
1882 | bf_set(lpfc_sli4_sge_offset, sgl, dma_offset); | 1879 | bf_set(lpfc_sli4_sge_offset, sgl, dma_offset); |
1883 | sgl->word2 = cpu_to_le32(sgl->word2); | 1880 | sgl->word2 = cpu_to_le32(sgl->word2); |
1884 | sgl->word3 = cpu_to_le32(sgl->word3); | 1881 | sgl->sge_len = cpu_to_le32(dma_len); |
1885 | dma_offset += dma_len; | 1882 | dma_offset += dma_len; |
1886 | sgl++; | 1883 | sgl++; |
1887 | } | 1884 | } |