Daniel Wagner 75332e
From: Gleb Chesnokov <Chesnokov.G@raidix.com>
Daniel Wagner 75332e
Date: Tue, 15 Feb 2022 17:13:59 +0000
Daniel Wagner 75332e
Subject: scsi: qla2xxx: Use named initializers for q_dev_state
Daniel Wagner 75332e
Patch-mainline: v5.18-rc1
Daniel Wagner 75332e
Git-commit: 1f652aa0e469ecd870f01f2ab7cf01b4ab71d9b1
Daniel Wagner 75332e
References: bsc#1197661
Daniel Wagner 75332e
Daniel Wagner 75332e
Make q_dev_state a little more readable and maintainable by using named
Daniel Wagner 75332e
initializers.
Daniel Wagner 75332e
Daniel Wagner 75332e
Also convert QLA8XXX_DEV_* macros into an enum and remove
Daniel Wagner 75332e
qla83xx_dev_state_to_string(), which is a duplicate of qdev_state().
Daniel Wagner 75332e
Daniel Wagner 75332e
Link: https://lore.kernel.org/r/AS8PR10MB495298515A7553C8D6D6E74D9D349@AS8PR10MB4952.EURPRD10.PROD.OUTLOOK.COM
Daniel Wagner 75332e
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Daniel Wagner 75332e
Signed-off-by: Gleb Chesnokov <Chesnokov.G@raidix.com>
Daniel Wagner 75332e
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Daniel Wagner 75332e
Acked-by: Daniel Wagner <dwagner@suse.de>
Daniel Wagner 75332e
---
Daniel Wagner 75332e
 drivers/scsi/qla2xxx/qla_gbl.h  |    2 +-
Daniel Wagner 75332e
 drivers/scsi/qla2xxx/qla_init.c |   28 ++--------------------------
Daniel Wagner 75332e
 drivers/scsi/qla2xxx/qla_nx.c   |   35 +++++++++++++++--------------------
Daniel Wagner 75332e
 drivers/scsi/qla2xxx/qla_nx.h   |   20 ++++++++++++--------
Daniel Wagner 75332e
 drivers/scsi/qla2xxx/qla_nx2.c  |    9 +++------
Daniel Wagner 75332e
 5 files changed, 33 insertions(+), 61 deletions(-)
Daniel Wagner 75332e
Daniel Wagner 75332e
--- a/drivers/scsi/qla2xxx/qla_gbl.h
Daniel Wagner 75332e
+++ b/drivers/scsi/qla2xxx/qla_gbl.h
Daniel Wagner 75332e
@@ -895,7 +895,7 @@ extern void qla82xx_chip_reset_cleanup(s
Daniel Wagner 75332e
 extern int qla81xx_set_led_config(scsi_qla_host_t *, uint16_t *);
Daniel Wagner 75332e
 extern int qla81xx_get_led_config(scsi_qla_host_t *, uint16_t *);
Daniel Wagner 75332e
 extern int qla82xx_mbx_beacon_ctl(scsi_qla_host_t *, int);
Daniel Wagner 75332e
-extern char *qdev_state(uint32_t);
Daniel Wagner 75332e
+extern const char *qdev_state(uint32_t);
Daniel Wagner 75332e
 extern void qla82xx_clear_pending_mbx(scsi_qla_host_t *);
Daniel Wagner 75332e
 extern int qla82xx_read_temperature(scsi_qla_host_t *);
Daniel Wagner 75332e
 extern int qla8044_read_temperature(scsi_qla_host_t *);
Daniel Wagner 75332e
--- a/drivers/scsi/qla2xxx/qla_init.c
Daniel Wagner 75332e
+++ b/drivers/scsi/qla2xxx/qla_init.c
Daniel Wagner 75332e
@@ -6797,29 +6797,6 @@ static int
Daniel Wagner 75332e
 	return rval;
Daniel Wagner 75332e
 }
Daniel Wagner 75332e
 
