All of lore.kernel.org
 help / color / mirror / Atom feed
From: Olivier MATZ <olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
To: Jijiang Liu <jijiang.liu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	dev-VfR2kkLFssw@public.gmane.org
Subject: Re: [PATCH 3/3] testpmd:rework csum forward engine
Date: Thu, 27 Nov 2014 11:23:36 +0100	[thread overview]
Message-ID: <5476FBA8.90706@6wind.com> (raw)
In-Reply-To: <1417076319-629-4-git-send-email-jijiang.liu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>

Hi Jijiang,

On 11/27/2014 09:18 AM, Jijiang Liu wrote:
> The changes include:
> 1. use the new introduced ol_flags and fields in csumonly.c file;
> 2. fix an issue of outer UDP checksum check;
> 3. fix an issue that is if the TESTPMD_TX_OFFLOAD_IP_CKSUM is not set, and the "ol_flags |= PKT_TX_IPV4" should be done in the process_inner_cksums();
>
> Signed-off-by: Jijiang Liu <jijiang.liu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> ---
>   app/test-pmd/csumonly.c |   55 +++++++++++++++++++++++++---------------------
>   1 files changed, 30 insertions(+), 25 deletions(-)
>
> diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
> index d8c080a..0727510 100644
> --- a/app/test-pmd/csumonly.c
> +++ b/app/test-pmd/csumonly.c
> @@ -189,11 +189,12 @@ process_inner_cksums(void *l3_hdr, uint16_t ethertype, uint16_t l3_len,
>   		} else {
>   			if (testpmd_ol_flags & TESTPMD_TX_OFFLOAD_IP_CKSUM)
>   				ol_flags |= PKT_TX_IP_CKSUM;
> -			else
> +			else {
>   				ipv4_hdr->hdr_checksum =
>   					rte_ipv4_cksum(ipv4_hdr);
> +				ol_flags |= PKT_TX_IPV4;
> +			}
>   		}
> -		ol_flags |= PKT_TX_IPV4;

Same remark than in the cover letter. I think we currently don't agree
on the meaning of PKT_TX_IPV4 and PKT_TX_IPV6.


