From 419d7dafa5c840b8aa9f056690007164de046a1d Mon Sep 17 00:00:00 2001 From: Alex Williams Date: Tue, 28 Jan 2020 15:50:32 -0800 Subject: mpm,mpmd: Add iface type and mtu info for UDP links This changes MTU handling for the "internal" UDP type. Because MPM echo packets will not be returned for internal NICs, use the iface's programmed MTU instead. --- host/lib/usrp/mpmd/mpmd_link_if_ctrl_udp.cpp | 15 +++++++++++++-- host/lib/usrp/mpmd/mpmd_link_if_ctrl_udp.hpp | 2 ++ 2 files changed, 15 insertions(+), 2 deletions(-) (limited to 'host/lib/usrp/mpmd') diff --git a/host/lib/usrp/mpmd/mpmd_link_if_ctrl_udp.cpp b/host/lib/usrp/mpmd/mpmd_link_if_ctrl_udp.cpp index bdf088025..7b41ac631 100644 --- a/host/lib/usrp/mpmd/mpmd_link_if_ctrl_udp.cpp +++ b/host/lib/usrp/mpmd/mpmd_link_if_ctrl_udp.cpp @@ -68,8 +68,11 @@ mpmd_link_if_ctrl_udp::udp_link_info_map get_udp_info_from_xport_info( const size_t link_rate = link_info.count("link_rate") ? std::stoul(link_info.at("link_rate")) : MAX_RATE_1GIGE; + const std::string link_type = link_info.at("type"); + const size_t if_mtu = std::stoul(link_info.at("mtu")); result.emplace(link_info.at("ipv4"), - mpmd_link_if_ctrl_udp::udp_link_info_t{udp_port, link_rate}); + mpmd_link_if_ctrl_udp::udp_link_info_t{ + udp_port, link_rate, link_type, if_mtu}); } return result; @@ -238,7 +241,15 @@ mpmd_link_if_ctrl_udp::mpmd_link_if_ctrl_udp(const uhd::device_addr_t& mb_args, try { // If MTU discovery fails, we gracefully recover, but declare that // link invalid. - _mtu = std::min(_mtu, discover_mtu_for_ip(ip_addr)); + auto& info = _udp_info.at(ip_addr); + if (info.link_type == "internal") { + UHD_LOG_TRACE("MPMD::XPORT::UDP", + "MTU for internal interface " << ip_addr << " is " + << std::to_string(info.if_mtu)); + _mtu = std::min(_mtu, info.if_mtu); + } else { + _mtu = std::min(_mtu, discover_mtu_for_ip(ip_addr)); + } _available_addrs.push_back(ip_addr); } catch (const uhd::exception& ex) { UHD_LOG_WARNING("MPMD::XPORT::UDP", diff --git a/host/lib/usrp/mpmd/mpmd_link_if_ctrl_udp.hpp b/host/lib/usrp/mpmd/mpmd_link_if_ctrl_udp.hpp index ebe4f5db2..e4a0d7811 100644 --- a/host/lib/usrp/mpmd/mpmd_link_if_ctrl_udp.hpp +++ b/host/lib/usrp/mpmd/mpmd_link_if_ctrl_udp.hpp @@ -26,6 +26,8 @@ public: { std::string udp_port; size_t link_rate; + std::string link_type; + size_t if_mtu; }; using udp_link_info_map = std::unordered_map; -- cgit v1.2.3