Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[SCSI] libfc: fix retries with FDMI lport states

The FC-GS-3 sepc requires to wait for least 3 times R_A_TOV per
sec 4.6.1 "If the Requesting_CT does not receive a Response
CT_IU from the Responding_CT within three times R_A_TOV,
it shall consider this to be a protocol error."

This means added four new states with management server
could add significant delay with multiple retries
on default 12 second timeout(3 * R_A_TOV), so instead
just skip these states on very first timeout on any of
these states to not stuck with states for such longer
period.

Signed-off-by: Vasu Dev <vasu.dev@intel.com>
Tested-by: Marcus Dennis <marcusx.e.dennis@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>

authored by

Vasu Dev and committed by
James Bottomley
ac166d2f db95fc00

+3 -2
+3 -2
drivers/scsi/libfc/fc_lport.c
··· 1598 1598 case LPORT_ST_RPA: 1599 1599 case LPORT_ST_DHBA: 1600 1600 case LPORT_ST_DPRT: 1601 - fc_lport_enter_ms(lport, lport->state); 1602 - break; 1601 + FC_LPORT_DBG(lport, "Skipping lport state %s to SCR\n", 1602 + fc_lport_state(lport)); 1603 + /* fall thru */ 1603 1604 case LPORT_ST_SCR: 1604 1605 fc_lport_enter_scr(lport); 1605 1606 break;