[SCSI] qla2xxx: Add support for symbolic nodename FC transport attribute.

Refactored original code from qla_gs.c:qla2x00_rsnn_nn().

Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>

authored by Andrew Vasquez and committed by James Bottomley 1620f7c2 d8b45213

+22 -15
+10
drivers/scsi/qla2xxx/qla_attr.c
··· 849 849 return pfc_host_stat; 850 850 } 851 851 852 + static void 853 + qla2x00_get_host_symbolic_name(struct Scsi_Host *shost) 854 + { 855 + scsi_qla_host_t *ha = to_qla_host(shost); 856 + 857 + qla2x00_get_sym_node_name(ha, fc_host_symbolic_name(shost)); 858 + } 859 + 852 860 struct fc_function_template qla2xxx_transport_functions = { 853 861 854 862 .show_host_node_name = 1, ··· 869 861 .show_host_speed = 1, 870 862 .get_host_port_type = qla2x00_get_host_port_type, 871 863 .show_host_port_type = 1, 864 + .get_host_symbolic_name = qla2x00_get_host_symbolic_name, 865 + .show_host_symbolic_name = 1, 872 866 873 867 .dd_fcrport_size = sizeof(struct fc_port *), 874 868 .show_rport_supported_classes = 1,
+1
drivers/scsi/qla2xxx/qla_gbl.h
··· 287 287 extern int qla2x00_fdmi_register(scsi_qla_host_t *); 288 288 extern int qla2x00_gfpn_id(scsi_qla_host_t *, sw_info_t *); 289 289 extern int qla2x00_gpsc(scsi_qla_host_t *, sw_info_t *); 290 + extern void qla2x00_get_sym_node_name(scsi_qla_host_t *, uint8_t *); 290 291 291 292 /* 292 293 * Global Function Prototypes in qla_attr.c source file.
+11 -15
drivers/scsi/qla2xxx/qla_gs.c
··· 612 612 return (rval); 613 613 } 614 614 615 + void 616 + qla2x00_get_sym_node_name(scsi_qla_host_t *ha, uint8_t *snn) 617 + { 618 + sprintf(snn, "%s FW:v%d.%02d.%02d DVR:v%s",ha->model_number, 619 + ha->fw_major_version, ha->fw_minor_version, 620 + ha->fw_subminor_version, qla2x00_version_str); 621 + } 622 + 615 623 /** 616 624 * qla2x00_rsnn_nn() - SNS Register Symbolic Node Name (RSNN_NN) of the HBA. 617 625 * @ha: HA context ··· 630 622 qla2x00_rsnn_nn(scsi_qla_host_t *ha) 631 623 { 632 624 int rval; 633 - uint8_t *snn; 634 - uint8_t version[20]; 635 - 636 625 ms_iocb_entry_t *ms_pkt; 637 626 struct ct_sns_req *ct_req; 638 627 struct ct_sns_rsp *ct_rsp; ··· 654 649 memcpy(ct_req->req.rsnn_nn.node_name, ha->node_name, WWN_SIZE); 655 650 656 651 /* Prepare the Symbolic Node Name */ 657 - /* Board type */ 658 - snn = ct_req->req.rsnn_nn.sym_node_name; 659 - strcpy(snn, ha->model_number); 660 - /* Firmware version */ 661 - strcat(snn, " FW:v"); 662 - sprintf(version, "%d.%02d.%02d", ha->fw_major_version, 663 - ha->fw_minor_version, ha->fw_subminor_version); 664 - strcat(snn, version); 665 - /* Driver version */ 666 - strcat(snn, " DVR:v"); 667 - strcat(snn, qla2x00_version_str); 652 + qla2x00_get_sym_node_name(ha, ct_req->req.rsnn_nn.sym_node_name); 668 653 669 654 /* Calculate SNN length */ 670 - ct_req->req.rsnn_nn.name_len = (uint8_t)strlen(snn); 655 + ct_req->req.rsnn_nn.name_len = 656 + (uint8_t)strlen(ct_req->req.rsnn_nn.sym_node_name); 671 657 672 658 /* Update MS IOCB request */ 673 659 ms_pkt->req_bytecount =