[PATCH 7/8] vmxnet3: Set packet for fragmented packet

Andrew Rybchenko andrew.rybchenko at oktetlabs.ru
Wed May 4 17:07:59 CEST 2022


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 at 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;



More information about the dev mailing list