return pfc_host_stat;
 }
 
+static void
+qla2x00_get_host_symbolic_name(struct Scsi_Host *shost)
+{
+       scsi_qla_host_t *ha = to_qla_host(shost);
+
+       qla2x00_get_sym_node_name(ha, fc_host_symbolic_name(shost));
+}
+
 struct fc_function_template qla2xxx_transport_functions = {
 
        .show_host_node_name = 1,
        .show_host_speed = 1,
        .get_host_port_type = qla2x00_get_host_port_type,
        .show_host_port_type = 1,
+       .get_host_symbolic_name = qla2x00_get_host_symbolic_name,
+       .show_host_symbolic_name = 1,
 
        .dd_fcrport_size = sizeof(struct fc_port *),
        .show_rport_supported_classes = 1,
 
 extern int qla2x00_fdmi_register(scsi_qla_host_t *);
 extern int qla2x00_gfpn_id(scsi_qla_host_t *, sw_info_t *);
 extern int qla2x00_gpsc(scsi_qla_host_t *, sw_info_t *);
+extern void qla2x00_get_sym_node_name(scsi_qla_host_t *, uint8_t *);
 
 /*
  * Global Function Prototypes in qla_attr.c source file.
 
        return (rval);
 }
 
+void
+qla2x00_get_sym_node_name(scsi_qla_host_t *ha, uint8_t *snn)
+{
+       sprintf(snn, "%s FW:v%d.%02d.%02d DVR:v%s",ha->model_number,
+           ha->fw_major_version, ha->fw_minor_version,
+           ha->fw_subminor_version, qla2x00_version_str);
+}
+
 /**
  * qla2x00_rsnn_nn() - SNS Register Symbolic Node Name (RSNN_NN) of the HBA.
  * @ha: HA context
 qla2x00_rsnn_nn(scsi_qla_host_t *ha)
 {
        int             rval;
-       uint8_t         *snn;
-       uint8_t         version[20];
-
        ms_iocb_entry_t *ms_pkt;
        struct ct_sns_req       *ct_req;
        struct ct_sns_rsp       *ct_rsp;
        memcpy(ct_req->req.rsnn_nn.node_name, ha->node_name, WWN_SIZE);
 
        /* Prepare the Symbolic Node Name */
-       /* Board type */
-       snn = ct_req->req.rsnn_nn.sym_node_name;
-       strcpy(snn, ha->model_number);
-       /* Firmware version */
-       strcat(snn, " FW:v");
-       sprintf(version, "%d.%02d.%02d", ha->fw_major_version,
-           ha->fw_minor_version, ha->fw_subminor_version);
-       strcat(snn, version);
-       /* Driver version */
-       strcat(snn, " DVR:v");
-       strcat(snn, qla2x00_version_str);
+       qla2x00_get_sym_node_name(ha, ct_req->req.rsnn_nn.sym_node_name);
 
        /* Calculate SNN length */
-       ct_req->req.rsnn_nn.name_len = (uint8_t)strlen(snn);
+       ct_req->req.rsnn_nn.name_len =
+           (uint8_t)strlen(ct_req->req.rsnn_nn.sym_node_name);
 
        /* Update MS IOCB request */
        ms_pkt->req_bytecount =