examples/ip_fragmentation: fix MTU for i40e
[dpdk.git] / examples / ip_fragmentation / main.c
index 8d789b4..e90a61e 100644 (file)
 #define        IPV4_MTU_DEFAULT        ETHER_MTU
 #define        IPV6_MTU_DEFAULT        ETHER_MTU
 
+/*
+ * The overhead from max frame size to MTU.
+ * We have to consider the max possible overhead.
+ */
+#define MTU_OVERHEAD   \
+       (ETHER_HDR_LEN + ETHER_CRC_LEN + 2 * sizeof(struct vlan_hdr))
+
 /*
  * Default payload in bytes for the IPv6 packet.
  */
@@ -938,7 +945,7 @@ main(int argc, char **argv)
 
                /* set the mtu to the maximum received packet size */
                ret = rte_eth_dev_set_mtu(portid,
-                       local_port_conf.rxmode.max_rx_pkt_len);
+                       local_port_conf.rxmode.max_rx_pkt_len - MTU_OVERHEAD);
                if (ret < 0) {
                        printf("\n");
                        rte_exit(EXIT_FAILURE, "Set MTU failed: "