diff options
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/avf/device.c | 12 | ||||
-rw-r--r-- | src/plugins/dpdk/device/format.c | 4 | ||||
-rw-r--r-- | src/plugins/dpdk/device/init.c | 52 |
3 files changed, 13 insertions, 55 deletions
diff --git a/src/plugins/avf/device.c b/src/plugins/avf/device.c index 713953fe4c6..6bf1fe05f05 100644 --- a/src/plugins/avf/device.c +++ b/src/plugins/avf/device.c @@ -899,6 +899,7 @@ avf_process_one_device (vlib_main_t * vm, avf_device_t * ad, int is_irq) int link_up = e->event_data.link_event.link_status; virtchnl_link_speed_t speed = e->event_data.link_event.link_speed; u32 flags = 0; + u32 kbps = 0; if (link_up && (ad->flags & AVF_DEVICE_F_LINK_UP) == 0) { @@ -906,16 +907,17 @@ avf_process_one_device (vlib_main_t * vm, avf_device_t * ad, int is_irq) flags |= (VNET_HW_INTERFACE_FLAG_FULL_DUPLEX | VNET_HW_INTERFACE_FLAG_LINK_UP); if (speed == VIRTCHNL_LINK_SPEED_40GB) - flags |= VNET_HW_INTERFACE_FLAG_SPEED_40G; + kbps = 40000000; else if (speed == VIRTCHNL_LINK_SPEED_25GB) - flags |= VNET_HW_INTERFACE_FLAG_SPEED_25G; + kbps = 25000000; else if (speed == VIRTCHNL_LINK_SPEED_10GB) - flags |= VNET_HW_INTERFACE_FLAG_SPEED_10G; + kbps = 10000000; else if (speed == VIRTCHNL_LINK_SPEED_1GB) - flags |= VNET_HW_INTERFACE_FLAG_SPEED_1G; + kbps = 1000000; else if (speed == VIRTCHNL_LINK_SPEED_100MB) - flags |= VNET_HW_INTERFACE_FLAG_SPEED_100M; + kbps = 100000; vnet_hw_interface_set_flags (vnm, ad->hw_if_index, flags); + vnet_hw_interface_set_link_speed (vnm, ad->hw_if_index, kbps); ad->link_speed = speed; } else if (!link_up && (ad->flags & AVF_DEVICE_F_LINK_UP) != 0) diff --git a/src/plugins/dpdk/device/format.c b/src/plugins/dpdk/device/format.c index ef15055094a..fdc2850e7e0 100644 --- a/src/plugins/dpdk/device/format.c +++ b/src/plugins/dpdk/device/format.c @@ -398,8 +398,8 @@ format_dpdk_link_status (u8 * s, va_list * args) s = format (s, "%s duplex ", (l->link_duplex == ETH_LINK_FULL_DUPLEX) ? "full" : "half"); - s = format (s, "speed %u mtu %d %s\n", l->link_speed, - hi->max_packet_bytes, promisc ? " promisc" : ""); + s = format (s, "mtu %d %s\n", hi->max_packet_bytes, promisc ? + " promisc" : ""); } else s = format (s, "\n"); diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c index c130dbce5df..fcdc29bfdc4 100644 --- a/src/plugins/dpdk/device/init.c +++ b/src/plugins/dpdk/device/init.c @@ -1584,54 +1584,10 @@ dpdk_update_link_state (dpdk_device_t * xd, f64 now) break; } } - if (hw_flags_chg || (xd->link.link_speed != prev_link.link_speed)) - { - hw_flags_chg = 1; - switch (xd->link.link_speed) - { - case ETH_SPEED_NUM_10M: - hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_10M; - break; - case ETH_SPEED_NUM_100M: - hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_100M; - break; - case ETH_SPEED_NUM_1G: - hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_1G; - break; - case ETH_SPEED_NUM_2_5G: - hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_2_5G; - break; - case ETH_SPEED_NUM_5G: - hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_5G; - break; - case ETH_SPEED_NUM_10G: - hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_10G; - break; - case ETH_SPEED_NUM_20G: - hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_20G; - break; - case ETH_SPEED_NUM_25G: - hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_25G; - break; - case ETH_SPEED_NUM_40G: - hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_40G; - break; - case ETH_SPEED_NUM_50G: - hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_50G; - break; - case ETH_SPEED_NUM_56G: - hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_56G; - break; - case ETH_SPEED_NUM_100G: - hw_flags |= VNET_HW_INTERFACE_FLAG_SPEED_100G; - break; - case 0: - break; - default: - dpdk_log_warn ("unknown link speed %d", xd->link.link_speed); - break; - } - } + if (xd->link.link_speed != prev_link.link_speed) + vnet_hw_interface_set_link_speed (vnm, xd->hw_if_index, + xd->link.link_speed * 1000); + if (hw_flags_chg) { if (LINK_STATE_ELOGS) |