1
linux/drivers/scsi/libfc
Yi Zou a752359f2b [SCSI] libfc: fix sending REC after FCP_RESP is received
This is exposed in the case the FCP_DATA frames somehow got lost and fc_fcp got
the FCP_RSP, in fc_fcp_recv_resp(), since xfer_len is less than the expected_len
it resets the the timer to wait to 2 more jiffies in case the data frames are
already queued locally. However, for target does not support REC, it would just
send RJT w/ ELS_RJT_UNSUP. The rec response handler thus only clears the rport
flag for not doing REC later, but does not do fcp_io_complete() on the
associated fsp.

The fix is just check status of FCP_RSP being received already, i.e. using the
FC_SRB_RCV_STATUS flag, in fc_fcp_timeout before start sending REC. We should
have waited long enough if there is truely data frames queued locally.

Signed-off-by: Yi Zou <yi.zou@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
2012-07-20 08:58:56 +01:00
..
fc_disc.c [SCSI] libfc: Handle discovery failure during ctlr link down 2012-02-19 09:27:26 -06:00
fc_elsct.c [SCSI] libfc: Make the libfc Common Transport(CT) code generic 2012-02-19 08:08:58 -06:00
fc_exch.c [SCSI] libfc: add exch timer debug info 2012-07-20 08:58:55 +01:00
fc_fcp.c [SCSI] libfc: fix sending REC after FCP_RESP is received 2012-07-20 08:58:56 +01:00
fc_frame.c [SCSI] libfc, fcoe, bnx2fc: cleanup fcoe_dev_stats 2012-07-20 08:31:47 +01:00
fc_libfc.c scsi: remove the second argument of k[un]map_atomic() 2012-03-20 21:48:19 +08:00
fc_libfc.h scsi: remove the second argument of k[un]map_atomic() 2012-03-20 21:48:19 +08:00
fc_lport.c [SCSI] libfc: fix retries with FDMI lport states 2012-07-20 08:58:56 +01:00
fc_npiv.c scsi: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:31:23 -04:00
fc_rport.c [SCSI] libfc: Declare local functions static 2012-01-16 12:45:48 +04:00
Makefile