]> git.droids-corp.org - dpdk.git/commitdiff
net/vmxnet3: set packet type for fragmented packet
authorPankaj Gupta <pagupta@vmware.com>
Wed, 25 May 2022 00:40:27 +0000 (17:40 -0700)
committerAndrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Tue, 31 May 2022 13:36:37 +0000 (15:36 +0200)
The packet type is set even if it is a fragmented packet.

Tested, using testpmd, for different hardware versions on ESXi 7.0
Update 2.

Signed-off-by: Pankaj Gupta <pagupta@vmware.com>
Reviewed-by: Jochen Behrens <jbehrens@vmware.com>
drivers/net/vmxnet3/vmxnet3_rxtx.c

index c94e3762e659f56d8b57a27eba1435428805358e..a875ffec07b679d88037c9abe8ad7157239da69f 100644 (file)
@@ -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;