[PATCH 4/8] ethdev: use GRE protocol struct for flow matching
David Marchand
david.marchand at redhat.com
Wed Oct 26 10:45:03 CEST 2022
On Tue, Oct 25, 2022 at 11:45 PM Thomas Monjalon <thomas at monjalon.net> wrote:
> diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h
> index 6045a352ae..fd9be56e31 100644
> --- a/lib/ethdev/rte_flow.h
> +++ b/lib/ethdev/rte_flow.h
> @@ -1069,19 +1069,29 @@ static const struct rte_flow_item_mpls rte_flow_item_mpls_mask = {
> *
> * Matches a GRE header.
> */
> +RTE_STD_C11
> struct rte_flow_item_gre {
> - /**
> - * Checksum (1b), reserved 0 (12b), version (3b).
> - * Refer to RFC 2784.
> - */
> - rte_be16_t c_rsvd0_ver;
> - rte_be16_t protocol; /**< Protocol type. */
> + union {
> + struct {
> + /*
> + * These are old fields kept for compatibility.
> + * Please prefer hdr field below.
> + */
> + /**
> + * Checksum (1b), reserved 0 (12b), version (3b).
> + * Refer to RFC 2784.
> + */
> + rte_be16_t c_rsvd0_ver;
> + rte_be16_t protocol; /**< Protocol type. */
> + };
> + struct rte_gre_hdr hdr; /**< GRE header definition. */
> + };
> };
>
> /** Default mask for RTE_FLOW_ITEM_TYPE_GRE. */
> #ifndef __cplusplus
> static const struct rte_flow_item_gre rte_flow_item_gre_mask = {
> - .protocol = RTE_BE16(0xffff),
> + .hdr.proto = RTE_BE16(UINT16_MAX),
The proto field in struct rte_gre_hdr from lib/net lacks endianness annotation.
This triggers a sparse warning (from OVS dpdk-latest build):
/home/runner/work/ovs/ovs/dpdk-dir/build/include/rte_flow.h:1095:22:
error: incorrect type in initializer (different base types)
/home/runner/work/ovs/ovs/dpdk-dir/build/include/rte_flow.h:1095:22:
expected unsigned short [usertype] proto
/home/runner/work/ovs/ovs/dpdk-dir/build/include/rte_flow.h:1095:22:
got restricted ovs_be16 [usertype]
--
David Marchand
More information about the dev
mailing list