summaryrefslogtreecommitdiff
path: root/drivers/block
diff options
context:
space:
mode:
authorTang Yuantian <Yuantian.Tang@freescale.com>2015-03-31 15:02:43 +0800
committerTom Rini <trini@konsulko.com>2015-04-07 08:41:10 -0400
commit8f6e18385a5afd9aa6d63e5ea3f7658193087851 (patch)
treec7e7a90db3311d8eab9505dd068e33f35eb4e148 /drivers/block
parent5e8397dd94a1b55cd7577cdc24f271b71f660e7e (diff)
ahci: Fix a wrong parameter pass
In stead of user_buffer_size, transfer_size should be used to pass to ahci_device_data_io(). transfer_size is the length that we want the low level function to transfer each time. If we use user_buffer_size which is the totally data length as parameter, low level function will actually create many SGs to transfer as many data as possible each time. That will produce many redundant data transfer. Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers/block')
-rw-r--r--drivers/block/ahci.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/block/ahci.c b/drivers/block/ahci.c
index c908fab450..88b90e0203 100644
--- a/drivers/block/ahci.c
+++ b/drivers/block/ahci.c
@@ -785,7 +785,7 @@ static int ata_scsiop_read_write(ccb *pccb, u8 is_write)
/* Read/Write from ahci */
if (ahci_device_data_io(pccb->target, (u8 *) &fis, sizeof(fis),
- user_buffer, user_buffer_size,
+ user_buffer, transfer_size,
is_write)) {
debug("scsi_ahci: SCSI %s10 command failure.\n",
is_write ? "WRITE" : "READ");