From 66593a6a63fe30ed4b8bed96844244d78274e8f2 Mon Sep 17 00:00:00 2001 From: Artem Glazychev Date: Fri, 18 Feb 2022 12:23:20 +0700 Subject: [PATCH] vnet: add set_max_frame_size callbacks for several interfaces This is required after distinguishing between max_frame_size and MTU Type: fix Signed-off-by: Artem Glazychev Change-Id: Ie642bee4e30ca76903bb8be5eeb6914c2c09bf35 --- src/plugins/memif/memif.c | 9 +++++++++ src/vnet/devices/tap/tap.c | 9 +++++++++ src/vnet/vxlan/vxlan.c | 9 +++++++++ 3 files changed, 27 insertions(+) diff --git a/src/plugins/memif/memif.c b/src/plugins/memif/memif.c index f2575fde787..2b25a82f5dd 100644 --- a/src/plugins/memif/memif.c +++ b/src/plugins/memif/memif.c @@ -50,6 +50,14 @@ memif_eth_flag_change (vnet_main_t * vnm, vnet_hw_interface_t * hi, u32 flags) return 0; } +static clib_error_t * +memif_eth_set_max_frame_size (vnet_main_t *vnm, vnet_hw_interface_t *hi, + u32 flags) +{ + /* nothing for now */ + return 0; +} + static void memif_queue_intfd_close (memif_queue_t * mq) { @@ -1018,6 +1026,7 @@ memif_create_if (vlib_main_t * vm, memif_create_if_args_t * args) eir.dev_instance = mif->dev_instance; eir.address = args->hw_addr; eir.cb.flag_change = memif_eth_flag_change; + eir.cb.set_max_frame_size = memif_eth_set_max_frame_size; mif->hw_if_index = vnet_eth_register_interface (vnm, &eir); } else if (mif->mode == MEMIF_INTERFACE_MODE_IP) diff --git a/src/vnet/devices/tap/tap.c b/src/vnet/devices/tap/tap.c index 370e738bcf1..0fa2e5d95af 100644 --- a/src/vnet/devices/tap/tap.c +++ b/src/vnet/devices/tap/tap.c @@ -77,6 +77,14 @@ virtio_eth_flag_change (vnet_main_t * vnm, vnet_hw_interface_t * hi, return 0; } +static clib_error_t * +virtio_eth_set_max_frame_size (vnet_main_t *vnm, vnet_hw_interface_t *hi, + u32 frame_size) +{ + /* nothing for now */ + return 0; +} + #define TAP_MAX_INSTANCE 1024 static void @@ -650,6 +658,7 @@ tap_create_if (vlib_main_t * vm, tap_create_if_args_t * args) eir.dev_instance = vif->dev_instance; eir.address = vif->mac_addr; eir.cb.flag_change = virtio_eth_flag_change; + eir.cb.set_max_frame_size = virtio_eth_set_max_frame_size; vif->hw_if_index = vnet_eth_register_interface (vnm, &eir); } else diff --git a/src/vnet/vxlan/vxlan.c b/src/vnet/vxlan/vxlan.c index f394b6b7c89..efe629c6eba 100644 --- a/src/vnet/vxlan/vxlan.c +++ b/src/vnet/vxlan/vxlan.c @@ -52,6 +52,14 @@ vxlan_eth_flag_change (vnet_main_t *vnm, vnet_hw_interface_t *hi, u32 flags) return 0; } +static clib_error_t * +vxlan_eth_set_max_frame_size (vnet_main_t *vnm, vnet_hw_interface_t *hw, + u32 frame_size) +{ + /* nothing for now */ + return 0; +} + static u8 * format_decap_next (u8 * s, va_list * args) { @@ -470,6 +478,7 @@ int vnet_vxlan_add_del_tunnel eir.dev_instance = dev_instance; eir.address = hw_addr; eir.cb.flag_change = vxlan_eth_flag_change; + eir.cb.set_max_frame_size = vxlan_eth_set_max_frame_size; t->hw_if_index = vnet_eth_register_interface (vnm, &eir); } -- 2.16.6