[SCSI] qla2xxx: Use correct Request-Q-Out register during bidirectional request proce...
authorAndrew Vasquez <andrew.vasquez@qlogic.com>
Wed, 21 Nov 2012 07:40:33 +0000 (02:40 -0500)
committerJames Bottomley <JBottomley@Parallels.com>
Fri, 30 Nov 2012 14:47:48 +0000 (14:47 +0000)
Original code was not corrected for ISP83xx support. Instead code should used
the cached reference from the req_que structure, rather than the legacy
'if (ISP-TYPE(X))... else if (ISP-TYPE(Y))...' codes.

Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/qla2xxx/qla_iocb.c

index b610404..a481684 100644 (file)
@@ -2748,7 +2748,6 @@ qla2x00_start_bidir(srb_t *sp, struct scsi_qla_host *vha, uint32_t tot_dsds)
        struct rsp_que *rsp;
        struct req_que *req;
        int rval = EXT_STATUS_OK;
-       device_reg_t __iomem *reg = ISP_QUE_REG(ha, vha->req->id);
 
        rval = QLA_SUCCESS;
 
@@ -2786,15 +2785,7 @@ qla2x00_start_bidir(srb_t *sp, struct scsi_qla_host *vha, uint32_t tot_dsds)
 
        /* Check for room on request queue. */
        if (req->cnt < req_cnt + 2) {
-               if (ha->mqenable)
-                       cnt = RD_REG_DWORD(&reg->isp25mq.req_q_out);
-               else if (IS_QLA82XX(ha))
-                       cnt = RD_REG_DWORD(&reg->isp82.req_q_out);
-               else if (IS_FWI2_CAPABLE(ha))
-                       cnt = RD_REG_DWORD(&reg->isp24.req_q_out);
-               else
-                       cnt = qla2x00_debounce_register(
-                                       ISP_REQ_Q_OUT(ha, &reg->isp));
+               cnt = RD_REG_DWORD_RELAXED(req->req_q_out);
 
                if  (req->ring_index < cnt)
                        req->cnt = cnt - req->ring_index;