From mboxrd@z Thu Jan 1 00:00:00 1970 From: Olivier MATZ Subject: Re: [PATCH v2 02/20] mbuf: enhance the API documentation of offload flags Date: Wed, 11 Feb 2015 16:15:33 +0100 Message-ID: <54DB7215.5020008@6wind.com> References: <1422623775-8050-1-git-send-email-olivier.matz@6wind.com> <1423041925-26956-1-git-send-email-olivier.matz@6wind.com> <1423041925-26956-3-git-send-email-olivier.matz@6wind.com> <1ED644BD7E0A5F4091CF203DAFB8E4CC01DDA2CF@SHSMSX101.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Cc: "dev-VfR2kkLFssw@public.gmane.org" To: "Liu, Jijiang" Return-path: In-Reply-To: <1ED644BD7E0A5F4091CF203DAFB8E4CC01DDA2CF-0J0gbvR4kThpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" Hi Jijiang, On 02/11/2015 08:15 AM, Liu, Jijiang wrote: >>> diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index >>> 41711fd..4b438d1 100644 >>> --- a/app/test-pmd/csumonly.c >>> +++ b/app/test-pmd/csumonly.c >>> @@ -183,16 +183,15 @@ process_inner_cksums(void *l3_hdr, uint16_t >>> ethertype, uint16_t l3_len, >>> ipv4_hdr = l3_hdr; >>> ipv4_hdr->hdr_checksum = 0; >>> >>> + ol_flags |= PKT_TX_IPV4; >>> if (tso_segsz != 0 && l4_proto == IPPROTO_TCP) { >>> ol_flags |= PKT_TX_IP_CKSUM; >>> } 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; >>> - } >>> } >>> } else if (ethertype == _htons(ETHER_TYPE_IPv6)) >>> ol_flags |= PKT_TX_IPV6; >>> @@ -261,6 +260,7 @@ process_outer_cksums(void *outer_l3_hdr, uint16_t >>> outer_ethertype, >>> >>> if (outer_ethertype == _htons(ETHER_TYPE_IPv4)) { >>> ipv4_hdr->hdr_checksum = 0; >>> + ol_flags |= PKT_TX_OUTER_IPV4; >>> > > Look at the codes again, you should extend process_outer_cksums() to support other tunneling packet. > > The code changes like below, > process_outer_cksums(void *outer_l3_hdr, struct testpmd_offload_info *info, > uint16_t testpmd_ol_flags, uint16_t l4_proto) // add the l4_proto parameter here. > ... > /* outer UDP checksum is always done in software as we have no > * hardware supporting it today, and no API for it. */ > if (l4_proto == IPPROTO_UDP) > udp_hdr = (struct udp_hdr *)((char *)outer_l3_hdr + info->outer_l3_len); > /* do not recalculate udp cksum if it was 0 */ > if (udp_hdr->dgram_cksum != 0) { > udp_hdr->dgram_cksum = 0; > if (info->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); > } > } // nothing need to do for GRE tunneling packet now > } That's correct, I'll update the code accordingly. Thanks, Olivier