[dpdk-dev] [PATCH] mbuf: fix tunnel flags check

Thomas Monjalon thomas.monjalon at 6wind.com
Thu Jul 16 01:50:12 CEST 2015


A packet is tunnelled if the tunnel type is identified or if it has
an inner part.

Fix also a typo in RTE_PTYPE_INNER_L3_MASK.

Fixes: f295a00a2b44 ("mbuf: add definitions of unified packet types")

Signed-off-by: Thomas Monjalon <thomas.monjalon at 6wind.com>
---
 app/test-pmd/rxonly.c      | 2 +-
 lib/librte_mbuf/rte_mbuf.h | 7 +++++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/app/test-pmd/rxonly.c b/app/test-pmd/rxonly.c
index 41871d3..ee7fd8d 100644
--- a/app/test-pmd/rxonly.c
+++ b/app/test-pmd/rxonly.c
@@ -288,7 +288,7 @@ pkt_burst_receive(struct fwd_stream *fs)
 			}
 
 			/* inner L3 packet type */
-			ptype = mb->packet_type & RTE_PTYPE_INNER_INNER_L3_MASK;
+			ptype = mb->packet_type & RTE_PTYPE_INNER_L3_MASK;
 			switch (ptype) {
 			case RTE_PTYPE_INNER_L3_IPV4:
 				printf(" - Inner L3 type: IPV4");
diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index 115c560..dbd9095 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -595,7 +595,7 @@ extern "C" {
 /**
  * Mask of inner layer 3 packet types.
  */
-#define RTE_PTYPE_INNER_INNER_L3_MASK       0x00f00000
+#define RTE_PTYPE_INNER_L3_MASK             0x00f00000
 /**
  * TCP (Transmission Control Protocol) packet type.
  * It is used for inner packet only.
@@ -689,7 +689,10 @@ extern "C" {
 #define  RTE_ETH_IS_IPV6_HDR(ptype) ((ptype) & RTE_PTYPE_L3_IPV6)
 
 /* Check if it is a tunneling packet */
-#define RTE_ETH_IS_TUNNEL_PKT(ptype) ((ptype) & RTE_PTYPE_TUNNEL_MASK)
+#define RTE_ETH_IS_TUNNEL_PKT(ptype) ((ptype) & (RTE_PTYPE_TUNNEL_MASK | \
+                                                 RTE_PTYPE_INNER_L2_MASK | \
+                                                 RTE_PTYPE_INNER_L3_MASK | \
+                                                 RTE_PTYPE_INNER_L4_MASK))
 #endif /* RTE_NEXT_ABI */
 
 /**
-- 
2.4.2



More information about the dev mailing list