diff options
Diffstat (limited to 'host/lib')
| -rw-r--r-- | host/lib/usrp/mpmd/mpmd_impl.cpp | 31 | ||||
| -rw-r--r-- | host/lib/usrp/mpmd/mpmd_impl.hpp | 2 | ||||
| -rw-r--r-- | host/lib/usrp/mpmd/mpmd_mboard_impl.cpp | 5 | ||||
| -rw-r--r-- | host/lib/usrp/mpmd/mpmd_xport_mgr.cpp | 18 | ||||
| -rw-r--r-- | host/lib/usrp/mpmd/mpmd_xport_mgr.hpp | 6 | 
5 files changed, 50 insertions, 12 deletions
| diff --git a/host/lib/usrp/mpmd/mpmd_impl.cpp b/host/lib/usrp/mpmd/mpmd_impl.cpp index 911b57558..7b4ca5bc8 100644 --- a/host/lib/usrp/mpmd/mpmd_impl.cpp +++ b/host/lib/usrp/mpmd/mpmd_impl.cpp @@ -204,6 +204,25 @@ namespace {              ;          } +        /*** MTUs ***********************************************************/ +        tree->create<size_t>(mb_path / "mtu/recv") +            .add_coerced_subscriber([](const size_t){ +                throw uhd::runtime_error( +                    "Attempting to write read-only value (MTU)!"); +            }) +            .set_publisher([mb](){ +                return mb->get_mtu(uhd::RX_DIRECTION); +            }) +        ; +        tree->create<size_t>(mb_path / "mtu/send") +            .add_coerced_subscriber([](const size_t){ +                throw uhd::runtime_error( +                    "Attempting to write read-only value (MTU)!"); +            }) +            .set_publisher([mb](){ +                return mb->get_mtu(uhd::TX_DIRECTION); +            }) +        ;      }      void reset_time_synchronized(uhd::property_tree::sptr tree) @@ -389,20 +408,8 @@ mpmd_mboard_impl::uptr mpmd_impl::setup_mb(      _tree->create<std::string>(mb_path / "connection")          .set(mb->device_info.get("connection", "remote")); -    // Do real MTU discovery (something similar like X300 but with MPM) - -    _tree->create<size_t>(mb_path / "mtu/recv").set(1500); -    _tree->create<size_t>(mb_path / "mtu/send").set(1500);      _tree->create<size_t>(mb_path / "link_max_rate").set(1e9 / 8); -    // query more information about FPGA/MPM - - -    // Query time/clock sources on mboards/dboards -    // Throw rpc calls with boost bind into the property tree? - - -    // implicit move      return mb;  } diff --git a/host/lib/usrp/mpmd/mpmd_impl.hpp b/host/lib/usrp/mpmd/mpmd_impl.hpp index fe98b0329..50f533c99 100644 --- a/host/lib/usrp/mpmd/mpmd_impl.hpp +++ b/host/lib/usrp/mpmd/mpmd_impl.hpp @@ -100,6 +100,8 @@ class mpmd_mboard_impl          const uhd::device_addr_t& args      ); +    size_t get_mtu(const uhd::direction_t dir) const; +      uhd::device_addr_t get_rx_hints() const;      uhd::device_addr_t get_tx_hints() const; diff --git a/host/lib/usrp/mpmd/mpmd_mboard_impl.cpp b/host/lib/usrp/mpmd/mpmd_mboard_impl.cpp index 1038be26d..501f7f701 100644 --- a/host/lib/usrp/mpmd/mpmd_mboard_impl.cpp +++ b/host/lib/usrp/mpmd/mpmd_mboard_impl.cpp @@ -194,6 +194,11 @@ uhd::both_xports_t mpmd_mboard_impl::make_transport(      return xports;  } +size_t mpmd_mboard_impl::get_mtu(const uhd::direction_t dir) const +{ +    return _xport_mgr->get_mtu(dir); +} +  uhd::device_addr_t mpmd_mboard_impl::get_rx_hints() const  {      // TODO: See if we need to do anything here. get_rx_stream() might care. diff --git a/host/lib/usrp/mpmd/mpmd_xport_mgr.cpp b/host/lib/usrp/mpmd/mpmd_xport_mgr.cpp index 0ca77c740..3d999c1ad 100644 --- a/host/lib/usrp/mpmd/mpmd_xport_mgr.cpp +++ b/host/lib/usrp/mpmd/mpmd_xport_mgr.cpp @@ -68,6 +68,24 @@ public:         );      } +    size_t get_mtu( +        const uhd::direction_t dir +    ) const { +        if (_xport_ctrls.empty()) { +            UHD_LOG_WARNING("MPMD", +                "Cannot determine MTU, no transport controls have been " +                "established!"); +            return 0; +        } + +        size_t mtu = ~size_t(0); +        for (const auto &xport_ctrl_pair : _xport_ctrls) { +            mtu = std::min(mtu, xport_ctrl_pair.second->get_mtu(dir)); +        } + +        return mtu; +    } +  private:      /************************************************************************** diff --git a/host/lib/usrp/mpmd/mpmd_xport_mgr.hpp b/host/lib/usrp/mpmd/mpmd_xport_mgr.hpp index cdb082111..44906c872 100644 --- a/host/lib/usrp/mpmd/mpmd_xport_mgr.hpp +++ b/host/lib/usrp/mpmd/mpmd_xport_mgr.hpp @@ -99,6 +99,12 @@ public:          const uhd::device_addr_t& xport_args,          xport_info_t& xport_info_out      ) = 0; + +    /*! Return the path MTU for whatever this manager lets us do +     */ +    virtual size_t get_mtu( +        const uhd::direction_t dir +    ) const = 0;  };  }}} /* namespace uhd::mpmd::xport */ | 
