lpfc: support nvmet_fc defer_rcv callback
authorJames Smart <jsmart2021@gmail.com>
Tue, 1 Aug 2017 22:12:40 +0000 (15:12 -0700)
committerChristoph Hellwig <hch@lst.de>
Thu, 10 Aug 2017 09:19:05 +0000 (11:19 +0200)
commit507384209371fc25cab203b95e7bdf50e58b47d5
treed7b2edc74a7cb6bde44454365610f4175d534981
parent0fb228d30b8d72bfee51f57e638d412324d44a11
lpfc: support nvmet_fc defer_rcv callback

Currently, calls to nvmet_fc_rcv_fcp_req() always copied the
FC-NVME cmd iu to a temporary buffer before returning, allowing
the driver to immediately repost the buffer to the hardware.

To address timing conditions on queue element structures vs async
command reception, the nvmet_fc transport occasionally may need to
hold on to the command iu buffer for a short period. In these cases,
the nvmet_fc_rcv_fcp_req() will return a special return code
(-EOVERFLOW). In these cases, the LLDD must delay until the new
defer_rcv lldd callback is called before recycling the buffer back
to the hw.

This patch adds support for the new nvmet_fc transport defer_rcv
callback and recognition of the new error code when passing commands
to the transport.

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/scsi/lpfc/lpfc_attr.c
drivers/scsi/lpfc/lpfc_debugfs.c
drivers/scsi/lpfc/lpfc_nvmet.c
drivers/scsi/lpfc/lpfc_nvmet.h