linux_dsm_epyc7002/drivers/scsi/lpfc
James Smart 79d8c4ce01 scsi: lpfc: Fix nvmet handling of received ABTS for unmapped frames
The driver currently is relying on firmware to match ABTSs to existing
exchanges. This works fine as long as an exchange has been assigned to the
io and work posted to it. However, for unmapped frames (rxid=0xFFFF), the
driver has yet to assign an xri. The driver was blindly saying it couldn't
match the ABTS and sending the BA_xxx. However, the command frame may have
been in queues waiting on xri's before posting to the nvmet_fc layer.  When
xri's became available, the command frame would still be pushed to the
transport and that io would execute, even though the io had been killed by
ABTS. The initiator, seeing the io ABTS'd, would reuse the exchange for a
different io which would be received on the target and pushed up. If the
"zombie" io then came back down and started transmitting, the initiator
would match the oxid and accept erroneous data. Bad things happened.

Add tracking of active exchanges in the target to allow matching of a
received ABTS against active or pending IO requests. If the ABTS is matched
to a pending or active IO, the drive initiates cleanup and conditionally
notifies the transport.

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-06-18 19:46:21 -04:00
..
lpfc_attr.c scsi: lpfc: Move trunk_errmsg[] from a header file into a .c file 2019-04-03 23:11:36 -04:00
lpfc_attr.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_bsg.c scsi: lpfc: Update Copyright in driver version 2019-03-19 13:15:10 -04:00
lpfc_bsg.h scsi: lpfc: Update Copyright in driver version 2019-03-19 13:15:10 -04:00
lpfc_compat.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_crtn.h scsi: lpfc: Separate CQ processing for nvmet_fc upcalls 2019-06-18 19:46:21 -04:00
lpfc_ct.c scsi: lpfc: Annotate switch/case fall-through 2019-04-03 23:11:35 -04:00
lpfc_debugfs.c scsi: lpfc: change snprintf to scnprintf for possible overflow 2019-03-25 22:14:16 -04:00
lpfc_debugfs.h scsi: lpfc: change snprintf to scnprintf for possible overflow 2019-03-25 22:14:16 -04:00
lpfc_disc.h scsi: lpfc: Fix discovery failures during port failovers with lots of vports 2018-12-07 22:35:32 -05:00
lpfc_els.c scsi: lpfc: add support for posting FC events on FPIN reception 2019-04-08 21:29:16 -04:00
lpfc_hbadisc.c scsi: scsi_transport_fc: nvme: display FC-NVMe port roles 2019-04-12 20:09:34 -04:00
lpfc_hw4.h scsi: lpfc: Move trunk_errmsg[] from a header file into a .c file 2019-04-03 23:11:36 -04:00
lpfc_hw.h scsi: lpfc: add support for posting FC events on FPIN reception 2019-04-08 21:29:16 -04:00
lpfc_ids.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_init.c scsi: lpfc: Fix nvmet handling of received ABTS for unmapped frames 2019-06-18 19:46:21 -04:00
lpfc_logmsg.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_mbox.c SCSI misc on 20190306 2019-03-09 16:53:47 -08:00
lpfc_mem.c scsi: lpfc: refactor mailbox structure context fields 2018-12-07 22:35:32 -05:00
lpfc_nl.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_nportdisc.c scsi: lpfc: Remove set-but-not-used variables 2019-04-03 23:11:36 -04:00
lpfc_nvme.c scsi: lpfc: Revise message when stuck due to unresponsive adapter 2019-06-18 19:46:21 -04:00
lpfc_nvme.h SCSI misc on 20190306 2019-03-09 16:53:47 -08:00
lpfc_nvmet.c scsi: lpfc: Fix nvmet handling of received ABTS for unmapped frames 2019-06-18 19:46:21 -04:00
lpfc_nvmet.h scsi: lpfc: Fix nvmet handling of received ABTS for unmapped frames 2019-06-18 19:46:21 -04:00
lpfc_scsi.c scsi: lpfc: Fix alloc context on oas lun creations 2019-06-18 19:46:20 -04:00
lpfc_scsi.h scsi: lpfc: Update 12.2.0.0 file copyrights to 2019 2019-02-05 22:29:50 -05:00
lpfc_sli4.h scsi: lpfc: Fix nvmet handling of received ABTS for unmapped frames 2019-06-18 19:46:21 -04:00
lpfc_sli.c scsi: lpfc: Separate CQ processing for nvmet_fc upcalls 2019-06-18 19:46:21 -04:00
lpfc_sli.h scsi: lpfc: Coordinate adapter error handling with offline handling 2019-03-19 12:57:02 -04:00
lpfc_version.h scsi: lpfc: Update lpfc version to 12.2.0.1 2019-03-19 13:15:10 -04:00
lpfc_vport.c scsi: lpfc: Update 12.2.0.0 file copyrights to 2019 2019-02-05 22:29:50 -05:00
lpfc_vport.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc.h scsi: lpfc: Correct boot bios information to FDMI registration 2019-03-19 13:15:09 -04:00
Makefile scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00