aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/include
diff options
context:
space:
mode:
authorCiro Nishiguchi <ciro.nishiguchi@ni.com>2019-10-23 21:58:49 -0500
committerMartin Braun <martin.braun@ettus.com>2019-11-26 12:21:32 -0800
commitb4ef7ca804be35830a2c8ac5a143afafd33362f6 (patch)
tree33d20bb8ba238aa7e6f18d7d0b59d67c3c797c2e /host/lib/include
parent03dcda01e0af9dbebee17eec31adcea502fefdb8 (diff)
downloaduhd-b4ef7ca804be35830a2c8ac5a143afafd33362f6.tar.gz
uhd-b4ef7ca804be35830a2c8ac5a143afafd33362f6.tar.bz2
uhd-b4ef7ca804be35830a2c8ac5a143afafd33362f6.zip
rfnoc: Restrict to inline I/O service based on link restrictions
For links that do not support releasing buffers out of order, restrict the I/O service manager to always select the inline I/O service.
Diffstat (limited to 'host/lib/include')
-rw-r--r--host/lib/include/uhdlib/transport/link_if.hpp18
-rw-r--r--host/lib/include/uhdlib/transport/nirio_link.hpp18
2 files changed, 36 insertions, 0 deletions
diff --git a/host/lib/include/uhdlib/transport/link_if.hpp b/host/lib/include/uhdlib/transport/link_if.hpp
index 6f533603e..55755948c 100644
--- a/host/lib/include/uhdlib/transport/link_if.hpp
+++ b/host/lib/include/uhdlib/transport/link_if.hpp
@@ -57,6 +57,15 @@ public:
*/
virtual adapter_id_t get_send_adapter_id() const = 0;
+ /*!
+ * Returns whether this link type supports releasing the frame buffers
+ * in an order different from that in which they were acquired.
+ */
+ virtual bool supports_send_buff_out_of_order() const
+ {
+ return true;
+ }
+
send_link_if() = default;
send_link_if(const send_link_if&) = delete;
send_link_if& operator=(const send_link_if&) = delete;
@@ -102,6 +111,15 @@ public:
*/
virtual adapter_id_t get_recv_adapter_id() const = 0;
+ /*!
+ * Returns whether this link type supports releasing the frame buffers
+ * in an order different from that in which they were acquired.
+ */
+ virtual bool supports_recv_buff_out_of_order() const
+ {
+ return true;
+ }
+
recv_link_if() = default;
recv_link_if(const recv_link_if&) = delete;
recv_link_if& operator=(const recv_link_if&) = delete;
diff --git a/host/lib/include/uhdlib/transport/nirio_link.hpp b/host/lib/include/uhdlib/transport/nirio_link.hpp
index 055874146..2335e311c 100644
--- a/host/lib/include/uhdlib/transport/nirio_link.hpp
+++ b/host/lib/include/uhdlib/transport/nirio_link.hpp
@@ -104,6 +104,24 @@ public:
return _adapter_id;
}
+ /*!
+ * Returns whether this link type supports releasing the frame buffers
+ * in an order different from that in which they were acquired.
+ */
+ bool supports_send_buff_out_of_order() const
+ {
+ return false;
+ }
+
+ /*!
+ * Returns whether this link type supports releasing the frame buffers
+ * in an order different from that in which they were acquired.
+ */
+ bool supports_recv_buff_out_of_order() const
+ {
+ return false;
+ }
+
private:
using recv_link_base_t = recv_link_base<nirio_link>;
using send_link_base_t = send_link_base<nirio_link>;