Hi, I've noticed that there is a difference between the size of rte_mbuf in a Unix build comparing to Windows.
The requirements is for rte_mbuf is to be RTE_CACHE_LINE_MIN_SIZE * 2 bytes however when I'm building it in Windows the size is RTE_CACHE_LINE_MIN_SIZE * 3. Looks like the diff results from the usage of bit fields inside rte_mbuf, from my testing it looks to me like the usage of 2 different bit fielded types inside rte_mbuf causes additional padding in Windows. For example from rte_mbuf, the following unions have the same size in Windows and Linux: union { uint32_t packet_type; // bit fields of type uint32_t will follow ... };... 4 bytes both in Unix and Windows. union { uint64_t tx_offload; // bit fields of type uint64_t will follow ... }; 8 bytes both in Unix and Windows. However when creating a struct containing both unions I'm getting sizeof 16 bytes in Unix and 24 bytes in Windows. Did someone faced this issue before? Is this a result of different alignment between gcc and clang when bit fields are used? Thanks, Tal