diff options
author | Alex Williams <alex.williams@ni.com> | 2020-01-28 15:50:32 -0800 |
---|---|---|
committer | Aaron Rossetto <aaron.rossetto@ni.com> | 2020-07-16 10:00:12 -0500 |
commit | 419d7dafa5c840b8aa9f056690007164de046a1d (patch) | |
tree | 7681659a80e585d3ee63f28eb7eea1780e1a708a /host | |
parent | eadbc21982d6a12bc52300e6855af368b7917574 (diff) | |
download | uhd-419d7dafa5c840b8aa9f056690007164de046a1d.tar.gz uhd-419d7dafa5c840b8aa9f056690007164de046a1d.tar.bz2 uhd-419d7dafa5c840b8aa9f056690007164de046a1d.zip |
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.
Diffstat (limited to 'host')
-rw-r--r-- | host/lib/usrp/mpmd/mpmd_link_if_ctrl_udp.cpp | 15 | ||||
-rw-r--r-- | host/lib/usrp/mpmd/mpmd_link_if_ctrl_udp.hpp | 2 |
2 files changed, 15 insertions, 2 deletions
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<std::string, udp_link_info_t>; |