diff options
author | Joe Eykholt <jeykholt@cisco.com> | 2009-11-03 11:50:21 -0800 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-12-04 12:01:27 -0600 |
commit | b94f8951bf256674eca3f2a490df17521442afef (patch) | |
tree | ae6b246eb65f7ef73167a2b582ce7e670158a958 /drivers/scsi/libfc/fc_lport.c | |
parent | be276cbe1bd680ab1f6c297017dd658e5a6b10d2 (diff) |
[SCSI] libfc fcoe: increase ELS and CT timeouts
The FC-LS spec. says ELS timeouts should be 2 x R_A_TOV.
The FC-GS spec. says CT timeouts should be 3 x R_A_TOV.
We've been using E_D_TOV for both of those.
Change for all ELS and CT requests except FLOGI, which we
leave at 2 seconds (using E_D_TOV). One could argue that
R_A_TOV is locally determined until after FLOGI succeeds.
This does change FLOGI for vports which becomes FDISC.
This does not change the REC/SRR timeout which is 2 seconds.
Signed-off-by: Joe Eykholt <jeykholt@cisco.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/libfc/fc_lport.c')
-rw-r--r-- | drivers/scsi/libfc/fc_lport.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/scsi/libfc/fc_lport.c b/drivers/scsi/libfc/fc_lport.c index 1bcc5e11d2c0..c841d547c298 100644 --- a/drivers/scsi/libfc/fc_lport.c +++ b/drivers/scsi/libfc/fc_lport.c @@ -1191,7 +1191,8 @@ static void fc_lport_enter_scr(struct fc_lport *lport) } if (!lport->tt.elsct_send(lport, FC_FID_FCTRL, fp, ELS_SCR, - fc_lport_scr_resp, lport, lport->e_d_tov)) + fc_lport_scr_resp, lport, + 2 * lport->r_a_tov)) fc_lport_error(lport, NULL); } @@ -1257,7 +1258,7 @@ static void fc_lport_enter_ns(struct fc_lport *lport, enum fc_lport_state state) if (!lport->tt.elsct_send(lport, FC_FID_DIR_SERV, fp, cmd, fc_lport_ns_resp, - lport, lport->e_d_tov)) + lport, 3 * lport->r_a_tov)) fc_lport_error(lport, fp); } @@ -1414,7 +1415,8 @@ static void fc_lport_enter_logo(struct fc_lport *lport) } if (!lport->tt.elsct_send(lport, FC_FID_FLOGI, fp, ELS_LOGO, - fc_lport_logo_resp, lport, lport->e_d_tov)) + fc_lport_logo_resp, lport, + 2 * lport->r_a_tov)) fc_lport_error(lport, NULL); } @@ -1534,7 +1536,9 @@ void fc_lport_enter_flogi(struct fc_lport *lport) if (!lport->tt.elsct_send(lport, FC_FID_FLOGI, fp, lport->vport ? ELS_FDISC : ELS_FLOGI, - fc_lport_flogi_resp, lport, lport->e_d_tov)) + fc_lport_flogi_resp, lport, + lport->vport ? 2 * lport->r_a_tov : + lport->e_d_tov)) fc_lport_error(lport, NULL); } |