Re: [PATCH rdma-core 2/3] libhns: Modify the usage of cmd_sn in hip08 RoCE userspace

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



在 2017/11/1 18:06, Leon Romanovsky 写道:
> On Wed, Nov 01, 2017 at 06:00:39PM +0800, Lijun Ou wrote:
>> The cmd_sn field of CQ doorbell should be 1 for the first
>> db rung. It inits for 0. It should be increment on each
>> first db rung after a complemention 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;
> 
> I didn't understand it from you commit message, so I'll ask it here.
> cmd_en will be 1,2 and 3 now, is it ok?
> 
> Thanks
> 
Yes, the cmd_sn field of cq db hardware structure is defined 2 bit. the cmd_sn be only used
when cq db type is cq doorbell notify.
when notify completion event, cmd_sn is valid, the first notify, cmd_sn is 1;
the user notify completion event a time, cmd_sn will be increment. if the value of cmd_sn
when two notify doorbell continuously, the hardware will take it as the same notify request and
update the notify type according to the protocol.

Thanks

>>  	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



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux