[SCSI] qla2xxx: Simplify the ISPFX00 interrupt handler code for ISPFX00.
authorSaurav Kashyap <saurav.kashyap@qlogic.com>
Wed, 26 Feb 2014 09:15:11 +0000 (04:15 -0500)
committerJames Bottomley <JBottomley@Parallels.com>
Sat, 15 Mar 2014 17:18:51 +0000 (10:18 -0700)
Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/qla2xxx/qla_mr.c
drivers/scsi/qla2xxx/qla_mr.h

index 290322f0a8d74f47a7923b2d3112c480e94bab3a..046a1699cb795be003bfbaa7c51c0f88b5359c4b 100644 (file)
@@ -3014,6 +3014,7 @@ qlafx00_intr_handler(int irq, void *dev_id)
        struct rsp_que *rsp;
        unsigned long   flags;
        uint32_t clr_intr = 0;
+       uint32_t intr_stat = 0;
 
        rsp = (struct rsp_que *) dev_id;
        if (!rsp) {
@@ -3035,34 +3036,26 @@ qlafx00_intr_handler(int irq, void *dev_id)
                stat = QLAFX00_RD_INTR_REG(ha);
                if (qla2x00_check_reg_for_disconnect(vha, stat))
                        break;
-               if ((stat & QLAFX00_HST_INT_STS_BITS) == 0)
+               intr_stat = stat & QLAFX00_HST_INT_STS_BITS;
+               if (!intr_stat)
                        break;
 
-               switch (stat & QLAFX00_HST_INT_STS_BITS) {
-               case QLAFX00_INTR_MB_CMPLT:
-               case QLAFX00_INTR_MB_RSP_CMPLT:
-               case QLAFX00_INTR_MB_ASYNC_CMPLT:
-               case QLAFX00_INTR_ALL_CMPLT:
+               if (stat & QLAFX00_INTR_MB_CMPLT) {
                        mb[0] = RD_REG_WORD(&reg->mailbox16);
                        qlafx00_mbx_completion(vha, mb[0]);
                        status |= MBX_INTERRUPT;
                        clr_intr |= QLAFX00_INTR_MB_CMPLT;
-                       break;
-               case QLAFX00_INTR_ASYNC_CMPLT:
-               case QLAFX00_INTR_RSP_ASYNC_CMPLT:
+               }
+               if (intr_stat & QLAFX00_INTR_ASYNC_CMPLT) {
                        ha->aenmb[0] = RD_REG_WORD(&reg->aenmailbox0);
                        qlafx00_async_event(vha);
                        clr_intr |= QLAFX00_INTR_ASYNC_CMPLT;
-                       break;
-               case QLAFX00_INTR_RSP_CMPLT:
+               }
+               if (intr_stat & QLAFX00_INTR_RSP_CMPLT) {
                        qlafx00_process_response_queue(vha, rsp);
                        clr_intr |= QLAFX00_INTR_RSP_CMPLT;
-                       break;
-               default:
-                       ql_dbg(ql_dbg_async, vha, 0x507a,
-                           "Unrecognized interrupt type (%d).\n", stat);
-                       break;
                }
+
                QLAFX00_CLR_INTR_REG(ha, clr_intr);
                QLAFX00_RD_INTR_REG(ha);
        }
index 3cf5ddc244a54e578925808642237681d15295c7..e529dfaeb8542399d5edc840df5d7fb809b2fa26 100644 (file)
@@ -336,11 +336,7 @@ struct config_info_data {
 
 #define QLAFX00_INTR_MB_CMPLT          0x1
 #define QLAFX00_INTR_RSP_CMPLT         0x2
-#define QLAFX00_INTR_MB_RSP_CMPLT      0x3
 #define QLAFX00_INTR_ASYNC_CMPLT       0x4
-#define QLAFX00_INTR_MB_ASYNC_CMPLT    0x5
-#define QLAFX00_INTR_RSP_ASYNC_CMPLT   0x6
-#define QLAFX00_INTR_ALL_CMPLT         0x7
 
 #define QLAFX00_MBA_SYSTEM_ERR         0x8002
 #define QLAFX00_MBA_TEMP_OVER          0x8005