From: Vasu Dev Date: Fri, 6 Jul 2012 17:40:15 +0000 (-0700) Subject: [SCSI] libfc: fix retries with FDMI lport states X-Git-Tag: v3.6-rc1~103^2~24 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=ac166d2fbd2d0c295454bcee7b3c930cb96e72cc;p=~emulex%2Finfiniband.git [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 Tested-by: Marcus Dennis Signed-off-by: Robert Love Signed-off-by: James Bottomley --- diff --git a/drivers/scsi/libfc/fc_lport.c b/drivers/scsi/libfc/fc_lport.c index d385d114788..f04d15c67df 100644 --- a/drivers/scsi/libfc/fc_lport.c +++ b/drivers/scsi/libfc/fc_lport.c @@ -1598,8 +1598,9 @@ static void fc_lport_timeout(struct work_struct *work) case LPORT_ST_RPA: case LPORT_ST_DHBA: case LPORT_ST_DPRT: - fc_lport_enter_ms(lport, lport->state); - break; + FC_LPORT_DBG(lport, "Skipping lport state %s to SCR\n", + fc_lport_state(lport)); + /* fall thru */ case LPORT_ST_SCR: fc_lport_enter_scr(lport); break;