DPDK patches and discussions
 help / color / mirror / Atom feed
From: Ferruh Yigit <ferruh.yigit@intel.com>
To: Raslan Darawsheh <rasland@mellanox.com>,
	bernard.iremonger@intel.com, jingjing.wu@intel.com,
	wenzhuo.lu@intel.com
Cc: dev@dpdk.org, stable@dpdk.org
Subject: Re: [dpdk-dev] [PATCH] app/testpmd: add parsing for multiple VLAN headers
Date: Tue, 21 Apr 2020 21:47:42 +0100	[thread overview]
Message-ID: <47904639-c8d6-ca2a-9ba4-beec991ed04a@intel.com> (raw)
In-Reply-To: <1587396746-409-1-git-send-email-rasland@mellanox.com>

On 4/20/2020 4:32 PM, Raslan Darawsheh wrote:
> When having multiple VLANs in the packet, parse_ethernet
> is cabable of parsing only the first vlan.
> 
> add parsing for mutliple VLAN headers in the packet.
> 
> Fixes: 51f694dd40f5 ("app/testpmd: rework checksum forward engine")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Raslan Darawsheh <rasland@mellanox.com>
> ---
>  app/test-pmd/csumonly.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
> index fe19615..b0665f7 100644
> --- a/app/test-pmd/csumonly.c
> +++ b/app/test-pmd/csumonly.c
> @@ -139,22 +139,22 @@ parse_ipv6(struct rte_ipv6_hdr *ipv6_hdr, struct testpmd_offload_info *info)
>  
>  /*
>   * Parse an ethernet header to fill the ethertype, l2_len, l3_len and
> - * ipproto. This function is able to recognize IPv4/IPv6 with one optional vlan
> - * header. The l4_len argument is only set in case of TCP (useful for TSO).
> + * ipproto. This function is able to recognize IPv4/IPv6 with optional VLAN
> + * headers. The l4_len argument is only set in case of TCP (useful for TSO).
>   */
>  static void
>  parse_ethernet(struct rte_ether_hdr *eth_hdr, struct testpmd_offload_info *info)
>  {
>  	struct rte_ipv4_hdr *ipv4_hdr;
>  	struct rte_ipv6_hdr *ipv6_hdr;
> +	struct rte_vlan_hdr *vlan_hdr;
>  
>  	info->l2_len = sizeof(struct rte_ether_hdr);
>  	info->ethertype = eth_hdr->ether_type;
>  
> -	if (info->ethertype == _htons(RTE_ETHER_TYPE_VLAN)) {
> -		struct rte_vlan_hdr *vlan_hdr = (
> -			struct rte_vlan_hdr *)(eth_hdr + 1);
> -
> +	while (info->ethertype == _htons(RTE_ETHER_TYPE_VLAN)) {
> +		vlan_hdr = (struct rte_vlan_hdr *)
> +			((char *)eth_hdr + info->l2_len);
>  		info->l2_len  += sizeof(struct rte_vlan_hdr);
>  		info->ethertype = vlan_hdr->eth_proto;
>  	}
> 

Can an ethernet packet have multiple VLAN header, according IEEE 802.1Q there
can be only single VLAN header, if this is for QinQ will both TPID be same and
0x8100 (RTE_ETHER_TYPE_VLAN)?

  parent reply	other threads:[~2020-04-21 20:47 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-20 15:32 Raslan Darawsheh
2020-04-21 14:54 ` Iremonger, Bernard
2020-04-21 20:47 ` Ferruh Yigit [this message]
2020-04-22 11:05   ` Iremonger, Bernard
2020-04-22 11:28     ` Raslan Darawsheh
2020-04-22  7:22 ` Ori Kam
2020-04-23  8:41 ` [dpdk-dev] [PATCH v2] " Raslan Darawsheh
2020-04-23  8:59   ` Iremonger, Bernard
2020-04-23  9:01     ` Raslan Darawsheh
2020-04-23  9:05   ` [dpdk-dev] [PATCH v3] app/testpmd: add parsing for QINQ " Raslan Darawsheh
2020-04-24 16:35     ` Ferruh Yigit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=47904639-c8d6-ca2a-9ba4-beec991ed04a@intel.com \
    --to=ferruh.yigit@intel.com \
    --cc=bernard.iremonger@intel.com \
    --cc=dev@dpdk.org \
    --cc=jingjing.wu@intel.com \
    --cc=rasland@mellanox.com \
    --cc=stable@dpdk.org \
    --cc=wenzhuo.lu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).