On 1/25/21 12:32 PM, Jakub Kicinski wrote: >>>>> diff --git a/include/uapi/linux/rpl.h b/include/uapi/linux/rpl.h >>>>> index 1dccb55cf8c6..708adddf9f13 100644 >>>>> --- a/include/uapi/linux/rpl.h >>>>> +++ b/include/uapi/linux/rpl.h >>>>> @@ -28,10 +28,10 @@ struct ipv6_rpl_sr_hdr { >>>>> pad:4, >>>>> reserved1:16; >>>>> #elif defined(__BIG_ENDIAN_BITFIELD) >>>>> - __u32 reserved:20, >>>>> + __u32 cmpri:4, >>>>> + cmpre:4, >>>>> pad:4, >>>>> - cmpri:4, >>>>> - cmpre:4; >>>>> + reserved:20; >>>>> #else >>>>> #error "Please fix <asm/byteorder.h>" >>>>> #endif >> >> cross-checking with other headers - tcp and vxlan-gpe - this patch looks >> correct. > > What are you cross-checking? >
https://tools.ietf.org/html/draft-ietf-nvo3-vxlan-gpe-10, Section 3.1 header definition and vxlanhdr_gpe in include/net/vxlan.h. The __BIG_ENDIAN_BITFIELD part follows the definition in the spec. Similarly for the TCP header - RFC header definition and tcphdr in include/uapi/linux/tcp.h. TCP header shows doff + res1 order which is comparable to cmpri + cpmre in this header as both sets are 4-bits and start a word.