Commit 60a3c4df authored by Vasu Dev's avatar Vasu Dev Committed by James Bottomley

[SCSI] libfc: adds flogi retry in case DID is zero in RJT

Sometimes switch in NPV mode rejects flogi request with DID
zero and in that case flogi is not tried again and port
remains offline, so this patch validates DID for non zero
along with only ACC response to allow flogi retry
for RJT with DID=0 also succeed FLOGI in next try.
Signed-off-by: default avatarVasu Dev <vasu.dev@intel.com>
Signed-off-by: default avatarRobert Love <robert.w.love@intel.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent 75eee725
...@@ -1447,13 +1447,7 @@ void fc_lport_flogi_resp(struct fc_seq *sp, struct fc_frame *fp, ...@@ -1447,13 +1447,7 @@ void fc_lport_flogi_resp(struct fc_seq *sp, struct fc_frame *fp,
} }
did = fc_frame_did(fp); did = fc_frame_did(fp);
if (fc_frame_payload_op(fp) == ELS_LS_ACC && did) {
if (!did) {
FC_LPORT_DBG(lport, "Bad FLOGI response\n");
goto out;
}
if (fc_frame_payload_op(fp) == ELS_LS_ACC) {
flp = fc_frame_payload_get(fp, sizeof(*flp)); flp = fc_frame_payload_get(fp, sizeof(*flp));
if (flp) { if (flp) {
mfs = ntohs(flp->fl_csp.sp_bb_data) & mfs = ntohs(flp->fl_csp.sp_bb_data) &
...@@ -1492,8 +1486,10 @@ void fc_lport_flogi_resp(struct fc_seq *sp, struct fc_frame *fp, ...@@ -1492,8 +1486,10 @@ void fc_lport_flogi_resp(struct fc_seq *sp, struct fc_frame *fp,
fc_lport_enter_dns(lport); fc_lport_enter_dns(lport);
} }
} }
} else } else {
FC_LPORT_DBG(lport, "FLOGI RJT or bad response\n");
fc_lport_error(lport, fp); fc_lport_error(lport, fp);
}
out: out:
fc_frame_free(fp); fc_frame_free(fp);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment