Add firmware state, loop state, topology and link speed human readable
authorswgruszka <swgruszka@d57e44dd-8a1f-0410-8b47-8ef2f437770f>
Tue, 14 Apr 2009 20:05:52 +0000 (20:05 +0000)
committerswgruszka <swgruszka@d57e44dd-8a1f-0410-8b47-8ef2f437770f>
Tue, 14 Apr 2009 20:05:52 +0000 (20:05 +0000)
information to procfs.

git-svn-id: https://scst.svn.sourceforge.net/svnroot/scst/trunk@777 d57e44dd-8a1f-0410-8b47-8ef2f437770f

qla_isp/common/isp.c
qla_isp/common/ispvar.h
qla_isp/linux/isp_cb_ops.c

index 588f24c..6c66e00 100644 (file)
@@ -168,7 +168,6 @@ static int isp_getpdb(ispsoftc_t *, int, uint16_t, isp_pdb_t *, int);
 static void isp_dump_chip_portdb(ispsoftc_t *, int, int);
 static uint64_t isp_get_wwn(ispsoftc_t *, int, int, int);
 static int isp_fclink_test(ispsoftc_t *, int, int);
-static const char *ispfc_fw_statename(int);
 static int isp_pdb_sync(ispsoftc_t *, int);
 static int isp_scan_loop(ispsoftc_t *, int);
 static int isp_gid_ft_sns(ispsoftc_t *, int);
@@ -2559,13 +2558,6 @@ isp_get_wwn(ispsoftc_t *isp, int chan, int loopid, int nodename)
 static int
 isp_fclink_test(ispsoftc_t *isp, int chan, int usdelay)
 {
-       static const char *toponames[] = {
-               "Private Loop",
-               "FL Port",
-               "N-Port to N-Port",
-               "F Port",
-               "F Port (no FLOGI_ACC response)"
-       };
        mbreg_t mbs;
        int count, check_for_fabric, r;
        uint8_t lwfs;
@@ -2841,13 +2833,13 @@ not_on_fabric:
         */
        isp_prt(isp, ISP_LOGSANCFG|ISP_LOGCONFIG, topology, chan,
            (uint32_t) (fcp->isp_wwpn >> 32), (uint32_t) fcp->isp_wwpn,
-           fcp->isp_portid, fcp->isp_loopid, toponames[fcp->isp_topo]);
+           fcp->isp_portid, fcp->isp_loopid, ispfc_toponame(fcp->isp_topo));
        isp_prt(isp, ISP_LOGSANCFG|ISP_LOGDEBUG0,
            "Chan %d FC Link Test Complete", chan);
        return (0);
 }
 
-static const char *
+const char *
 ispfc_fw_statename(int state)
 {
        switch (state) {
@@ -2863,6 +2855,36 @@ ispfc_fw_statename(int state)
        }
 }
 
+const char *
+ispfc_loop_statename(int state)
+{
+       switch (state) {
+       case LOOP_NIL:                  return "NIL";
+       case LOOP_LIP_RCVD:             return "LIP Received";
+       case LOOP_PDB_RCVD:             return "PDB Received";
+       case LOOP_SCANNING_LOOP:        return "Scanning";
+       case LOOP_LSCAN_DONE:           return "Loop Scan Done";
+       case LOOP_SCANNING_FABRIC:      return "Scanning Fabric";
+       case LOOP_FSCAN_DONE:           return "Fabric Scan Done";
+       case LOOP_SYNCING_PDB:          return "Syncing PDB";
+       case LOOP_READY:                return "Ready";
+       default:                        return "?????";
+       }
+}
+
+const char *
+ispfc_toponame(int topo)
+{
+       switch (topo) {
+       case TOPO_NL_PORT:      return "Private Loop";
+       case TOPO_FL_PORT:      return "FL Port";
+       case TOPO_N_PORT:       return "N-Port to N-Port";
+       case TOPO_F_PORT:       return "F Port";
+       case TOPO_PTP_STUB:     return "F Port (no FLOGI_ACC response)";
+       default:                return "?????";
+       }
+}
+
 /*
  * Complete the synchronization of our Port Database.
  *
index 5e9bd0f..d5859b5 100644 (file)
@@ -501,6 +501,10 @@ typedef struct {
 #define        TOPO_F_PORT             3
 #define        TOPO_PTP_STUB           4
 
+const char *ispfc_fw_statename(int);
+const char *ispfc_loop_statename(int);
+const char *ispfc_toponame(int);
+
 /*
  * Soft Structure per host adapter
  */
index b2c9b5e..423a8ab 100644 (file)
@@ -288,8 +288,8 @@ isplinux_proc_info(struct Scsi_Host *shp, char *buf, char **st, off_t off, int l
         for (chan = 0; chan < isp->isp_nchan; chan++) {
             fcparam *fcp = FCPARAM(isp, chan);
             copy_info(&info,
-                "Self Channel %d:\nHandle ID 0x%x PortID 0x%06x FW State 0x%x Loop State 0x%x\n", chan,
-                fcp->isp_loopid, fcp->isp_portid, fcp->isp_fwstate, fcp->isp_loopstate);
+                "Self Channel %d:\nHandle ID 0x%x PortID 0x%06x FW State %s Loop State %s Topology %s Link Speed %dGb\n", chan,
+                fcp->isp_loopid, fcp->isp_portid, ispfc_fw_statename(fcp->isp_fwstate), ispfc_loop_statename(fcp->isp_loopstate), ispfc_toponame(fcp->isp_topo), fcp->isp_gbspeed);
             copy_info(&info, "Port WWN 0x%016llx Node WWN 0x%016llx\n\n", (ull) fcp->isp_wwpn, (ull)fcp->isp_wwnn);
             copy_info(&info, "FC devices in port database:\n");
             for (i = 0; i < MAX_FC_TARG; i++) {