This converts ipr to use the data buffer accessors.
Signed-off-by: FUJITA Tomonori <[EMAIL PROTECTED]>
---
drivers/scsi/ipr.c | 26 ++++++++------------------
1 files changed, 8 insertions(+), 18 deletions(-)
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index 8390bce..8002ecc 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -550,12 +550,7 @@ struct ipr_cmnd *ipr_get_free_ipr_cmnd(s
static void ipr_unmap_sglist(struct ipr_ioa_cfg *ioa_cfg,
struct ipr_cmnd *ipr_cmd)
{
- struct scsi_cmnd *scsi_cmd = ipr_cmd->scsi_cmd;
-
- if (ipr_cmd->dma_use_sg)
- pci_unmap_sg(ioa_cfg->pdev, scsi_cmd->request_buffer,
- scsi_cmd->use_sg,
- scsi_cmd->sc_data_direction);
+ scsi_dma_unmap(&ioa_cfg->pdev->dev, ipr_cmd->scsi_cmd);
}
/**
@@ -4279,20 +4274,18 @@ static int ipr_build_ioadl(struct ipr_io
struct ipr_cmnd *ipr_cmd)
{
int i, nseg;
- struct scatterlist *sglist;
+ struct scatterlist *sg;
u32 length;
u32 ioadl_flags = 0;
struct scsi_cmnd *scsi_cmd = ipr_cmd->scsi_cmd;
struct ipr_ioarcb *ioarcb = &ipr_cmd->ioarcb;
struct ipr_ioadl_desc *ioadl = ipr_cmd->ioadl;
- length = scsi_cmd->request_bufflen;
+ length = scsi_bufflen(scsi_cmd);
if (!length)
return 0;
- nseg = pci_map_sg(ioa_cfg->pdev, scsi_cmd->request_buffer,
- scsi_cmd->use_sg, scsi_cmd->sc_data_direction);
-
+ nseg = scsi_dma_map(&ioa_cfg->pdev->dev, scsi_cmd);
if (nseg < 0) {
dev_err(&ioa_cfg->pdev->dev, "pci_map_sg failed!\n");
return -1;
@@ -4313,8 +4306,6 @@ static int ipr_build_ioadl(struct ipr_io
cpu_to_be32(sizeof(struct ipr_ioadl_desc) *
ipr_cmd->dma_use_sg);
}
- sglist = scsi_cmd->request_buffer;
-
if (ipr_cmd->dma_use_sg <= ARRAY_SIZE(ioarcb->add_data.u.ioadl)) {
ioadl = ioarcb->add_data.u.ioadl;
ioarcb->write_ioadl_addr =
@@ -4323,11 +4314,10 @@ static int ipr_build_ioadl(struct ipr_io
ioarcb->read_ioadl_addr = ioarcb->write_ioadl_addr;
}
- for (i = 0; i < ipr_cmd->dma_use_sg; i++) {
+ scsi_for_each_sg(scsi_cmd, sg, ipr_cmd->dma_use_sg, i) {
ioadl[i].flags_and_data_len =
- cpu_to_be32(ioadl_flags | sg_dma_len(&sglist[i]));
- ioadl[i].address =
- cpu_to_be32(sg_dma_address(&sglist[i]));
+ cpu_to_be32(ioadl_flags | sg_dma_len(sg));
+ ioadl[i].address = cpu_to_be32(sg_dma_address(sg));
}
ioadl[i-1].flags_and_data_len |= cpu_to_be32(IPR_IOADL_FLAGS_LAST);
@@ -4793,7 +4783,7 @@ static void ipr_scsi_done(struct ipr_cmn
struct scsi_cmnd *scsi_cmd = ipr_cmd->scsi_cmd;
u32 ioasc = be32_to_cpu(ipr_cmd->ioasa.ioasc);
- scsi_cmd->resid = be32_to_cpu(ipr_cmd->ioasa.residual_data_len);
+ scsi_resid(scsi_cmd) = be32_to_cpu(ipr_cmd->ioasa.residual_data_len);
if (likely(IPR_IOASC_SENSE_KEY(ioasc) == 0)) {
ipr_unmap_sglist(ioa_cfg, ipr_cmd);
--
1.4.3.2
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html