Hi Andrew,

Packet type was not set for fragmented packets so we are trying to set it in all possible scenarios.

 

I believe TCP packets can be fragmented.

 

Thanks,

Pankaj

 

From: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Date: Wednesday, May 4, 2022 at 8:08 AM
To: Pankaj Gupta <pagupta@vmware.com>, Jochen Behrens <jbehrens@vmware.com>, Yong Wang <yongwang@vmware.com>
Cc: dev@dpdk.org <dev@dpdk.org>
Subject: Re: [PATCH 7/8] vmxnet3: Set packet for fragmented packet

External Email

On 5/3/22 07:22, Pankaj Gupta wrote:
> The packet type is set even if it is a fragmented packet

I'm wondering if is really IPv4/IPv6 fragmented packets or just
scattered on Rx across many Rx buffers.
I'm asking since fragmented sounds weird with TCP, since TCP
spec forbids fragmentation.

>
> Tested, using testpmd, for different hardware versions on
> ESXi 7.0 Update 2.
>
> Signed-off-by: Pankaj Gupta <pagupta@vmware.com>
> ---
>   drivers/net/vmxnet3/vmxnet3_rxtx.c | 17 +++++++++++++++++
>   1 file changed, 17 insertions(+)
>
> diff --git a/drivers/net/vmxnet3/vmxnet3_rxtx.c b/drivers/net/vmxnet3/vmxnet3_rxtx.c
> index a6665fbf70..5e177400c0 100644
> --- a/drivers/net/vmxnet3/vmxnet3_rxtx.c
> +++ b/drivers/net/vmxnet3/vmxnet3_rxtx.c
> @@ -759,6 +759,23 @@ vmxnet3_rx_offload(struct vmxnet3_hw *hw, const Vmxnet3_RxCompDesc *rcd,
>               /* Check packet type, checksum errors, etc. */
>               if (rcd->cnc) {
>                       ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_UNKNOWN;
> +
> +                     if (rcd->v4) {
> +                             packet_type |= RTE_PTYPE_L3_IPV4_EXT_UNKNOWN;
> +                             if (rcd->tcp)
> +                                     packet_type |= RTE_PTYPE_L4_TCP;
> +                             else if (rcd->udp)
> +                                     packet_type |= RTE_PTYPE_L4_UDP;
> +                     } else if (rcd->v6) {
> +                             packet_type |= RTE_PTYPE_L3_IPV6_EXT_UNKNOWN;
> +                             if (rcd->tcp)
> +                                     packet_type |= RTE_PTYPE_L4_TCP;
> +                             else if (rcd->udp)
> +                                     packet_type |= RTE_PTYPE_L4_UDP;
> +                     } else {
> +                             packet_type |= RTE_PTYPE_UNKNOWN;
> +                     }
> +
>               } else {
>                       if (rcd->v4) {
>                               packet_type |= RTE_PTYPE_L3_IPV4_EXT_UNKNOWN;


________________________________

External Email: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender.