HNS_ROCE_CAP_FLAG_DIRECT_WQE            = BIT(12),
        HNS_ROCE_CAP_FLAG_SDI_MODE              = BIT(14),
        HNS_ROCE_CAP_FLAG_STASH                 = BIT(17),
+       HNS_ROCE_CAP_FLAG_CQE_INLINE            = BIT(19),
 };
 
 #define HNS_ROCE_DB_TYPE_COUNT                 2
 
                hr_reg_clear(qpc_mask, QPC_RQIE);
        }
 
+       if (udata &&
+           (ibqp->qp_type == IB_QPT_RC || ibqp->qp_type == IB_QPT_XRC_TGT) &&
+           (uctx->config & HNS_ROCE_CQE_INLINE_FLAGS)) {
+               hr_reg_write_bool(context, QPC_CQEIE,
+                                 hr_dev->caps.flags &
+                                 HNS_ROCE_CAP_FLAG_CQE_INLINE);
+               hr_reg_clear(qpc_mask, QPC_CQEIE);
+
+               hr_reg_write(context, QPC_CQEIS, 0);
+               hr_reg_clear(qpc_mask, QPC_CQEIS);
+       }
+
        return 0;
 }
 
 
 #define QPC_RQ_RTY_TX_ERR QPC_FIELD_LOC(607, 607)
 #define QPC_RX_CQN QPC_FIELD_LOC(631, 608)
 #define QPC_XRC_QP_TYPE QPC_FIELD_LOC(632, 632)
-#define QPC_RSV3 QPC_FIELD_LOC(634, 633)
+#define QPC_CQEIE QPC_FIELD_LOC(633, 633)
+#define QPC_CQEIS QPC_FIELD_LOC(634, 634)
 #define QPC_MIN_RNR_TIME QPC_FIELD_LOC(639, 635)
 #define QPC_RQ_PRODUCER_IDX QPC_FIELD_LOC(655, 640)
 #define QPC_RQ_CONSUMER_IDX QPC_FIELD_LOC(671, 656)
 
                        resp.config |= HNS_ROCE_RSP_RQ_INLINE_FLAGS;
        }
 
+       if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_CQE_INLINE) {
+               context->config |= ucmd.config & HNS_ROCE_CQE_INLINE_FLAGS;
+               if (context->config & HNS_ROCE_CQE_INLINE_FLAGS)
+                       resp.config |= HNS_ROCE_RSP_CQE_INLINE_FLAGS;
+       }
+
        ret = hns_roce_uar_alloc(hr_dev, &context->uar);
        if (ret)
                goto error_fail_uar_alloc;
 
 enum {
        HNS_ROCE_EXSGE_FLAGS = 1 << 0,
        HNS_ROCE_RQ_INLINE_FLAGS = 1 << 1,
+       HNS_ROCE_CQE_INLINE_FLAGS = 1 << 2,
 };
 
 enum {
        HNS_ROCE_RSP_EXSGE_FLAGS = 1 << 0,
        HNS_ROCE_RSP_RQ_INLINE_FLAGS = 1 << 1,
+       HNS_ROCE_RSP_CQE_INLINE_FLAGS = 1 << 2,
 };
 
 struct hns_roce_ib_alloc_ucontext_resp {