On Fri, Sep 25, 2020 at 04:23:34PM +0800, Weihang Li wrote: > From: Lang Cheng <chenglang@xxxxxxxxxx> > > The doorbell needs to store PI information into QPC, so the RoCEE should > wait for the results of storing, that is, it needs two bus operations to > complete a doorbell. When ROCEE is in SDI mode, multiple doorbells may be > interlocked because the RoCEE can only handle bus operations serially. So a > flag to mark if HIP09 is working in SDI mode is added. When the SDI flag is > set, the ROCEE will ignore the PI information of the doorbell, continue to > fetch wqe and verify its validity by it's owner_bit. > > Signed-off-by: Lang Cheng <chenglang@xxxxxxxxxx> > Signed-off-by: Weihang Li <liweihang@xxxxxxxxxx> > --- > drivers/infiniband/hw/hns/hns_roce_device.h | 5 ++++- > drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 28 ++++++++++++++++++++++------ > drivers/infiniband/hw/hns/hns_roce_qp.c | 3 +++ > 3 files changed, 29 insertions(+), 7 deletions(-) > > diff --git a/drivers/infiniband/hw/hns/hns_roce_device.h b/drivers/infiniband/hw/hns/hns_roce_device.h > index a8183ef..517c127 100644 > --- a/drivers/infiniband/hw/hns/hns_roce_device.h > +++ b/drivers/infiniband/hw/hns/hns_roce_device.h > @@ -137,9 +137,10 @@ enum { > SERV_TYPE_UD, > }; > > -enum { > +enum hns_roce_qp_caps { > HNS_ROCE_QP_CAP_RQ_RECORD_DB = BIT(0), > HNS_ROCE_QP_CAP_SQ_RECORD_DB = BIT(1), > + HNS_ROCE_QP_CAP_OWNER_DB = BIT(2), > }; > > enum hns_roce_cq_flags { > @@ -229,6 +230,8 @@ enum { > HNS_ROCE_CAP_FLAG_FRMR = BIT(8), > HNS_ROCE_CAP_FLAG_QP_FLOW_CTRL = BIT(9), > HNS_ROCE_CAP_FLAG_ATOMIC = BIT(10), > + HNS_ROCE_CAP_FLAG_SDI_MODE = BIT(14), > + HNS_ROCE_CAP_FLAG_MAX = BIT(28) This enum is not used. Thanks