>   	udp_hdr = (struct udp_hdr *)((char *)outer_l3_hdr + outer_l3_len);
>   	/* do not recalculate udp cksum if it was 0 */
>   	if (udp_hdr->dgram_cksum != 0) {
>   		udp_hdr->dgram_cksum = 0;
> -		if ((testpmd_ol_flags & TESTPMD_TX_OFFLOAD_VXLAN_CKSUM) == 0) {
> -			if (outer_ethertype == _htons(ETHER_TYPE_IPv4))
> -				udp_hdr->dgram_cksum =
> -					rte_ipv4_udptcp_cksum(ipv4_hdr, udp_hdr);
> -			else
> -				udp_hdr->dgram_cksum =
> -					rte_ipv6_udptcp_cksum(ipv6_hdr, udp_hdr);
> -		}
> +		if (outer_ethertype == _htons(ETHER_TYPE_IPv4))
> +			udp_hdr->dgram_cksum =
> +				rte_ipv4_udptcp_cksum(ipv4_hdr, udp_hdr);
> +		else
> +			udp_hdr->dgram_cksum =
> +				rte_ipv6_udptcp_cksum(ipv6_hdr, udp_hdr);

So, I understand that today no dpdk driver support the offload of
outer udp checksum, and that it has to be done in software?


> @@ -383,10 +385,6 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
>   			if (((m->ol_flags & PKT_RX_TUNNEL_IPV4_HDR) ||
>   					(m->ol_flags & PKT_RX_TUNNEL_IPV6_HDR)))
>   				tunnel = 1;
> -			/* else check udp destination port, 4789 is the default
> -			 * vxlan port (rfc7348) */
> -			else if (udp_hdr->dst_port == _htons(4789))
> -				tunnel = 1;
>
>   			if (tunnel == 1) {
>   				outer_ethertype = ethertype;
> @@ -394,6 +392,11 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
>   				outer_l3_len = l3_len;
>   				outer_l3_hdr = l3_hdr;
>
> +				/* check udp destination port, 4789 is the default
> +				 * vxlan port (rfc7348) */
> +				if (udp_hdr->dst_port == _htons(4789))
> +					l4_tun_len = ETHER_VXLAN_HLEN;
> +

Why moving this? It won't work anymore with drivers != i40e.


>   				eth_hdr = (struct ether_hdr *)((char *)udp_hdr +
>   					sizeof(struct udp_hdr) +
>   					sizeof(struct vxlan_hdr));
> @@ -432,10 +435,11 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
>
>   		if (tunnel == 1) {
>   			if (testpmd_ol_flags & TESTPMD_TX_OFFLOAD_VXLAN_CKSUM) {
> -				m->l2_len = outer_l2_len;
> -				m->l3_len = outer_l3_len;
> -				m->inner_l2_len = l2_len;
> -				m->inner_l3_len = l3_len;
> +				m->outer_l2_len = outer_l2_len;
> +				m->outer_l3_len = outer_l3_len;
> +				m->l2_len = l2_len;
> +				m->l3_len = l3_len;
> +				m->l4_tun_len = l4_tun_len;
>   			}
>   			else {
>   				/* if we don't do vxlan cksum in hw,
> @@ -470,7 +474,7 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
>   				{ PKT_TX_UDP_CKSUM, PKT_TX_L4_MASK },
>   				{ PKT_TX_TCP_CKSUM, PKT_TX_L4_MASK },
>   				{ PKT_TX_SCTP_CKSUM, PKT_TX_L4_MASK },
> -				{ PKT_TX_VXLAN_CKSUM, PKT_TX_VXLAN_CKSUM },
> +				{ PKT_TX_UDP_TUNNEL_PKT, PKT_TX_UDP_TUNNEL_PKT },
>   				{ PKT_TX_TCP_SEG, PKT_TX_TCP_SEG },
>   			};
>   			unsigned j;
> @@ -498,8 +502,9 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
>   					m->l2_len, m->l3_len, m->l4_len);
>   			if ((tunnel == 1) &&
>   				(testpmd_ol_flags & TESTPMD_TX_OFFLOAD_VXLAN_CKSUM))
> -				printf("tx: m->inner_l2_len=%d m->inner_l3_len=%d\n",
> -					m->inner_l2_len, m->inner_l3_len);
> +				printf("tx: m->outer_l2_len=%d m->outer_l3_len=%d\n"
> +					"m->l4_tun_len=%d", m->outer_l2_len,
> +					m->outer_l3_len, m->l4_tun_len);
>   			if (tso_segsz != 0)
>   				printf("tx: m->tso_segsz=%d\n", m->tso_segsz);
>   			printf("tx: flags=");
>

One more comment:

I think the help of csum forward engine in testpmd command lines +
all the comments in csumonly.c should be checked. For example, I
can see: " The VxLAN flag concerns the outer IP and UDP layer (if
packet is recognized as a vxlan packet)". If it concerns the IP header
only, the comment should be modified.

Regards,
Olivier

  parent reply	other threads:[~2014-11-27 10:23 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-27  8:18 [PATCH 0/3] i40e VXLAN TX checksum rework Jijiang Liu
     [not found] ` <1417076319-629-1-git-send-email-jijiang.liu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-11-27  8:18   ` [PATCH 1/3] mbuf:add two TX offload flags and change three fields Jijiang Liu
     [not found]     ` <1417076319-629-2-git-send-email-jijiang.liu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-11-27 10:00       ` Olivier MATZ
     [not found]         ` <5476F626.2020708-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-11-27 13:14           ` Liu, Jijiang
     [not found]             ` <1ED644BD7E0A5F4091CF203DAFB8E4CC01D9EE79-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-11-28  9:17               ` Olivier MATZ
     [not found]         ` <1ED644BD7E0A5F4091CF203DAFB8E4CC01D9EEA0@SHSMSX101.ccr.corp.intel.com>
     [not found]           ` <1ED644BD7E0A5F4091CF203DAFB8E4CC01D9EEA0-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-11-27 14:56             ` Ananyev, Konstantin
     [not found]               ` <2601191342CEEE43887BDE71AB977258213BADB8-kPTMFJFq+rEu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-11-27 17:01                 ` Ananyev, Konstantin
     [not found]                   ` <2601191342CEEE43887BDE71AB977258213BAE90-kPTMFJFq+rEu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-11-28 10:45                     ` Olivier MATZ
     [not found]                       ` <54785264.1020208-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-11-28 11:16                         ` Ananyev, Konstantin
2014-11-30 14:50                         ` Ananyev, Konstantin
     [not found]                           ` <2601191342CEEE43887BDE71AB977258213BB795-kPTMFJFq+rEu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-01  2:30                             ` Liu, Jijiang
     [not found]                               ` <1ED644BD7E0A5F4091CF203DAFB8E4CC01D9F58E-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-01  9:52                                 ` Olivier MATZ
     [not found]                                   ` <547C3A43.8020009-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-12-01 11:58                                     ` Ananyev, Konstantin
     [not found]                                       ` <2601191342CEEE43887BDE71AB977258213BBB21-kPTMFJFq+rEu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-01 12:28                                         ` Olivier MATZ
     [not found]                                           ` <547C5EE7.1060100-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-12-01 13:07                                             ` Liu, Jijiang
     [not found]                                               ` <1ED644BD7E0A5F4091CF203DAFB8E4CC01D9F7B3-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-01 14:31                                                 ` Ananyev, Konstantin
2014-11-27  8:18   ` [PATCH 2/3] i40e:PMD change for VXLAN TX checksum Jijiang Liu
2014-11-27  8:18   ` [PATCH 3/3] testpmd:rework csum forward engine Jijiang Liu
     [not found]     ` <1417076319-629-4-git-send-email-jijiang.liu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-11-27 10:23       ` Olivier MATZ [this message]
2014-11-27  8:50   ` [PATCH 0/3] i40e VXLAN TX checksum rework Liu, Jijiang
2014-11-27  9:44   ` Olivier MATZ
     [not found]     ` <5476F28F.7010802-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-11-27 10:12       ` Olivier MATZ
     [not found]         ` <5476F919.9030906-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-11-27 12:06           ` Liu, Jijiang
2014-11-27 12:07       ` Liu, Jijiang
2014-11-27 15:29       ` Ananyev, Konstantin
     [not found]         ` <2601191342CEEE43887BDE71AB977258213BADE4-kPTMFJFq+rEu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-11-27 16:31           ` Liu, Jijiang
     [not found]             ` <1ED644BD7E0A5F4091CF203DAFB8E4CC01D9EF72-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-12-03  8:02               ` Liu, Jijiang
2014-11-28  9:26           ` Olivier MATZ

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=5476FBA8.90706@6wind.com \
    --to=olivier.matz-pdr9zngts4eavxtiumwx3w@public.gmane.org \
    --cc=dev-VfR2kkLFssw@public.gmane.org \
    --cc=jijiang.liu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.