/* Operational queue management definitions */
 #define MPI3MR_OP_REQ_Q_QD             512
-#define MPI3MR_OP_REP_Q_QD             4096
+#define MPI3MR_OP_REP_Q_QD             1024
+#define MPI3MR_OP_REP_Q_QD4K           4096
 #define MPI3MR_OP_REQ_Q_SEG_SIZE       4096
 #define MPI3MR_OP_REP_Q_SEG_SIZE       4096
 #define MPI3MR_MAX_SEG_LIST_SIZE       4096
 
                        mrioc->op_reply_qinfo[q_idx].q_segment_list = NULL;
                }
        } else
-               size = mrioc->req_qinfo[q_idx].num_requests *
+               size = mrioc->req_qinfo[q_idx].segment_qd *
                    mrioc->facts.op_req_sz;
 
        for (j = 0; j < mrioc->req_qinfo[q_idx].num_segments; j++) {
 
        reply_qid = qidx + 1;
        op_reply_q->num_replies = MPI3MR_OP_REP_Q_QD;
+       if (!mrioc->pdev->revision)
+               op_reply_q->num_replies = MPI3MR_OP_REP_Q_QD4K;
        op_reply_q->ci = 0;
        op_reply_q->ephase = 1;
        atomic_set(&op_reply_q->pend_ios, 0);