l2_len for tunneling packets should contain Outer_L4_len. Additionally, the current offset used for the inner Ethernet header is incorrect. This patch fixes these issues.
Fixes: 76730c7b9b5a ("app/testpmd: use packet type parsing API") Cc: sta...@dpdk.org Signed-off-by: Dengdui Huang <huangdeng...@huawei.com> --- app/test-pmd/csumonly.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index fa0002d321..6d93b7a04d 100644 --- a/app/test-pmd/csumonly.c +++ b/app/test-pmd/csumonly.c @@ -711,11 +711,11 @@ pkt_burst_checksum_forward(struct fwd_stream *fs) if (txp->parse_tunnel && RTE_ETH_IS_TUNNEL_PKT(ptype) != 0) { info.is_tunnel = 1; update_tunnel_outer(&info); - info.l2_len = hdr_lens.inner_l2_len + hdr_lens.tunnel_len; + info.l2_len = hdr_lens.inner_l2_len + hdr_lens.tunnel_len + hdr_lens.l4_len; info.l3_len = hdr_lens.inner_l3_len; info.l4_len = hdr_lens.inner_l4_len; - eth_hdr = (struct rte_ether_hdr *)(char *)l3_hdr + - info.outer_l3_len + hdr_lens.tunnel_len; + eth_hdr = (struct rte_ether_hdr *)((char *)l3_hdr + + hdr_lens.l3_len + hdr_lens.l4_len + hdr_lens.tunnel_len); info.ethertype = get_ethertype_by_ptype(eth_hdr, ptype & RTE_PTYPE_INNER_L3_MASK); tx_ol_flags |= get_tunnel_ol_flags_by_ptype(ptype); -- 2.33.0