projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
955225d
)
scsi: libfc: If PRLI rejected, move rport to PLOGI state
author
Javed Hasan
<jhasan@marvell.com>
Fri, 27 Mar 2020 06:02:07 +0000
(23:02 -0700)
committer
Martin K. Petersen
<martin.petersen@oracle.com>
Sun, 29 Mar 2020 22:10:59 +0000
(18:10 -0400)
If PRLI reject code indicates "rejected status", move rport state machine
back to PLOGI state.
Link:
https://lore.kernel.org/r/20200327060208.17104-2-skashyap@marvell.com
Signed-off-by: Javed Hasan <jhasan@marvell.com>
Signed-off-by: Saurav Kashyap <skashyap@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/libfc/fc_rport.c
patch
|
blob
|
history
diff --git
a/drivers/scsi/libfc/fc_rport.c
b/drivers/scsi/libfc/fc_rport.c
index da6e97d8dc3bb862a0ad1edd6e613d6af497507a..6bb8917b99a19b7016b4336f8bb6854341988e42 100644
(file)
--- a/
drivers/scsi/libfc/fc_rport.c
+++ b/
drivers/scsi/libfc/fc_rport.c
@@
-1208,9
+1208,15
@@
static void fc_rport_prli_resp(struct fc_seq *sp, struct fc_frame *fp,
rjt = fc_frame_payload_get(fp, sizeof(*rjt));
if (!rjt)
FC_RPORT_DBG(rdata, "PRLI bad response\n");
- else
+ else
{
FC_RPORT_DBG(rdata, "PRLI ELS rejected, reason %x expl %x\n",
rjt->er_reason, rjt->er_explan);
+ if (rjt->er_reason == ELS_RJT_UNAB &&
+ rjt->er_explan == ELS_EXPL_PLOGI_REQD) {
+ fc_rport_enter_plogi(rdata);
+ goto out;
+ }
+ }
fc_rport_error_retry(rdata, FC_EX_ELS_RJT);
}