[PATCH v6-S2 11/13] net/dpaa2: parse tunnel and fragmented packet types
Prashant Gupta
prashant.gupta_3 at nxp.com
Tue Oct 6 17:10:07 CEST 2026
From: Hemant Agrawal <hemant.agrawal at nxp.com>
Extend dpaa2_dev_rx_parse_new() (LX2160A FRC fast path) with new
DPAA2_PKT_TYPE_* cases for IPv4/IPv6 fragments, IPsec ESP, and GTP-U/C.
GTP-U and GTP-C cases include RTE_PTYPE_L4_UDP to reflect the UDP
outer transport. All four new types are also added to
dpaa2_supported_ptypes_get() so applications that query supported
ptypes see them advertised.
Signed-off-by: Hemant Agrawal <hemant.agrawal at nxp.com>
---
drivers/net/dpaa2/dpaa2_ethdev.c | 4 ++++
drivers/net/dpaa2/dpaa2_ethdev.h | 16 ++++++++++++++
drivers/net/dpaa2/dpaa2_rxtx.c | 36 ++++++++++++++++++++++++++++++++
3 files changed, 56 insertions(+)
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index 8b43b2e1eb..ab98fda918 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -1371,6 +1371,10 @@ dpaa2_supported_ptypes_get(struct rte_eth_dev *dev, size_t *no_of_elements)
RTE_PTYPE_L4_UDP,
RTE_PTYPE_L4_SCTP,
RTE_PTYPE_L4_ICMP,
+ RTE_PTYPE_L4_FRAG,
+ RTE_PTYPE_TUNNEL_ESP,
+ RTE_PTYPE_TUNNEL_GTPU,
+ RTE_PTYPE_TUNNEL_GTPC,
};
if (dev->rx_pkt_burst == dpaa2_dev_prefetch_rx ||
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.h b/drivers/net/dpaa2/dpaa2_ethdev.h
index 01e5bcbe78..b3f7b23e01 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.h
+++ b/drivers/net/dpaa2/dpaa2_ethdev.h
@@ -162,6 +162,10 @@
#define DPAA2_PKT_TYPE_IPV6_EXT_GRE_IPV6_UDP_TCP \
(DPAA2_PKT_TYPE_IPV6_EXT | DPAA2_PSR_SUMMARY_GRE_IPV6_UDP_TCP)
+#define DPAA2_PKT_TYPE_IPV4_FRAG \
+ (DPAA2_PSR_SUMMARY_IP_FRAG | DPAA2_PKT_TYPE_IPV4)
+#define DPAA2_PKT_TYPE_IPV6_FRAG \
+ (DPAA2_PSR_SUMMARY_IP_FRAG | DPAA2_PKT_TYPE_IPV6)
#define DPAA2_PKT_TYPE_IPV4_TCP \
(DPAA2_PSR_SUMMARY_TCP | DPAA2_PKT_TYPE_IPV4)
#define DPAA2_PKT_TYPE_IPV6_TCP \
@@ -178,6 +182,18 @@
(DPAA2_PSR_SUMMARY_ICMP | DPAA2_PKT_TYPE_IPV4)
#define DPAA2_PKT_TYPE_IPV6_ICMP \
(DPAA2_PSR_SUMMARY_ICMP | DPAA2_PKT_TYPE_IPV6)
+#define DPAA2_PKT_TYPE_IPV4_ESP \
+ (DPAA2_PSR_SUMMARY_IPSEC_ESP | DPAA2_PKT_TYPE_IPV4)
+#define DPAA2_PKT_TYPE_IPV6_ESP \
+ (DPAA2_PSR_SUMMARY_IPSEC_ESP | DPAA2_PKT_TYPE_IPV6)
+#define DPAA2_PKT_TYPE_IPV4_GTPU \
+ (DPAA2_PSR_SUMMARY_GTPU | DPAA2_PKT_TYPE_IPV4)
+#define DPAA2_PKT_TYPE_IPV6_GTPU \
+ (DPAA2_PSR_SUMMARY_GTPU | DPAA2_PKT_TYPE_IPV6)
+#define DPAA2_PKT_TYPE_IPV4_GTPC \
+ (DPAA2_PSR_SUMMARY_GTPC | DPAA2_PKT_TYPE_IPV4)
+#define DPAA2_PKT_TYPE_IPV6_GTPC \
+ (DPAA2_PSR_SUMMARY_GTPC | DPAA2_PKT_TYPE_IPV6)
#define DPAA2_PKT_TYPE_VLAN_1 0x0100
#define DPAA2_PKT_TYPE_VLAN_2 0x0200
diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c
index 0cfced6525..99e3f496d4 100644
--- a/drivers/net/dpaa2/dpaa2_rxtx.c
+++ b/drivers/net/dpaa2/dpaa2_rxtx.c
@@ -166,6 +166,42 @@ dpaa2_dev_rx_parse_new(struct dpaa2_dev_priv *priv,
m->packet_type = RTE_PTYPE_L2_ETHER |
RTE_PTYPE_L3_IPV6;
break;
+ case DPAA2_PKT_TYPE_IPV4_FRAG:
+ m->packet_type = RTE_PTYPE_L2_ETHER |
+ RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_FRAG;
+ break;
+ case DPAA2_PKT_TYPE_IPV6_FRAG:
+ m->packet_type = RTE_PTYPE_L2_ETHER |
+ RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_FRAG;
+ break;
+ case DPAA2_PKT_TYPE_IPV4_ESP:
+ m->packet_type = RTE_PTYPE_L2_ETHER |
+ RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_ESP;
+ break;
+ case DPAA2_PKT_TYPE_IPV6_ESP:
+ m->packet_type = RTE_PTYPE_L2_ETHER |
+ RTE_PTYPE_L3_IPV6 | RTE_PTYPE_TUNNEL_ESP;
+ break;
+ case DPAA2_PKT_TYPE_IPV4_GTPU:
+ m->packet_type = RTE_PTYPE_L2_ETHER |
+ RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_UDP |
+ RTE_PTYPE_TUNNEL_GTPU;
+ break;
+ case DPAA2_PKT_TYPE_IPV6_GTPU:
+ m->packet_type = RTE_PTYPE_L2_ETHER |
+ RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_UDP |
+ RTE_PTYPE_TUNNEL_GTPU;
+ break;
+ case DPAA2_PKT_TYPE_IPV4_GTPC:
+ m->packet_type = RTE_PTYPE_L2_ETHER |
+ RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_UDP |
+ RTE_PTYPE_TUNNEL_GTPC;
+ break;
+ case DPAA2_PKT_TYPE_IPV6_GTPC:
+ m->packet_type = RTE_PTYPE_L2_ETHER |
+ RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_UDP |
+ RTE_PTYPE_TUNNEL_GTPC;
+ break;
case DPAA2_PKT_TYPE_ETHER:
m->packet_type = RTE_PTYPE_L2_ETHER;
break;
--
2.43.0
More information about the dev
mailing list