Daniel Wagner 75332e
-static const char *
Daniel Wagner 75332e
-qla83xx_dev_state_to_string(uint32_t dev_state)
Daniel Wagner 75332e
-{
Daniel Wagner 75332e
-	switch (dev_state) {
Daniel Wagner 75332e
-	case QLA8XXX_DEV_COLD:
Daniel Wagner 75332e
-		return "COLD/RE-INIT";
Daniel Wagner 75332e
-	case QLA8XXX_DEV_INITIALIZING:
Daniel Wagner 75332e
-		return "INITIALIZING";
Daniel Wagner 75332e
-	case QLA8XXX_DEV_READY:
Daniel Wagner 75332e
-		return "READY";
Daniel Wagner 75332e
-	case QLA8XXX_DEV_NEED_RESET:
Daniel Wagner 75332e
-		return "NEED RESET";
Daniel Wagner 75332e
-	case QLA8XXX_DEV_NEED_QUIESCENT:
Daniel Wagner 75332e
-		return "NEED QUIESCENT";
Daniel Wagner 75332e
-	case QLA8XXX_DEV_FAILED:
Daniel Wagner 75332e
-		return "FAILED";
Daniel Wagner 75332e
-	case QLA8XXX_DEV_QUIESCENT:
Daniel Wagner 75332e
-		return "QUIESCENT";
Daniel Wagner 75332e
-	default:
Daniel Wagner 75332e
-		return "Unknown";
Daniel Wagner 75332e
-	}
Daniel Wagner 75332e
-}
Daniel Wagner 75332e
-
Daniel Wagner 75332e
 /* Assumes idc-lock always held on entry */
Daniel Wagner 75332e
 void
Daniel Wagner 75332e
 qla83xx_idc_audit(scsi_qla_host_t *vha, int audit_type)
Daniel Wagner 75332e
@@ -6873,9 +6850,8 @@ qla83xx_initiating_reset(scsi_qla_host_t
Daniel Wagner 75332e
 		ql_log(ql_log_info, vha, 0xb056, "HW State: NEED RESET.\n");
Daniel Wagner 75332e
 		qla83xx_idc_audit(vha, IDC_AUDIT_TIMESTAMP);
Daniel Wagner 75332e
 	} else {
Daniel Wagner 75332e
-		const char *state = qla83xx_dev_state_to_string(dev_state);
Daniel Wagner 75332e
-
Daniel Wagner 75332e
-		ql_log(ql_log_info, vha, 0xb057, "HW State: %s.\n", state);
Daniel Wagner 75332e
+		ql_log(ql_log_info, vha, 0xb057, "HW State: %s.\n",
Daniel Wagner 75332e
+				qdev_state(dev_state));
Daniel Wagner 75332e
 
Daniel Wagner 75332e
 		/* SV: XXX: Is timeout required here? */
Daniel Wagner 75332e
 		/* Wait for IDC state change READY -> NEED_RESET */
Daniel Wagner 75332e
--- a/drivers/scsi/qla2xxx/qla_nx.c
Daniel Wagner 75332e
+++ b/drivers/scsi/qla2xxx/qla_nx.c
Daniel Wagner 75332e
@@ -336,20 +336,20 @@ static unsigned qla82xx_crb_hub_agt[64]
Daniel Wagner 75332e
 };
Daniel Wagner 75332e
 
Daniel Wagner 75332e
 /* Device states */
