The cmd_sn field of CQ doorbell inits for 0. It should be increment on each first db rung after a complemention Event. if the cmd_sn of notify doorbell Adjacent two times is the same, the hardware will distinguish it for the same notify request and update its type according to the priority level of next event and solicited event. Signed-off-by: Lijun Ou <oulijun@xxxxxxxxxx> --- providers/hns/hns_roce_u_hw_v2.c | 4 +++- providers/hns/hns_roce_u_hw_v2.h | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c index 900387c..7777e75 100644 --- a/providers/hns/hns_roce_u_hw_v2.c +++ b/providers/hns/hns_roce_u_hw_v2.c @@ -444,11 +444,13 @@ static int hns_roce_u_v2_poll_cq(struct ibv_cq *ibvcq, int ne, static int hns_roce_u_v2_arm_cq(struct ibv_cq *ibvcq, int solicited) { uint32_t ci; + uint32_t cmd_sn; uint32_t solicited_flag; struct hns_roce_v2_cq_db cq_db; struct hns_roce_cq *cq = to_hr_cq(ibvcq); ci = cq->cons_index & ((cq->cq_depth << 1) - 1); + cmd_sn = cq->arm_sn & HNS_ROCE_CMDSN_MASK; solicited_flag = solicited ? HNS_ROCE_V2_CQ_DB_REQ_SOL : HNS_ROCE_V2_CQ_DB_REQ_NEXT; @@ -462,7 +464,7 @@ static int hns_roce_u_v2_arm_cq(struct ibv_cq *ibvcq, int solicited) CQ_DB_PARAMETER_CQ_CONSUMER_IDX_S, ci); roce_set_field(cq_db.parameter, CQ_DB_PARAMETER_CMD_SN_M, - CQ_DB_PARAMETER_CMD_SN_S, 1); + CQ_DB_PARAMETER_CMD_SN_S, cmd_sn); roce_set_bit(cq_db.parameter, CQ_DB_PARAMETER_NOTIFY_S, solicited_flag); hns_roce_write64((uint32_t *)&cq_db, to_hr_ctx(ibvcq->context), diff --git a/providers/hns/hns_roce_u_hw_v2.h b/providers/hns/hns_roce_u_hw_v2.h index 28aab60..196ba4e 100644 --- a/providers/hns/hns_roce_u_hw_v2.h +++ b/providers/hns/hns_roce_u_hw_v2.h @@ -38,6 +38,8 @@ #define HNS_ROCE_V2_CQ_DB_REQ_SOL 1 #define HNS_ROCE_V2_CQ_DB_REQ_NEXT 0 +#define HNS_ROCE_CMDSN_MASK 0x3 + /* V2 REG DEFINITION */ #define ROCEE_VF_DB_CFG0_OFFSET 0x0230 -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html