在 2024/8/22 14:52, zhenwei pi 写道:
> __bth_set_resv6a is used to clear BIT [24, 29] of rxe_bth::qpn, the
> wrong expression leads other BITs into 1.
From the spec
"
9.2.11 RESERVE 6(RESV6) - 6 BITS
Reserved (variant) - 6 bits. Transmitted as 0, ignored on receive. This
field
is not included in the invariant CRC.
C9-6: When generating a packet, the sender shall set the Resv6, F/Res1
and B/Res1 fields to zero. In general, the receiver shall ignore the
reserved
fields.
"
I agree with you.
Thanks a lot.
Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
Zhu Yanjun
>
> Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
> ---
> drivers/infiniband/sw/rxe/rxe_hdr.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/infiniband/sw/rxe/rxe_hdr.h b/drivers/infiniband/sw/rxe/rxe_hdr.h
> index 46f82b27fcd2..1f0322491d8c 100644
> --- a/drivers/infiniband/sw/rxe/rxe_hdr.h
> +++ b/drivers/infiniband/sw/rxe/rxe_hdr.h
> @@ -234,7 +234,7 @@ static inline void __bth_set_resv6a(void *arg)
> {
> struct rxe_bth *bth = arg;
>
> - bth->qpn = cpu_to_be32(~BTH_RESV6A_MASK);
> + bth->qpn &= cpu_to_be32(~BTH_RESV6A_MASK);
> }
>
> static inline int __bth_ack(void *arg)