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;
> +     };
> +};



Reply via email to