[SCSI] eata: convert to use the data buffer accessors

- remove the unnecessary map_single path.

- convert to use the new accessors for the sg lists and the
parameters.

Jens Axboe <jens.axboe@oracle.com> did the for_each_sg cleanup.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
FUJITA Tomonori 2007-05-14 20:21:16 +09:00 committed by James Bottomley
parent a258c85d08
commit 58e2a02eb1

View file

@ -1609,8 +1609,9 @@ static int eata2x_detect(struct scsi_host_template *tpnt)
static void map_dma(unsigned int i, struct hostdata *ha) static void map_dma(unsigned int i, struct hostdata *ha)
{ {
unsigned int k, count, pci_dir; unsigned int k, pci_dir;
struct scatterlist *sgpnt; int count;
struct scatterlist *sg;
struct mscp *cpp; struct mscp *cpp;
struct scsi_cmnd *SCpnt; struct scsi_cmnd *SCpnt;
@ -1625,38 +1626,19 @@ static void map_dma(unsigned int i, struct hostdata *ha)
cpp->sense_len = sizeof SCpnt->sense_buffer; cpp->sense_len = sizeof SCpnt->sense_buffer;
if (!SCpnt->use_sg) { count = scsi_dma_map(SCpnt);
BUG_ON(count < 0);
/* If we get here with PCI_DMA_NONE, pci_map_single triggers a BUG() */ scsi_for_each_sg(SCpnt, sg, count, k) {
if (!SCpnt->request_bufflen) cpp->sglist[k].address = H2DEV(sg_dma_address(sg));
pci_dir = PCI_DMA_BIDIRECTIONAL; cpp->sglist[k].num_bytes = H2DEV(sg_dma_len(sg));
if (SCpnt->request_buffer)
cpp->data_address = H2DEV(pci_map_single(ha->pdev,
SCpnt->
request_buffer,
SCpnt->
request_bufflen,
pci_dir));
cpp->data_len = H2DEV(SCpnt->request_bufflen);
return;
}
sgpnt = (struct scatterlist *)SCpnt->request_buffer;
count = pci_map_sg(ha->pdev, sgpnt, SCpnt->use_sg, pci_dir);
for (k = 0; k < count; k++) {
cpp->sglist[k].address = H2DEV(sg_dma_address(&sgpnt[k]));
cpp->sglist[k].num_bytes = H2DEV(sg_dma_len(&sgpnt[k]));
} }
cpp->sg = 1; cpp->sg = 1;
cpp->data_address = H2DEV(pci_map_single(ha->pdev, cpp->sglist, cpp->data_address = H2DEV(pci_map_single(ha->pdev, cpp->sglist,
SCpnt->use_sg * scsi_sg_count(SCpnt) *
sizeof(struct sg_list), sizeof(struct sg_list),
pci_dir)); pci_dir));
cpp->data_len = H2DEV((SCpnt->use_sg * sizeof(struct sg_list))); cpp->data_len = H2DEV((scsi_sg_count(SCpnt) * sizeof(struct sg_list)));
} }
static void unmap_dma(unsigned int i, struct hostdata *ha) static void unmap_dma(unsigned int i, struct hostdata *ha)
@ -1673,9 +1655,7 @@ static void unmap_dma(unsigned int i, struct hostdata *ha)
pci_unmap_single(ha->pdev, DEV2H(cpp->sense_addr), pci_unmap_single(ha->pdev, DEV2H(cpp->sense_addr),
DEV2H(cpp->sense_len), PCI_DMA_FROMDEVICE); DEV2H(cpp->sense_len), PCI_DMA_FROMDEVICE);
if (SCpnt->use_sg) scsi_dma_unmap(SCpnt);
pci_unmap_sg(ha->pdev, SCpnt->request_buffer, SCpnt->use_sg,
pci_dir);
if (!DEV2H(cpp->data_len)) if (!DEV2H(cpp->data_len))
pci_dir = PCI_DMA_BIDIRECTIONAL; pci_dir = PCI_DMA_BIDIRECTIONAL;
@ -1700,9 +1680,9 @@ static void sync_dma(unsigned int i, struct hostdata *ha)
DEV2H(cpp->sense_len), DEV2H(cpp->sense_len),
PCI_DMA_FROMDEVICE); PCI_DMA_FROMDEVICE);
if (SCpnt->use_sg) if (scsi_sg_count(SCpnt))
pci_dma_sync_sg_for_cpu(ha->pdev, SCpnt->request_buffer, pci_dma_sync_sg_for_cpu(ha->pdev, scsi_sglist(SCpnt),
SCpnt->use_sg, pci_dir); scsi_sg_count(SCpnt), pci_dir);
if (!DEV2H(cpp->data_len)) if (!DEV2H(cpp->data_len))
pci_dir = PCI_DMA_BIDIRECTIONAL; pci_dir = PCI_DMA_BIDIRECTIONAL;