aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/mpmd/mpmd_link_if_ctrl_liberio.hpp
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2019-07-03 20:15:35 -0700
committerMartin Braun <martin.braun@ettus.com>2019-11-26 12:16:25 -0800
commitc256b9df6502536c2e451e690f1ad5962c664d1a (patch)
treea83ad13e6f5978bbe14bb3ecf8294ba1e3d28db4 /host/lib/usrp/mpmd/mpmd_link_if_ctrl_liberio.hpp
parent9a8435ed998fc5c65257f4c55768750b227ab19e (diff)
downloaduhd-c256b9df6502536c2e451e690f1ad5962c664d1a.tar.gz
uhd-c256b9df6502536c2e451e690f1ad5962c664d1a.tar.bz2
uhd-c256b9df6502536c2e451e690f1ad5962c664d1a.zip
x300/mpmd: Port all RFNoC devices to the new RFNoC framework
Co-Authored-By: Alex Williams <alex.williams@ni.com> Co-Authored-By: Sugandha Gupta <sugandha.gupta@ettus.com> Co-Authored-By: Brent Stapleton <brent.stapleton@ettus.com> Co-Authored-By: Ciro Nishiguchi <ciro.nishiguchi@ni.com>
Diffstat (limited to 'host/lib/usrp/mpmd/mpmd_link_if_ctrl_liberio.hpp')
-rw-r--r--host/lib/usrp/mpmd/mpmd_link_if_ctrl_liberio.hpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/host/lib/usrp/mpmd/mpmd_link_if_ctrl_liberio.hpp b/host/lib/usrp/mpmd/mpmd_link_if_ctrl_liberio.hpp
new file mode 100644
index 000000000..09fb24f8e
--- /dev/null
+++ b/host/lib/usrp/mpmd/mpmd_link_if_ctrl_liberio.hpp
@@ -0,0 +1,64 @@
+//
+// Copyright 2017 Ettus Research, a National Instruments Company
+//
+// SPDX-License-Identifier: GPL-3.0-or-later
+//
+
+#ifndef INCLUDED_MPMD_XPORT_CTRL_LIBERIO_HPP
+#define INCLUDED_MPMD_XPORT_CTRL_LIBERIO_HPP
+
+#include "mpmd_link_if_ctrl_base.hpp"
+#include <uhd/types/device_addr.hpp>
+
+namespace uhd { namespace mpmd { namespace xport {
+
+/*! Liberio transport manager
+ */
+class mpmd_link_if_ctrl_liberio : public mpmd_link_if_ctrl_base
+{
+public:
+ /* For liberio, get_chdr_link_options returns information about DMA engines.
+ * We assume there is only ever one liberio link available
+ * first = tx path
+ * second = rx path
+ */
+ using liberio_link_info_t = std::pair<std::string, std::string>;
+
+ mpmd_link_if_ctrl_liberio(const uhd::device_addr_t& mb_args,
+ const mpmd_link_if_mgr::xport_info_list_t& xport_info);
+
+ size_t get_num_links() const { return 1; }
+
+ uhd::transport::both_links_t get_link(
+ const size_t link_idx, const uhd::transport::link_type_t link_type,
+ const uhd::device_addr_t& link_args);
+
+ size_t get_mtu(const uhd::direction_t) const;
+
+ double get_link_rate(const size_t /*link_idx*/) const { return _link_rate; }
+
+ const uhd::rfnoc::chdr::chdr_packet_factory& get_packet_factory() const
+ {
+ return _pkt_factory;
+ }
+
+private:
+
+ const uhd::device_addr_t _mb_args;
+ const uhd::dict<std::string, std::string> _recv_args;
+ const uhd::dict<std::string, std::string> _send_args;
+ //! A list of DMA channels we can use for links
+ std::vector<liberio_link_info_t> _dma_channels;
+ double _link_rate;
+
+ /*! An index representing the next DMA channel to use, for a simple
+ * allocation of channels. For get_link(), increment for each new link, and
+ * throw an exception if _next_channel > number of DMA channels.
+ */
+ size_t _next_channel = 0;
+ static const uhd::rfnoc::chdr::chdr_packet_factory _pkt_factory;
+};
+
+}}} /* namespace uhd::mpmd::xport */
+
+#endif /* INCLUDED_MPMD_XPORT_CTRL_LIBERIO_HPP */