[SCSI] libfc: rport retry on LS_RJT from certain ELS
authorChris Leech <christopher.leech@intel.com>
Fri, 27 Feb 2009 18:55:02 +0000 (10:55 -0800)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Fri, 6 Mar 2009 21:39:34 +0000 (15:39 -0600)
commit6755db1cd4587084be85f860b7aa7c0cc9d776dc
treecdc50e934f61d73a7aa8f5fdc5c454e0375071b9
parentbc0e17f691085315ae9303eb5b0883fe16dfe6b1
[SCSI] libfc: rport retry on LS_RJT from certain ELS

This allows any rport ELS to retry on LS_RJT.

The rport error handling would only retry on resource allocation failures
and exchange timeouts.  I have a target that will occasionally reject PLOGI
when we do a quick LOGO/PLOGI.  When a critical ELS was rejected, libfc would
fail silently leaving the rport in a dead state.

The retry count and delay are managed by fc_rport_error_retry.  If the retry
count is exceeded fc_rport_error will be called.  When retrying is not the
correct course of action, fc_rport_error can be called directly.

Signed-off-by: Chris Leech <christopher.leech@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/libfc/fc_exch.c
drivers/scsi/libfc/fc_rport.c
include/scsi/fc/fc_fs.h