When the max rx packet length is smaller than the sum of mtu size and
ether overhead size, it should be enlarged, otherwise the VLAN packets
will be dropped.

Fixes: 35b2d13fd6fd ("net: add rte prefix to ether defines")

Signed-off-by: SteveX Yang <stevex.y...@intel.com>
---
 app/test-pmd/testpmd.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 33fc0fddf..c263121a9 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -1421,6 +1421,7 @@ init_config(void)
        struct rte_gro_param gro_param;
        uint32_t gso_types;
        uint16_t data_size;
+       uint16_t overhead_len;
        bool warning = 0;
        int k;
        int ret;
@@ -1457,6 +1458,28 @@ init_config(void)
                        rte_exit(EXIT_FAILURE,
                                 "rte_eth_dev_info_get() failed\n");
 
+               /* Update the max_rx_pkt_len to have MTU as RTE_ETHER_MTU */
+               if (port->dev_info.max_rx_pktlen && port->dev_info.max_mtu)
+                       overhead_len = port->dev_info.max_rx_pktlen -
+                               port->dev_info.max_mtu;
+               else
+                       overhead_len = RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN;
+
+               port->dev_conf.rxmode.max_rx_pkt_len =
+                                               RTE_ETHER_MTU + overhead_len;
+
+               /*
+                * This is workaround to avoid resize max rx packet len.
+                * Ethdev assumes jumbo frame size must be greater than
+                * RTE_ETHER_MAX_LEN, and will resize 'max_rx_pkt_len' to
+                * default value when it is greater than RTE_ETHER_MAX_LEN
+                * for normal frame.
+                */
+               if (port->dev_conf.rxmode.max_rx_pkt_len > RTE_ETHER_MAX_LEN) {
+                       port->dev_conf.rxmode.offloads |=
+                                               DEV_RX_OFFLOAD_JUMBO_FRAME;
+               }
+
                if (!(port->dev_info.tx_offload_capa &
                      DEV_TX_OFFLOAD_MBUF_FAST_FREE))
                        port->dev_conf.txmode.offloads &=
-- 
2.17.1

Reply via email to