From: Jeff Guo Date: Wed, 5 Apr 2017 04:48:43 +0000 (+0800) Subject: app/testpmd: fix IPv6 tunnel checksum X-Git-Tag: spdx-start~3677 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=3c32113a1aac;p=dpdk.git app/testpmd: fix IPv6 tunnel checksum When ipv6 packet is tunnel packet, "PKT_TX_OUTER_IPV6" flag must be set, to let prepare the correct mbuf meta data for tx forward. Fixes: 2b76648872c9 ("net/e1000: add Tx preparation") Cc: stable@dpdk.org Signed-off-by: Jeff Guo --- diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index 5eaff9b2ff..66fc9a00c7 100644 --- a/app/test-pmd/csumonly.c +++ b/app/test-pmd/csumonly.c @@ -417,7 +417,7 @@ process_outer_cksums(void *outer_l3_hdr, struct testpmd_offload_info *info, ol_flags |= PKT_TX_OUTER_IP_CKSUM; else ipv4_hdr->hdr_checksum = rte_ipv4_cksum(ipv4_hdr); - } else if (testpmd_ol_flags & TESTPMD_TX_OFFLOAD_OUTER_IP_CKSUM) + } else ol_flags |= PKT_TX_OUTER_IPV6; if (info->outer_l4_proto != IPPROTO_UDP) @@ -756,7 +756,9 @@ pkt_burst_checksum_forward(struct fwd_stream *fs) if (info.is_tunnel == 1) { if (info.tunnel_tso_segsz || - testpmd_ol_flags & TESTPMD_TX_OFFLOAD_OUTER_IP_CKSUM) { + (testpmd_ol_flags & + TESTPMD_TX_OFFLOAD_OUTER_IP_CKSUM) || + (tx_ol_flags & PKT_TX_OUTER_IPV6)) { m->outer_l2_len = info.outer_l2_len; m->outer_l3_len = info.outer_l3_len; m->l2_len = info.l2_len; @@ -826,8 +828,9 @@ pkt_burst_checksum_forward(struct fwd_stream *fs) "m->l4_len=%d\n", m->l2_len, m->l3_len, m->l4_len); if (info.is_tunnel == 1) { - if (testpmd_ol_flags & - TESTPMD_TX_OFFLOAD_OUTER_IP_CKSUM) + if ((testpmd_ol_flags & + TESTPMD_TX_OFFLOAD_OUTER_IP_CKSUM) || + (tx_ol_flags & PKT_TX_OUTER_IPV6)) printf("tx: m->outer_l2_len=%d " "m->outer_l3_len=%d\n", m->outer_l2_len,