Commit f2a0cc3ffd5ee123086b8e76522a85a937d89878
Committed by
James Bottomley
1 parent
e1aaab89de
Exists in
smarc-imx_3.14.28_1.0.0_ga
and in
1 other branch
[SCSI] bfa: Fix FDISC timeout handling
Retry FDISC a max of 6 times. Introduce new events to handle vport login fails due to max logins to fabric/switch. Signed-off-by: Anil Gurumurthy <agurumur@brocade.com> Signed-off-by: Vijaya Mohan Guvva <vmohan@brocade.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Showing 1 changed file with 17 additions and 2 deletions Side-by-side Diff
drivers/scsi/bfa/bfa_fcs_lport.c
... | ... | @@ -5988,6 +5988,7 @@ |
5988 | 5988 | BFA_FCS_VPORT_SM_RSP_DUP_WWN = 12, /* Dup wnn error*/ |
5989 | 5989 | BFA_FCS_VPORT_SM_RSP_FAILED = 13, /* non-retryable failure */ |
5990 | 5990 | BFA_FCS_VPORT_SM_STOPCOMP = 14, /* vport delete completion */ |
5991 | + BFA_FCS_VPORT_SM_FABRIC_MAX = 15, /* max vports on fabric */ | |
5991 | 5992 | }; |
5992 | 5993 | |
5993 | 5994 | static void bfa_fcs_vport_sm_uninit(struct bfa_fcs_vport_s *vport, |
... | ... | @@ -6173,6 +6174,7 @@ |
6173 | 6174 | break; |
6174 | 6175 | |
6175 | 6176 | case BFA_FCS_VPORT_SM_RSP_FAILED: |
6177 | + case BFA_FCS_VPORT_SM_FABRIC_MAX: | |
6176 | 6178 | bfa_sm_set_state(vport, bfa_fcs_vport_sm_offline); |
6177 | 6179 | break; |
6178 | 6180 | |
... | ... | @@ -6243,6 +6245,7 @@ |
6243 | 6245 | case BFA_FCS_VPORT_SM_OFFLINE: |
6244 | 6246 | case BFA_FCS_VPORT_SM_RSP_ERROR: |
6245 | 6247 | case BFA_FCS_VPORT_SM_RSP_FAILED: |
6248 | + case BFA_FCS_VPORT_SM_FABRIC_MAX: | |
6246 | 6249 | case BFA_FCS_VPORT_SM_RSP_DUP_WWN: |
6247 | 6250 | bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup); |
6248 | 6251 | bfa_sm_send_event(vport->lps, BFA_LPS_SM_OFFLINE); |
... | ... | @@ -6528,7 +6531,7 @@ |
6528 | 6531 | else { |
6529 | 6532 | bfa_fcs_vport_aen_post(&vport->lport, |
6530 | 6533 | BFA_LPORT_AEN_NPIV_FABRIC_MAX); |
6531 | - bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_FAILED); | |
6534 | + bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_FABRIC_MAX); | |
6532 | 6535 | } |
6533 | 6536 | break; |
6534 | 6537 | |
... | ... | @@ -6914,7 +6917,19 @@ |
6914 | 6917 | break; |
6915 | 6918 | } |
6916 | 6919 | |
6917 | - bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_ERROR); | |
6920 | + if (vport->fdisc_retries < BFA_FCS_VPORT_MAX_RETRIES) | |
6921 | + bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_ERROR); | |
6922 | + else | |
6923 | + bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_FAILED); | |
6924 | + | |
6925 | + break; | |
6926 | + | |
6927 | + case BFA_STATUS_ETIMER: | |
6928 | + vport->vport_stats.fdisc_timeouts++; | |
6929 | + if (vport->fdisc_retries < BFA_FCS_VPORT_MAX_RETRIES) | |
6930 | + bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_ERROR); | |
6931 | + else | |
6932 | + bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_FAILED); | |
6918 | 6933 | break; |
6919 | 6934 | |
6920 | 6935 | case BFA_STATUS_FABRIC_RJT: |