Added a new item, fabric_name, into struct fc_lport. The patch
is to save the wwnn obtained from the common service parameters
of the LS_ACC of FLOGI as fabric_name in struct fc_lport if the
LS_ACC is sent from a fabric port (otherwise, the fabric_name
should remain zero), and set fc_host_fabric_name(shost) to
the saved fabric_name in fc_get_host_fabric_name(). The routine
fc_get_host_fabric_name() of fc_attr.c is moved into fc_lport.c
as one of the steps to remove the file fc_attr.c.

Signed-off-by: Steve Ma <[EMAIL PROTECTED]>
---

 drivers/scsi/libfc/fc_attr.c  |    8 --------
 drivers/scsi/libfc/fc_lport.c |   10 ++++++++++
 include/scsi/libfc/libfc.h    |    1 +
 3 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/drivers/scsi/libfc/fc_attr.c b/drivers/scsi/libfc/fc_attr.c
index 6539e41..0a99f83 100644
--- a/drivers/scsi/libfc/fc_attr.c
+++ b/drivers/scsi/libfc/fc_attr.c
@@ -42,14 +42,6 @@ void fc_get_host_port_type(struct Scsi_Host *shost)
 }
 EXPORT_SYMBOL(fc_get_host_port_type);
 
-void fc_get_host_fabric_name(struct Scsi_Host *shost)
-{
-       struct fc_lport *lp = shost_priv(shost);
-
-       fc_host_fabric_name(shost) = lp->wwnn;
-}
-EXPORT_SYMBOL(fc_get_host_fabric_name);
-
 void fc_set_rport_loss_tmo(struct fc_rport *rport, u32 timeout)
 {
        if (timeout)
diff --git a/drivers/scsi/libfc/fc_lport.c b/drivers/scsi/libfc/fc_lport.c
index 0ffdc67..28ddc24 100644
--- a/drivers/scsi/libfc/fc_lport.c
+++ b/drivers/scsi/libfc/fc_lport.c
@@ -107,6 +107,14 @@ static void fc_lport_ptp_clear(struct fc_lport *lp)
 /*
  * Routines to support struct fc_function_template
  */
+void fc_get_host_fabric_name(struct Scsi_Host *shost)
+{
+       struct fc_lport *lp = shost_priv(shost);
+
+       fc_host_fabric_name(shost) = lp->fabric_name;
+}
+EXPORT_SYMBOL(fc_get_host_fabric_name);
+
 void fc_get_host_speed(struct Scsi_Host *shost)
 {
        struct fc_lport *lp = shost_priv(shost);
@@ -831,6 +839,8 @@ fc_lport_flogi_resp(struct fc_seq *sp, struct fc_frame *fp, 
void *lp_arg)
                        } else {
                                lp->e_d_tov = e_d_tov;
                                lp->r_a_tov = r_a_tov;
+                               lp->fabric_name = get_unaligned_be64(
+                                                       &flp->fl_wwnn);
                                lp->tt.dns_register(lp);
                        }
                }
diff --git a/include/scsi/libfc/libfc.h b/include/scsi/libfc/libfc.h
index 1eb5b8d..96eb0dd 100644
--- a/include/scsi/libfc/libfc.h
+++ b/include/scsi/libfc/libfc.h
@@ -403,6 +403,7 @@ struct fc_lport {
        struct fc_host_statistics host_stats;
        struct fcoe_dev_stats   *dev_stats[NR_CPUS];
 
+       u64                     fabric_name;
        u64                     wwpn;
        u64                     wwnn;
        u32                     fid;

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

Reply via email to