]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
scsi: qla2xxx: Report invalid mailbox status codes
authorBart Van Assche <bvanassche@acm.org>
Fri, 9 Aug 2019 03:02:14 +0000 (20:02 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 13 Aug 2019 01:34:09 +0000 (21:34 -0400)
It is easy to mix up the QLA_* and the MBS_* status codes. Complain loudly
if that happens.

Cc: Himanshu Madhani <hmadhani@marvell.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Tested-by: Himanshu Madhani <hmadhani@marvell.com>
Reviewed-by: Himanshu Madhani <hmadhani@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_def.h
drivers/scsi/qla2xxx/qla_init.c

index 527b2a2708a10f878d4186b7b5e32a6d4d7c3864..556376ce0259922c29a2ae8ee13f7bd4826e8392 100644 (file)
@@ -990,6 +990,11 @@ struct mbx_cmd_32 {
 #define MBS_LINK_DOWN_ERROR            0x400B
 #define MBS_DIAG_ECHO_TEST_ERROR       0x400C
 
+static inline bool qla2xxx_is_valid_mbs(unsigned int mbs)
+{
+       return MBS_COMMAND_COMPLETE <= mbs && mbs <= MBS_DIAG_ECHO_TEST_ERROR;
+}
+
 /*
  * ISP mailbox asynchronous event status codes
  */
index 64c84e53011edf9901348e6965afd5d08515cee4..b3f1203bfe87e77cb59bbb4a5a7bb5e21aa5d6c4 100644 (file)
@@ -477,6 +477,9 @@ void qla24xx_handle_adisc_event(scsi_qla_host_t *vha, struct event_arg *ea)
            fcport->fw_login_state, ea->rc, fcport->login_gen, ea->sp->gen2,
            fcport->rscn_gen, ea->sp->gen1, fcport->loop_id);
 
+       WARN_ONCE(!qla2xxx_is_valid_mbs(ea->data[0]), "mbs: %#x\n",
+                 ea->data[0]);
+
        if (ea->data[0] != MBS_COMMAND_COMPLETE) {
                ql_dbg(ql_dbg_disc, vha, 0x2066,
                    "%s %8phC: adisc fail: post delete\n",
@@ -1893,6 +1896,9 @@ qla24xx_async_abort_command(srb_t *sp)
 static void
 qla24xx_handle_prli_done_event(struct scsi_qla_host *vha, struct event_arg *ea)
 {
+       WARN_ONCE(!qla2xxx_is_valid_mbs(ea->data[0]), "mbs: %#x\n",
+                 ea->data[0]);
+
        switch (ea->data[0]) {
        case MBS_COMMAND_COMPLETE:
                ql_dbg(ql_dbg_disc, vha, 0x2118,
@@ -1978,6 +1984,9 @@ qla24xx_handle_plogi_done_event(struct scsi_qla_host *vha, struct event_arg *ea)
                return;
        }
 
+       WARN_ONCE(!qla2xxx_is_valid_mbs(ea->data[0]), "mbs: %#x\n",
+                 ea->data[0]);
+
        switch (ea->data[0]) {
        case MBS_COMMAND_COMPLETE:
                /*