On 11/5/2025 10:47 AM, Mingjin Ye wrote:
> The skip ipv6 extension must be offset after the IPv6 header.
>
> Fixes: 76730c7b9b5a ("app/testpmd: use packet type parsing API")
> Cc: [email protected]
>
> Signed-off-by: Mingjin Ye <[email protected]>
> ---
> app/test-pmd/csumonly.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
> index d355dbd8c0..4b24bde190 100644
> --- a/app/test-pmd/csumonly.c
> +++ b/app/test-pmd/csumonly.c
> @@ -559,6 +559,7 @@ parse_l4_proto(const struct rte_mbuf *m, uint32_t off,
> uint32_t ptype)
>
> if ((ptype & RTE_PTYPE_INNER_L3_MASK) ==
> RTE_PTYPE_INNER_L3_IPV6_EXT) {
> + off += sizeof(struct rte_ipv6_hdr);
> ret = rte_net_skip_ip6_ext(ip6h->proto, m, &off, &frag);
As patch [1/2] said, this logic has problem, consider following case:
ether + ipv6-with-option + tcp
and enable TSO offload.
It will not do TSO really, because the ptype is 0x1C1 which the INNER_L3 was
not set,
then the parse_l4_proc could not identify is ipv6-with-option, it can't
identify this
packet is TCP, then it will don't do TCP on this packet.
> if (ret < 0)
> return 0;