From 0cc23b7dde261390b0ffa7a5ba2d11603b40eafa Mon Sep 17 00:00:00 2001 From: Neale Ranns Date: Thu, 20 May 2021 16:09:40 +0000 Subject: tap: Set the MTU on the TUN deivce Type: fix For a TAP device the MTU is set via the ethernet_register for TUN we need to do it explicitly (like we do for other tunnel types). Signed-off-by: Mohsin Kazmi Signed-off-by: Neale Ranns Change-Id: Ie6a13c795acb35b53f8d99b05c70c3e73a7b428e --- src/vnet/devices/tap/tap.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src') diff --git a/src/vnet/devices/tap/tap.c b/src/vnet/devices/tap/tap.c index 5b15f92051d..dfd32588383 100644 --- a/src/vnet/devices/tap/tap.c +++ b/src/vnet/devices/tap/tap.c @@ -66,6 +66,10 @@ VNET_HW_INTERFACE_CLASS (tun_device_hw_interface_class, static) = }; /* *INDENT-ON* */ +#define TUN_MAX_PACKET_BYTES 65355 +#define TUN_MIN_PACKET_BYTES 64 +#define TUN_DEFAULT_PACKET_BYTES 1500 + static u32 virtio_eth_flag_change (vnet_main_t * vnm, vnet_hw_interface_t * hi, u32 flags) @@ -741,6 +745,15 @@ tap_create_if (vlib_main_t * vm, tap_create_if_args_t * args) { virtio_set_packet_coalesce (vif); } + if (vif->type == VIRTIO_IF_TYPE_TUN) + { + hw->max_supported_packet_bytes = TUN_MAX_PACKET_BYTES; + hw->min_packet_bytes = hw->min_supported_packet_bytes = + TUN_MIN_PACKET_BYTES; + hw->max_packet_bytes = + args->host_mtu_size ? args->host_mtu_size : TUN_DEFAULT_PACKET_BYTES; + vnet_sw_interface_set_mtu (vnm, hw->sw_if_index, hw->max_packet_bytes); + } virtio_vring_set_rx_queues (vm, vif); -- cgit 1.2.3-korg