lun = (uint16_t)tm_iocb->u.tmf.lun;
 
                /* Issue Marker IOCB */
-               qla2x00_marker(vha, vha->hw->req_q_map[0],
-                   vha->hw->rsp_q_map[0], sp->fcport->loop_id, lun,
+               qla2x00_marker(vha, vha->hw->base_qpair,
+                   sp->fcport->loop_id, lun,
                    flags == TCF_LUN_RESET ? MK_SYNC_ID_LUN : MK_SYNC_ID);
        }
 
 {
        int rval = QLA_SUCCESS;
        uint32_t wait_time;
-       struct req_que *req;
-       struct rsp_que *rsp;
-
-       req = vha->req;
-       rsp = req->rsp;
 
        clear_bit(ISP_ABORT_RETRY, &vha->dpc_flags);
        if (vha->flags.online) {
                                         * Issue a marker after FW becomes
                                         * ready.
                                         */
-                                       qla2x00_marker(vha, req, rsp, 0, 0,
-                                               MK_SYNC_ALL);
+                                       qla2x00_marker(vha, vha->hw->base_qpair,
+                                           0, 0, MK_SYNC_ALL);
                                        vha->marker_needed = 0;
                                }
 
 {
        int status = 0;
        struct qla_hw_data *ha = vha->hw;
-       struct req_que *req = ha->req_q_map[0];
-       struct rsp_que *rsp = ha->rsp_q_map[0];
 
        /* If firmware needs to be loaded */
        if (qla2x00_isp_firmware(vha)) {
                status = qla2x00_fw_ready(vha);
                if (!status) {
                        /* Issue a marker after FW becomes ready. */
-                       qla2x00_marker(vha, req, rsp, 0, 0, MK_SYNC_ALL);
+                       qla2x00_marker(vha, ha->base_qpair, 0, 0, MK_SYNC_ALL);
                        set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags);
                }
 
        uint16_t mb[MAILBOX_REGISTER_COUNT];
        struct qla_hw_data *ha = vha->hw;
        struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev);
-       struct req_que *req;
-       struct rsp_que *rsp;
 
        if (!vha->vp_idx)
                return -EINVAL;
 
        rval = qla2x00_fw_ready(base_vha);
-       if (vha->qpair)
-               req = vha->qpair->req;
-       else
-               req = ha->req_q_map[0];
-       rsp = req->rsp;
 
        if (rval == QLA_SUCCESS) {
                clear_bit(RESET_MARKER_NEEDED, &vha->dpc_flags);
-               qla2x00_marker(vha, req, rsp, 0, 0, MK_SYNC_ALL);
+               qla2x00_marker(vha, ha->base_qpair, 0, 0, MK_SYNC_ALL);
        }
 
        vha->flags.management_server_logged_in = 0;
 {
        int status, rval;
        struct qla_hw_data *ha = vha->hw;
-       struct req_que *req = ha->req_q_map[0];
-       struct rsp_que *rsp = ha->rsp_q_map[0];
        struct scsi_qla_host *vp;
        unsigned long flags;
 
                status = qla2x00_fw_ready(vha);
                if (!status) {
                        /* Issue a marker after FW becomes ready. */
-                       qla2x00_marker(vha, req, rsp, 0, 0, MK_SYNC_ALL);
+                       qla2x00_marker(vha, ha->base_qpair, 0, 0, MK_SYNC_ALL);
                        vha->flags.online = 1;
                        set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags);
                }
 
 
        /* Send marker if required */
        if (vha->marker_needed != 0) {
-               if (qla2x00_marker(vha, req, rsp, 0, 0, MK_SYNC_ALL) !=
+               if (qla2x00_marker(vha, ha->base_qpair, 0, 0, MK_SYNC_ALL) !=
                    QLA_SUCCESS) {
                        return (QLA_FUNCTION_FAILED);
                }
 /**
  * qla2x00_marker() - Send a marker IOCB to the firmware.
  * @vha: HA context
- * @req: request queue
- * @rsp: response queue
+ * @qpair: queue pair pointer
  * @loop_id: loop ID
  * @lun: LUN
  * @type: marker modifier
  * Returns non-zero if a failure occurred, else zero.
  */
 static int
-__qla2x00_marker(struct scsi_qla_host *vha, struct req_que *req,
-                       struct rsp_que *rsp, uint16_t loop_id,
-                       uint64_t lun, uint8_t type)
+__qla2x00_marker(struct scsi_qla_host *vha, struct qla_qpair *qpair,
+    uint16_t loop_id, uint64_t lun, uint8_t type)
 {
        mrk_entry_t *mrk;
        struct mrk_entry_24xx *mrk24 = NULL;
-
+       struct req_que *req = qpair->req;
        struct qla_hw_data *ha = vha->hw;
        scsi_qla_host_t *base_vha = pci_get_drvdata(ha->pdev);
 
-       req = ha->req_q_map[0];
-       mrk = (mrk_entry_t *)qla2x00_alloc_iocbs(vha, NULL);
+       mrk = (mrk_entry_t *)__qla2x00_alloc_iocbs(qpair, NULL);
        if (mrk == NULL) {
                ql_log(ql_log_warn, base_vha, 0x3026,
                    "Failed to allocate Marker IOCB.\n");
 }
 
 int
-qla2x00_marker(struct scsi_qla_host *vha, struct req_que *req,
-               struct rsp_que *rsp, uint16_t loop_id, uint64_t lun,
-               uint8_t type)
+qla2x00_marker(struct scsi_qla_host *vha, struct qla_qpair *qpair,
+    uint16_t loop_id, uint64_t lun, uint8_t type)
 {
        int ret;
        unsigned long flags = 0;
 
-       spin_lock_irqsave(&vha->hw->hardware_lock, flags);
-       ret = __qla2x00_marker(vha, req, rsp, loop_id, lun, type);
-       spin_unlock_irqrestore(&vha->hw->hardware_lock, flags);
+       spin_lock_irqsave(qpair->qp_lock_ptr, flags);
+       ret = __qla2x00_marker(vha, qpair, loop_id, lun, type);
+       spin_unlock_irqrestore(qpair->qp_lock_ptr, flags);
 
        return (ret);
 }
 int qla2x00_issue_marker(scsi_qla_host_t *vha, int ha_locked)
 {
        if (ha_locked) {
-               if (__qla2x00_marker(vha, vha->req, vha->req->rsp, 0, 0,
+               if (__qla2x00_marker(vha, vha->hw->base_qpair, 0, 0,
                                        MK_SYNC_ALL) != QLA_SUCCESS)
                        return QLA_FUNCTION_FAILED;
        } else {
-               if (qla2x00_marker(vha, vha->req, vha->req->rsp, 0, 0,
+               if (qla2x00_marker(vha, vha->hw->base_qpair, 0, 0,
                                        MK_SYNC_ALL) != QLA_SUCCESS)
                        return QLA_FUNCTION_FAILED;
        }
        uint16_t        req_cnt;
        uint16_t        tot_dsds;
        struct req_que *req = NULL;
-       struct rsp_que *rsp = NULL;
        struct scsi_cmnd *cmd = GET_CMD_SP(sp);
        struct scsi_qla_host *vha = sp->vha;
        struct qla_hw_data *ha = vha->hw;
 
        /* Setup device pointers. */
        req = vha->req;
-       rsp = req->rsp;
 
        /* So we know we haven't pci_map'ed anything yet */
        tot_dsds = 0;
 
        /* Send marker if required */
        if (vha->marker_needed != 0) {
-               if (qla2x00_marker(vha, req, rsp, 0, 0, MK_SYNC_ALL) !=
+               if (qla2x00_marker(vha, ha->base_qpair, 0, 0, MK_SYNC_ALL) !=
                    QLA_SUCCESS)
                        return QLA_FUNCTION_FAILED;
                vha->marker_needed = 0;
 
        /* Send marker if required */
        if (vha->marker_needed != 0) {
-               if (qla2x00_marker(vha, req, rsp, 0, 0, MK_SYNC_ALL) !=
+               if (qla2x00_marker(vha, ha->base_qpair, 0, 0, MK_SYNC_ALL) !=
                    QLA_SUCCESS)
                        return QLA_FUNCTION_FAILED;
                vha->marker_needed = 0;
        uint16_t        req_cnt;
        uint16_t        tot_dsds;
        struct req_que *req = NULL;
-       struct rsp_que *rsp = NULL;
        struct scsi_cmnd *cmd = GET_CMD_SP(sp);
        struct scsi_qla_host *vha = sp->fcport->vha;
        struct qla_hw_data *ha = vha->hw;
        spin_lock_irqsave(&qpair->qp_lock, flags);
 
        /* Setup qpair pointers */
-       rsp = qpair->rsp;
        req = qpair->req;
 
        /* So we know we haven't pci_map'ed anything yet */
 
        /* Send marker if required */
        if (vha->marker_needed != 0) {
-               if (__qla2x00_marker(vha, req, rsp, 0, 0, MK_SYNC_ALL) !=
+               if (__qla2x00_marker(vha, qpair, 0, 0, MK_SYNC_ALL) !=
                    QLA_SUCCESS) {
                        spin_unlock_irqrestore(&qpair->qp_lock, flags);
                        return QLA_FUNCTION_FAILED;
 
        /* Send marker if required */
        if (vha->marker_needed != 0) {
-               if (__qla2x00_marker(vha, req, rsp, 0, 0, MK_SYNC_ALL) !=
+               if (__qla2x00_marker(vha, qpair, 0, 0, MK_SYNC_ALL) !=
                    QLA_SUCCESS) {
                        spin_unlock_irqrestore(&qpair->qp_lock, flags);
                        return QLA_FUNCTION_FAILED;
 
        /* Send marker if required */
        if (vha->marker_needed != 0) {
-               if (qla2x00_marker(vha, req,
-                       rsp, 0, 0, MK_SYNC_ALL) != QLA_SUCCESS) {
+               if (qla2x00_marker(vha, ha->base_qpair,
+                       0, 0, MK_SYNC_ALL) != QLA_SUCCESS) {
                        ql_log(ql_log_warn, vha, 0x300c,
                            "qla2x00_marker failed for cmd=%p.\n", cmd);
                        return QLA_FUNCTION_FAILED;
 
        /* Send marker if required */
        if (vha->marker_needed != 0) {
-               if (qla2x00_marker(vha, req,
-                       rsp, 0, 0, MK_SYNC_ALL) != QLA_SUCCESS)
+               if (qla2x00_marker(vha, ha->base_qpair,
+                       0, 0, MK_SYNC_ALL) != QLA_SUCCESS)
                        return EXT_STATUS_MAILBOX;
                vha->marker_needed = 0;
        }
 
        mbx_cmd_t  mc;
        mbx_cmd_t  *mcp = &mc;
        scsi_qla_host_t *vha;
-       struct req_que *req;
-       struct rsp_que *rsp;
 
        vha = fcport->vha;
 
        ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x103e,
            "Entered %s.\n", __func__);
 
-       req = vha->hw->req_q_map[0];
-       rsp = req->rsp;
        mcp->mb[0] = MBC_ABORT_TARGET;
        mcp->out_mb = MBX_9|MBX_2|MBX_1|MBX_0;
        if (HAS_EXTENDED_IDS(vha->hw)) {
        }
 
        /* Issue marker IOCB. */
-       rval2 = qla2x00_marker(vha, req, rsp, fcport->loop_id, 0,
+       rval2 = qla2x00_marker(vha, vha->hw->base_qpair, fcport->loop_id, 0,
                                                        MK_SYNC_ID);
        if (rval2 != QLA_SUCCESS) {
                ql_dbg(ql_dbg_mbx, vha, 0x1040,
        mbx_cmd_t  mc;
        mbx_cmd_t  *mcp = &mc;
        scsi_qla_host_t *vha;
-       struct req_que *req;
-       struct rsp_que *rsp;
 
        vha = fcport->vha;
 
        ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x1042,
            "Entered %s.\n", __func__);
 
-       req = vha->hw->req_q_map[0];
-       rsp = req->rsp;
        mcp->mb[0] = MBC_LUN_RESET;
        mcp->out_mb = MBX_9|MBX_3|MBX_2|MBX_1|MBX_0;
        if (HAS_EXTENDED_IDS(vha->hw))
        }
 
        /* Issue marker IOCB. */
-       rval2 = qla2x00_marker(vha, req, rsp, fcport->loop_id, l,
+       rval2 = qla2x00_marker(vha, vha->hw->base_qpair, fcport->loop_id, l,
                                                                MK_SYNC_ID_LUN);
        if (rval2 != QLA_SUCCESS) {
                ql_dbg(ql_dbg_mbx, vha, 0x1044,
        scsi_qla_host_t *vha;
        struct qla_hw_data *ha;
        struct req_que *req;
-       struct rsp_que *rsp;
        struct qla_qpair *qpair;
 
        vha = fcport->vha;
        if (vha->vp_idx && vha->qpair) {
                /* NPIV port */
                qpair = vha->qpair;
-               rsp = qpair->rsp;
                req = qpair->req;
-       } else {
-               rsp = req->rsp;
        }
 
        tsk = dma_pool_zalloc(ha->s_dma_pool, GFP_KERNEL, &tsk_dma);
        }
 
        /* Issue marker IOCB. */
-       rval2 = qla2x00_marker(vha, req, rsp, fcport->loop_id, l,
+       rval2 = qla2x00_marker(vha, ha->base_qpair, fcport->loop_id, l,
            type == TCF_LUN_RESET ? MK_SYNC_ID_LUN: MK_SYNC_ID);
        if (rval2 != QLA_SUCCESS) {
                ql_dbg(ql_dbg_mbx, vha, 0x1099,