On Sun, 31 May 2020 17:43:29 +0300 Dekel Peled <dek...@mellanox.com> wrote:
> Using the current implementation of DPDK, an application cannot > match on fragmented/non-fragmented IPv6 packets in a simple way. > > In current implementation: > IPv6 header doesn't contain information regarding the packet > fragmentation. > Fragmented IPv6 packets contain a dedicated extension header, as > detailed in RFC [1], which is not yet supported in rte_flow. > Non-fragmented packets don't contain the fragment extension header. > For an application to match on non-fragmented IPv6 packets, the > current implementation doesn't provide a suitable solution. > Matching on the Next Header field is not sufficient, since additional > extension headers might be present in the same packet. > To match on fragmented IPv6 packets, the same difficulty exists. > > Proposed update: > An additional value will be added to IPv6 header struct. > This value will contain the fragmentation attribute of the packet, > providing simple means for identification of fragmented and > non-fragmented packets. > > This update changes ABI, and is proposed for the 20.11 LTS version. > > [1] http://mails.dpdk.org/archives/dev/2020-March/160255.html > > Signed-off-by: Dekel Peled <dek...@mellanox.com> > --- > lib/librte_ethdev/rte_flow.h | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h > index b0e4199..3bc8ce1 100644 > --- a/lib/librte_ethdev/rte_flow.h > +++ b/lib/librte_ethdev/rte_flow.h > @@ -787,6 +787,8 @@ struct rte_flow_item_ipv4 { > */ > struct rte_flow_item_ipv6 { > struct rte_ipv6_hdr hdr; /**< IPv6 header definition. */ > + uint32_t is_frag:1; /**< Is IPv6 packet fragmented/non-fragmented. */ > + uint32_t reserved:31; /**< Reserved, must be zero. */ > }; You can't do this in the 20.08 release it would be an ABI breakage.