Daniel Wagner 75332e
-static char *q_dev_state[] = {
Daniel Wagner 75332e
-	 "Unknown",
Daniel Wagner 75332e
-	"Cold",
Daniel Wagner 75332e
-	"Initializing",
Daniel Wagner 75332e
-	"Ready",
Daniel Wagner 75332e
-	"Need Reset",
Daniel Wagner 75332e
-	"Need Quiescent",
Daniel Wagner 75332e
-	"Failed",
Daniel Wagner 75332e
-	"Quiescent",
Daniel Wagner 75332e
+static const char *const q_dev_state[] = {
Daniel Wagner 75332e
+	[QLA8XXX_DEV_UNKNOWN]		= "Unknown",
Daniel Wagner 75332e
+	[QLA8XXX_DEV_COLD]		= "Cold/Re-init",
Daniel Wagner 75332e
+	[QLA8XXX_DEV_INITIALIZING]	= "Initializing",
Daniel Wagner 75332e
+	[QLA8XXX_DEV_READY]		= "Ready",
Daniel Wagner 75332e
+	[QLA8XXX_DEV_NEED_RESET]	= "Need Reset",
Daniel Wagner 75332e
+	[QLA8XXX_DEV_NEED_QUIESCENT]	= "Need Quiescent",
Daniel Wagner 75332e
+	[QLA8XXX_DEV_FAILED]		= "Failed",
Daniel Wagner 75332e
+	[QLA8XXX_DEV_QUIESCENT]		= "Quiescent",
Daniel Wagner 75332e
 };
Daniel Wagner 75332e
 
Daniel Wagner 75332e
-char *qdev_state(uint32_t dev_state)
Daniel Wagner 75332e
+const char *qdev_state(uint32_t dev_state)
Daniel Wagner 75332e
 {
Daniel Wagner 75332e
-	return q_dev_state[dev_state];
Daniel Wagner 75332e
+	return (dev_state < MAX_STATES) ? q_dev_state[dev_state] : "Unknown";
Daniel Wagner 75332e
 }
Daniel Wagner 75332e
 
Daniel Wagner 75332e
 /*
Daniel Wagner 75332e
@@ -3062,8 +3062,7 @@ qla82xx_need_reset_handler(scsi_qla_host
Daniel Wagner 75332e
 
Daniel Wagner 75332e
 	ql_log(ql_log_info, vha, 0x00b6,
Daniel Wagner 75332e
 	    "Device state is 0x%x = %s.\n",
Daniel Wagner 75332e
-	    dev_state,
Daniel Wagner 75332e
-	    dev_state < MAX_STATES ? qdev_state(dev_state) : "Unknown");
Daniel Wagner 75332e
+	    dev_state, qdev_state(dev_state));
Daniel Wagner 75332e
 
Daniel Wagner 75332e
 	/* Force to DEV_COLD unless someone else is starting a reset */
Daniel Wagner 75332e
 	if (dev_state != QLA8XXX_DEV_INITIALIZING &&
Daniel Wagner 75332e
@@ -3186,8 +3185,7 @@ qla82xx_device_state_handler(scsi_qla_ho
Daniel Wagner 75332e
 	old_dev_state = dev_state;
Daniel Wagner 75332e
 	ql_log(ql_log_info, vha, 0x009b,
Daniel Wagner 75332e
 	    "Device state is 0x%x = %s.\n",
Daniel Wagner 75332e
-	    dev_state,
Daniel Wagner 75332e
-	    dev_state < MAX_STATES ? qdev_state(dev_state) : "Unknown");
Daniel Wagner 75332e
+	    dev_state, qdev_state(dev_state));
Daniel Wagner 75332e
 
Daniel Wagner 75332e
 	/* wait for 30 seconds for device to go ready */
Daniel Wagner 75332e
 	dev_init_timeout = jiffies + (ha->fcoe_dev_init_timeout * HZ);
Daniel Wagner 75332e
@@ -3208,9 +3206,7 @@ qla82xx_device_state_handler(scsi_qla_ho
Daniel Wagner 75332e
 		if (loopcount < 5) {
Daniel Wagner 75332e
 			ql_log(ql_log_info, vha, 0x009d,
Daniel Wagner 75332e
 			    "Device state is 0x%x = %s.\n",
Daniel Wagner 75332e
-			    dev_state,
Daniel Wagner 75332e
-			    dev_state < MAX_STATES ? qdev_state(dev_state) :
Daniel Wagner 75332e
-			    "Unknown");
Daniel Wagner 75332e
+			    dev_state, qdev_state(dev_state));
Daniel Wagner 75332e
 		}
Daniel Wagner 75332e
 
Daniel Wagner 75332e
 		switch (dev_state) {
Daniel Wagner 75332e
@@ -3440,8 +3436,7 @@ qla82xx_set_reset_owner(scsi_qla_host_t
Daniel Wagner 75332e
 	} else
Daniel Wagner 75332e
 		ql_log(ql_log_info, vha, 0xb031,
Daniel Wagner 75332e
 		    "Device state is 0x%x = %s.\n",
Daniel Wagner 75332e
-		    dev_state,
Daniel Wagner 75332e
-		    dev_state < MAX_STATES ? qdev_state(dev_state) : "Unknown");
Daniel Wagner 75332e
+		    dev_state, qdev_state(dev_state));
Daniel Wagner 75332e
 }
Daniel Wagner 75332e
 
Daniel Wagner 75332e
 /*
Daniel Wagner 75332e
--- a/drivers/scsi/qla2xxx/qla_nx.h
Daniel Wagner 75332e
+++ b/drivers/scsi/qla2xxx/qla_nx.h
Daniel Wagner 75332e
@@ -541,14 +541,18 @@
Daniel Wagner 75332e
 #define QLA82XX_CRB_DRV_IDC_VERSION  (QLA82XX_CAM_RAM(0x174))
Daniel Wagner 75332e
 
Daniel Wagner 75332e
 /* Every driver should use these Device State */
Daniel Wagner 75332e
-#define QLA8XXX_DEV_COLD		1
Daniel Wagner 75332e
-#define QLA8XXX_DEV_INITIALIZING	2
Daniel Wagner 75332e
-#define QLA8XXX_DEV_READY		3
Daniel Wagner 75332e
-#define QLA8XXX_DEV_NEED_RESET		4
Daniel Wagner 75332e
-#define QLA8XXX_DEV_NEED_QUIESCENT	5
Daniel Wagner 75332e
-#define QLA8XXX_DEV_FAILED		6
Daniel Wagner 75332e
-#define QLA8XXX_DEV_QUIESCENT		7
Daniel Wagner 75332e
-#define	MAX_STATES			8 /* Increment if new state added */
Daniel Wagner 75332e
+enum {
Daniel Wagner 75332e
+	QLA8XXX_DEV_UNKNOWN,
Daniel Wagner 75332e
+	QLA8XXX_DEV_COLD,
Daniel Wagner 75332e
+	QLA8XXX_DEV_INITIALIZING,
Daniel Wagner 75332e
+	QLA8XXX_DEV_READY,
Daniel Wagner 75332e
+	QLA8XXX_DEV_NEED_RESET,
Daniel Wagner 75332e
+	QLA8XXX_DEV_NEED_QUIESCENT,
Daniel Wagner 75332e
+	QLA8XXX_DEV_FAILED,
Daniel Wagner 75332e
+	QLA8XXX_DEV_QUIESCENT,
Daniel Wagner 75332e
+	MAX_STATES, /* Increment if new state added */
Daniel Wagner 75332e
+};
Daniel Wagner 75332e
+
Daniel Wagner 75332e
 #define QLA8XXX_BAD_VALUE		0xbad0bad0
Daniel Wagner 75332e
 
Daniel Wagner 75332e
 #define QLA82XX_IDC_VERSION			1
Daniel Wagner 75332e
--- a/drivers/scsi/qla2xxx/qla_nx2.c
Daniel Wagner 75332e
+++ b/drivers/scsi/qla2xxx/qla_nx2.c
Daniel Wagner 75332e
@@ -1939,8 +1939,7 @@ qla8044_device_state_handler(struct scsi
Daniel Wagner 75332e
 	dev_state = qla8044_rd_direct(vha, QLA8044_CRB_DEV_STATE_INDEX);
Daniel Wagner 75332e
 	ql_dbg(ql_dbg_p3p, vha, 0xb0ce,
Daniel Wagner 75332e
 	    "Device state is 0x%x = %s\n",
Daniel Wagner 75332e
-	    dev_state, dev_state < MAX_STATES ?
Daniel Wagner 75332e
-	    qdev_state(dev_state) : "Unknown");
Daniel Wagner 75332e
+	    dev_state, qdev_state(dev_state));
Daniel Wagner 75332e
 
Daniel Wagner 75332e
 	/* wait for 30 seconds for device to go ready */
Daniel Wagner 75332e
 	dev_init_timeout = jiffies + (ha->fcoe_dev_init_timeout * HZ);
Daniel Wagner 75332e
@@ -1953,8 +1952,7 @@ qla8044_device_state_handler(struct scsi
Daniel Wagner 75332e
 				ql_log(ql_log_warn, vha, 0xb0cf,
Daniel Wagner 75332e
 				    "%s: Device Init Failed 0x%x = %s\n",
Daniel Wagner 75332e
 				    QLA2XXX_DRIVER_NAME, dev_state,
Daniel Wagner 75332e
-				    dev_state < MAX_STATES ?
Daniel Wagner 75332e
-				    qdev_state(dev_state) : "Unknown");
Daniel Wagner 75332e
+				    qdev_state(dev_state));
Daniel Wagner 75332e
 				qla8044_wr_direct(vha,
Daniel Wagner 75332e
 				    QLA8044_CRB_DEV_STATE_INDEX,
Daniel Wagner 75332e
 				    QLA8XXX_DEV_FAILED);
Daniel Wagner 75332e
@@ -1964,8 +1962,7 @@ qla8044_device_state_handler(struct scsi
Daniel Wagner 75332e
 		dev_state = qla8044_rd_direct(vha, QLA8044_CRB_DEV_STATE_INDEX);
Daniel Wagner 75332e
 		ql_log(ql_log_info, vha, 0xb0d0,
Daniel Wagner 75332e
 		    "Device state is 0x%x = %s\n",
Daniel Wagner 75332e
-		    dev_state, dev_state < MAX_STATES ?
Daniel Wagner 75332e
-		    qdev_state(dev_state) : "Unknown");
Daniel Wagner 75332e
+		    dev_state, qdev_state(dev_state));
Daniel Wagner 75332e
 
Daniel Wagner 75332e
 		/* NOTE: Make sure idc unlocked upon exit of switch statement */
Daniel Wagner 75332e
 		switch (dev_state) {