[dpdk-dev] [PATCH v2 02/20] mbuf: enhance the API documentation of offload flags
Olivier MATZ
olivier.matz at 6wind.com
Wed Feb 11 16:15:33 CET 2015
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
More information about the dev
mailing list