On Tue, Feb 6, 2024 at 2:51 PM Thomas Monjalon wrote: > > 30/01/2024 12:25, Gavin Li: > > In this patch, all the VXLAN extension header will be merged with VXLAN as > > union if the overlapped field has different format among protocols. The > > existing VXLAN-GPE will be marked as deprecated and new extensions of > > VXLAN should be added to VXLAN instead of a new RTE item. > > So VXLAN GPE, GBP, and original ones will all use the same struct. > Asking confirmation to other reviewers: > - do we want to deprecate specific VXLAN GPE? For start, yes. > - do we want to plan for VXLAN GPE removal? Once deprecated, we can remove it. > > [...] > > --- a/doc/guides/rel_notes/deprecation.rst > > +++ b/doc/guides/rel_notes/deprecation.rst > > +* ethdev: The flow item ``RTE_FLOW_ITEM_TYPE_VXLAN_GPE`` is replaced with ``RTE_FLOW_ITEM_TYPE_VXLAN``. > > + The item ``RTE_FLOW_ITEM_TYPE_VXLAN_GPE``, the struct ``rte_flow_item_vxlan_gpe``, its mask ``rte_flow_item_vxlan_gpe_mask``, > > + and the header struct ``rte_vxlan_gpe_hdr`` with the macro ``RTE_ETHER_VXLAN_GPE_HLEN`` > > + will be removed in DPDK 25.11. > > [...] > > @@ -38,8 +38,65 @@ struct rte_vxlan_hdr { > > rte_be32_t vx_vni; /**< VNI (24) + Reserved (8). */ > > }; > > struct { > > - uint8_t flags; /**< Should be 8 (I flag). */ > > - uint8_t rsvd0[3]; /**< Reserved. */ > > + union { > > + uint8_t flags; /**< Should be 8 (I flag). */ > > + /* Flag bits defined by GPE */ > > + struct { > > +#if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN > > + uint8_t flag_o:1, > > + flag_b:1, > > + flag_p:1, > > + flag_i_gpe:1, > > + flag_ver:2, > > + rsvd_gpe:2; > > +#elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN > > + uint8_t rsvd_gpe:2, > > + flag_ver:2, > > + flag_i_gpe:1, > > + flag_p:1, > > + flag_b:1, > > + flag_o:1; > > +#endif > > + }; > > + /* Flag bits defined by GBP */ > > + struct { > > +#if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN > > + uint8_t rsvd_gbp1:3, > > + flag_i_gbp:1, > > + rsvd_gbp2:3, > > + flag_g:1; > > +#elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN > > + uint8_t flag_g:1, > > + rsvd_gbp1:3, > > + flag_i_gbp:1, > > + rsvd_gbp2:3; > > +#endif > > + }; > > + }; > > + union { > > + uint8_t rsvd0[3]; /**< Reserved. */ > > + /* Overlap with rte_vxlan_gpe_hdr which is deprecated.*/ > > + struct { > > + uint8_t rsvd0_gpe[2]; /**< Reserved. */ > > + uint8_t proto; /**< Next protocol. */ > > + }; > > + struct { > > +#if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN > > + uint8_t rsvd0_gbp1:3, > > + policy_applied:1, > > + rsvd0_gbp2:2, > > + dont_learn:1, > > + rsvd0_gbp3:1; > > +#elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN > > + uint8_t rsvd0_gbp1:1, > > + dont_learn:1, > > + rsvd0_gbp2:2, > > + policy_applied:1, > > + rsvd0_gbp3:3; > > +#endif > > + uint16_t policy_id; > > + }; > > + }; > > uint8_t vni[3]; /**< VXLAN identifier. */ > > uint8_t rsvd1; /**< Reserved. */ > > }; > > Naming looks OK. +1 > Any different opinion? > >