qla2xxx: Limit querying to supported mailbox-registers while reading FW state.
authorAndrew Vasquez <andrew.vasquez@qlogic.com>
Wed, 17 Jun 2009 17:30:30 +0000 (10:30 -0700)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Sun, 21 Jun 2009 15:52:44 +0000 (10:52 -0500)
Pre-ISP24xx chips have dedicated uses for mailbox 4 and 5 which
software should typically not query nor update.

Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/qla2xxx/qla_mbx.c

index 779ce14e9a2adf838d8a5403918edf557cc3e686..fe69f30576716a5bceaf0bdd8cd4181910caa63b 100644 (file)
@@ -1267,17 +1267,22 @@ qla2x00_get_firmware_state(scsi_qla_host_t *vha, uint16_t *states)
 
        mcp->mb[0] = MBC_GET_FIRMWARE_STATE;
        mcp->out_mb = MBX_0;
-       mcp->in_mb = MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
+       if (IS_FWI2_CAPABLE(vha->hw))
+               mcp->in_mb = MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
+       else
+               mcp->in_mb = MBX_1|MBX_0;
        mcp->tov = MBX_TOV_SECONDS;
        mcp->flags = 0;
        rval = qla2x00_mailbox_command(vha, mcp);
 
        /* Return firmware states. */
        states[0] = mcp->mb[1];
-       states[1] = mcp->mb[2];
-       states[2] = mcp->mb[3];
-       states[3] = mcp->mb[4];
-       states[4] = mcp->mb[5];
+       if (IS_FWI2_CAPABLE(vha->hw)) {
+               states[1] = mcp->mb[2];
+               states[2] = mcp->mb[3];
+               states[3] = mcp->mb[4];
+               states[4] = mcp->mb[5];
+       }
 
        if (rval != QLA_SUCCESS) {
                /*EMPTY*/