On some switches, an empty zone causes GPN_FT to be rejected
with reason 9 (unable) explanation 7 (FC-4 types not registered),
which causes discovery to be retried endlessly.  Treat this as
just an empty response and consider discovery complete.

Signed-off-by: Joe Eykholt <[email protected]>
---
 drivers/scsi/libfc/fc_disc.c |    3 +++
 include/scsi/fc/fc_gs.h      |    1 +
 2 files changed, 4 insertions(+), 0 deletions(-)


diff --git a/drivers/scsi/libfc/fc_disc.c b/drivers/scsi/libfc/fc_disc.c
index 36e7ba8..ef41e96 100644
--- a/drivers/scsi/libfc/fc_disc.c
+++ b/drivers/scsi/libfc/fc_disc.c
@@ -616,6 +616,9 @@ static void fc_disc_gpn_ft_resp(struct fc_seq *sp, struct 
fc_frame *fp,
                                    "(check zoning)\n", cp->ct_reason,
                                    cp->ct_explan);
                        event = DISC_EV_FAILED;
+                       if (cp->ct_reason == FC_FS_RJT_UNABL &&
+                           cp->ct_explan == FC_FS_EXP_FTNR)
+                               event = DISC_EV_SUCCESS;
                } else {
                        FC_DISC_DBG(disc, "GPN_FT unexpected response code "
                                    "%x\n", ntohs(cp->ct_cmd));
diff --git a/include/scsi/fc/fc_gs.h b/include/scsi/fc/fc_gs.h
index ffab027..324dd0e 100644
--- a/include/scsi/fc/fc_gs.h
+++ b/include/scsi/fc/fc_gs.h
@@ -87,6 +87,7 @@ enum fc_ct_explan {
        FC_FS_EXP_PNAM =        0x02,   /* port name not registered */
        FC_FS_EXP_NNAM =        0x03,   /* node name not registered */
        FC_FS_EXP_COS =         0x04,   /* class of service not registered */
+       FC_FS_EXP_FTNR =        0x07,   /* FC-4 types not registered */
        /* definitions not complete */
 };
 


_______________________________________________
devel mailing list
[email protected]
http://www.open-fcoe.org/mailman/listinfo/devel

Reply via email to