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;

Reply via email to