From 1cdbc89050fd5783e7f926355f97361690a635f6 Mon Sep 17 00:00:00 2001
From: Martin Braun <martin.braun@ettus.com>
Date: Wed, 20 Apr 2022 10:06:59 +0200
Subject: rfnoc: Improve documentation for chdr_ctrl_endpoint

---
 .../include/uhdlib/rfnoc/chdr_ctrl_endpoint.hpp    | 26 +++++++++++++++++++---
 1 file changed, 23 insertions(+), 3 deletions(-)

(limited to 'host/lib/include/uhdlib/rfnoc')

diff --git a/host/lib/include/uhdlib/rfnoc/chdr_ctrl_endpoint.hpp b/host/lib/include/uhdlib/rfnoc/chdr_ctrl_endpoint.hpp
index 65db20e5a..ad7e2e4e3 100644
--- a/host/lib/include/uhdlib/rfnoc/chdr_ctrl_endpoint.hpp
+++ b/host/lib/include/uhdlib/rfnoc/chdr_ctrl_endpoint.hpp
@@ -15,9 +15,27 @@
 namespace uhd { namespace rfnoc {
 
 /*! A software interface that represents a CHDR control endpoint
+ *
+ * This object is assigned an endpoint ID (EPID) and is responsible for sending/
+ * receiving CHDR control packets, typically from a single device (in other
+ * words, we spawn one of these for every USRP in our UHD session).
+ *
+ * All the RFNoC blocks on this device (as well as client zero) can create a
+ * ctrlport_endpoint interface from this object (the ctrlport_endpoint object
+ * is the thing that can do the actual peek/poke operations). This class will
+ * handle the packaging and addressing of CHDR packets.
+ *
+ * The only place where we create a chdr_ctrl_endpoint (outside of tests) is
+ * in link_stream_manager.cpp.
+ *
+ * Incoming packets (that originate from the device and reach this chdr_ctrl_endpoint)
+ * are mapped to their intended destination (the desired ctrlport_endpoint
+ * instance) by their source EPID and the destination control crossbar port.
  *
  *  The endpoint is capable of sending/receiving CHDR packets
  *  and creating multiple ctrlport_endpoint interfaces
+ *
+ *  Typically, there is one chdr_ctrl_endpoint for every device.
  */
 class chdr_ctrl_endpoint
 {
@@ -28,11 +46,13 @@ public:
 
     //! Creates a new register interface for the specified port
     //
-    // \param port The port number on the control crossbar
+    // \param dst_epid The endpoint ID of the remote block for which this
+    //                 controlport endpoint object is designed for
+    // \param dst_port The port number on the control crossbar
     // \param buff_capacity The buffer capacity of the downstream buff in 32-bit words
     // \param max_outstanding_async_msgs Max outstanding async messages allowed
-    // \param ctrl_clk_freq Frequency of the clock driving the ctrlport logic
-    // \param timebase_freq Frequency of the timebase (for timed commands)
+    // \param client_clk Frequency of the clock driving the ctrlport logic
+    // \param timebase_clk Frequency of the timebase (for timed commands)
     //
     virtual ctrlport_endpoint::sptr get_ctrlport_ep(sep_id_t dst_epid,
         uint16_t dst_port,
-- 
cgit v1.2.3