scsi: mpt3sas: Support MEMORY MOVE Tool box command
authorSuganath Prabu <suganath-prabu.subramani@broadcom.com>
Sat, 3 Aug 2019 13:59:52 +0000 (09:59 -0400)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 8 Aug 2019 02:46:51 +0000 (22:46 -0400)
commitba630ea068d7cb593ae3bb7085846c5a137d10a6
tree4eb46ce5a303c59a709c494ea4f114a93d1782cd
parent3c090ce3f0fba1efb44eb9317ebf8e8150197a21
scsi: mpt3sas: Support MEMORY MOVE Tool box command

Host uses the Memory Move Tool to copy data from any source/destination
combination of system memory and IOC memory.

Memory Move Tool box request contains two SGE fields, First SGE field must
contains the source buffer details described by an MPI Simple SGE.  The
second SGE field must contains the destination buffer details described by
an MPI Simple SGE.

 Source   ->   Destination

1. IOC    ->   IOC    (Both the SGE's will be filled by application)

2. HOST   ->   HOST   (Both the SGE's will be filled by the host,
               application should give sgl_offset to first SGE offset)

3. IOC    ->   HOST   (Application will fill the first SGE and set the
               sgl_offset to second SGE and hence driver fills
               the second SGE)
4. HOST   ->   IOC    (Application will fill IOC buffer information in the
               first SGE and set the sgl_offset to second SGE.
               Then driver will fill the second SGE with Host buffer
               information and just before posting the command to the
               firmware, driver will swap these two SGEs so that first
               SGE contains the HOST buffer information and second SGE
               contains the IOC information.

Driver has to take care only of the 4th case, other three cases are by
default supported by the current driver design.

Signed-off-by: Suganath Prabu <suganath-prabu.subramani@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/mpt3sas/mpt3sas_ctl.c