18/04/2021 17:51, Gregory Etelson: > +__extension__ That still doesn't make sense, as in v5. The things which require a macro are anonymous union, anonymous struct and some bit fields with special sizes.
> +struct rte_flow_item_integrity { > + /**< Tunnel encapsulation level the item should apply to. > + * @see rte_flow_action_rss > + */ > + uint32_t level; Should have RTE_STD_C11 here. > + union { Should have RTE_STD_C11 here. > + struct { > + /**< The packet is valid after passing all HW checks. */ > + uint64_t packet_ok:1; > + /**< L2 layer is valid after passing all HW checks. */ > + uint64_t l2_ok:1; > + /**< L3 layer is valid after passing all HW checks. */ > + uint64_t l3_ok:1; > + /**< L4 layer is valid after passing all HW checks. */ > + uint64_t l4_ok:1; > + /**< L2 layer CRC is valid. */ > + uint64_t l2_crc_ok:1; > + /**< IPv4 layer checksum is valid. */ > + uint64_t ipv4_csum_ok:1; > + /**< L4 layer checksum is valid. */ > + uint64_t l4_csum_ok:1; > + /**< The l3 length is smaller than the frame length. */ > + uint64_t l3_len_ok:1; > + uint64_t reserved:56; The reserved space looks useless since it is in an union. > + }; I'm not sure about the 64-bit bitfields. Maybe that's why you need __extension__. I feel 32 bits are enough. > + uint64_t value; > + }; > +};