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 <pagu...@vmware.com>
Reviewed-by: Jochen Behrens <jbehr...@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 c94e3762e6..a875ffec07 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;
-- 
2.17.1

Reply via email to