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

Zhang, Helin helin.zhang at intel.com
Thu Jul 16 01:57:39 CEST 2015



> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas.monjalon at 6wind.com]
> Sent: Wednesday, July 15, 2015 4:50 PM
> To: Zhang, Helin
> Cc: olivier.matz at 6wind.com; dev at dpdk.org
> Subject: [PATCH] mbuf: fix tunnel flags check
> 
> 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 */
Could you help to explain more of why here?
My understanding is that if an inner one can be recognized, there must be a tunnel type there.

Regards,
Helin

> 
>  /**
> --
> 2.4.2



More information about the dev mailing list