aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/include/uhdlib/rfnoc
diff options
context:
space:
mode:
Diffstat (limited to 'host/lib/include/uhdlib/rfnoc')
-rw-r--r--host/lib/include/uhdlib/rfnoc/chdr_types.hpp2
-rw-r--r--host/lib/include/uhdlib/rfnoc/epid_allocator.hpp13
-rw-r--r--host/lib/include/uhdlib/rfnoc/mgmt_portal.hpp15
3 files changed, 28 insertions, 2 deletions
diff --git a/host/lib/include/uhdlib/rfnoc/chdr_types.hpp b/host/lib/include/uhdlib/rfnoc/chdr_types.hpp
index 1f14ea7d0..b5725710b 100644
--- a/host/lib/include/uhdlib/rfnoc/chdr_types.hpp
+++ b/host/lib/include/uhdlib/rfnoc/chdr_types.hpp
@@ -802,7 +802,7 @@ public:
const std::string to_string() const;
//! Return the source EPID for this transaction
- inline const sep_id_t get_src_epid() const
+ inline sep_id_t get_src_epid() const
{
return _src_epid;
}
diff --git a/host/lib/include/uhdlib/rfnoc/epid_allocator.hpp b/host/lib/include/uhdlib/rfnoc/epid_allocator.hpp
index ec23dcb50..8306b98a4 100644
--- a/host/lib/include/uhdlib/rfnoc/epid_allocator.hpp
+++ b/host/lib/include/uhdlib/rfnoc/epid_allocator.hpp
@@ -7,6 +7,7 @@
#ifndef INCLUDED_LIBUHD_EPID_ALLOCATOR_HPP
#define INCLUDED_LIBUHD_EPID_ALLOCATOR_HPP
+#include <uhdlib/rfnoc/mgmt_portal.hpp>
#include <uhdlib/rfnoc/rfnoc_common.hpp>
#include <map>
#include <memory>
@@ -27,12 +28,24 @@ public:
epid_allocator(epid_allocator&& rhs) = delete;
/*! \brief Allocate an EPID for the specified endpoint.
+ * Does not initialize the specified endpoint (ideal for SW endpoints).
*
* \param addr The physical address (device, instance) of the stream endpoint
* \return The allocated EPID
*/
sep_id_t allocate_epid(const sep_addr_t& addr);
+ /*! \brief Allocate an EPID for the specified endpoint.
+ * Also initialize the specified endpoint.
+ *
+ * \param addr The physical address (device, instance) of the stream endpoint
+ * \param mgmt_portal The management portal to use for initializing the SEP/EPID
+ * \param chdr_ctrl_xport The ctrl xport to use for initializing the SEP/EPID
+ * \return The allocated EPID
+ */
+ sep_id_t allocate_epid(const sep_addr_t& addr, mgmt::mgmt_portal& mgmt_portal,
+ chdr_ctrl_xport& xport);
+
/*! \brief Get a pre-allocated EPID. Throws an exception is not allocated
*
* \param addr The physical address (device, instance) of the stream endpoint
diff --git a/host/lib/include/uhdlib/rfnoc/mgmt_portal.hpp b/host/lib/include/uhdlib/rfnoc/mgmt_portal.hpp
index 850cee460..9251634bd 100644
--- a/host/lib/include/uhdlib/rfnoc/mgmt_portal.hpp
+++ b/host/lib/include/uhdlib/rfnoc/mgmt_portal.hpp
@@ -8,6 +8,7 @@
#define INCLUDED_LIBUHD_MGMT_PORTAL_HPP
#include <uhdlib/rfnoc/chdr_ctrl_xport.hpp>
+#include <uhdlib/rfnoc/chdr_packet.hpp>
#include <uhdlib/rfnoc/chdr_types.hpp>
#include <memory>
#include <set>
@@ -55,6 +56,8 @@ public:
//! Initialize a stream endpoint and assign an endpoint ID to it
//
+ // This should only be called by the epid_allocator
+ //
// \param xport The host stream endpoint's CTRL transport
// \param addr The physical address of the stream endpoint
// \param epid The endpoint ID to assign to this endpoint
@@ -62,11 +65,21 @@ public:
virtual void initialize_endpoint(
chdr_ctrl_xport& xport, const sep_addr_t& addr, const sep_id_t& epid) = 0;
+ //! Register an already-initialized stream endpoint's endpoint ID
+ //
+ // This should only be called by the epid_allocator
+ //
+ // \param addr The physical address of the stream endpoint
+ // \param epid The endpoint ID to assign to this endpoint
+ //
+ virtual void register_endpoint(
+ const sep_addr_t& addr, const sep_id_t& epid) = 0;
+
//! Get information about a discovered (reachable) stream endpoint
//
// \param epid The endpoint ID of the endpoint to lookup
//
- virtual bool is_endpoint_initialized(const sep_id_t& epid) const = 0;
+ virtual bool is_endpoint_registered(const sep_id_t& epid) const = 0;
//! Get information about a discovered (reachable) stream endpoint
//