#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.
*/
/* 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: "