iwqp->last_aeq = info->ae_id;
                        spin_unlock_irqrestore(&iwqp->lock, flags);
                        ctx_info = &iwqp->ctx_info;
-                       if (rdma_protocol_roce(&iwqp->iwdev->ibdev, 1))
-                               ctx_info->roce_info->err_rq_idx_valid = true;
-                       else
-                               ctx_info->iwarp_info->err_rq_idx_valid = true;
                } else {
                        if (info->ae_id != IRDMA_AE_CQ_OPERATION_ERROR)
                                continue;
                case IRDMA_AE_LCE_FUNCTION_CATASTROPHIC:
                case IRDMA_AE_LCE_CQ_CATASTROPHIC:
                case IRDMA_AE_UDA_XMIT_DGRAM_TOO_LONG:
-                       if (rdma_protocol_roce(&iwdev->ibdev, 1))
-                               ctx_info->roce_info->err_rq_idx_valid = false;
-                       else
-                               ctx_info->iwarp_info->err_rq_idx_valid = false;
-                       fallthrough;
                default:
                        ibdev_err(&iwdev->ibdev, "abnormal ae_id = 0x%x bool qp=%d qp_id = %d, ae_src=%d\n",
                                  info->ae_id, info->qp, info->qp_cq_id, info->ae_src);
                        if (rdma_protocol_roce(&iwdev->ibdev, 1)) {
-                               if (!info->sq && ctx_info->roce_info->err_rq_idx_valid) {
+                               ctx_info->roce_info->err_rq_idx_valid = info->rq;
+                               if (info->rq) {
                                        ctx_info->roce_info->err_rq_idx = info->wqe_idx;
                                        irdma_sc_qp_setctx_roce(&iwqp->sc_qp, iwqp->host_ctx.va,
                                                                ctx_info);
                                irdma_cm_disconn(iwqp);
                                break;
                        }
-                       if (!info->sq && ctx_info->iwarp_info->err_rq_idx_valid) {
+                       ctx_info->iwarp_info->err_rq_idx_valid = info->rq;
+                       if (info->rq) {
                                ctx_info->iwarp_info->err_rq_idx = info->wqe_idx;
                                ctx_info->tcp_info_valid = false;
                                ctx_info->iwarp_info_valid = true;