aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/rfnoc/mgmt_portal.cpp
Commit message (Collapse)AuthorAgeFilesLines
* lib: Remove move-on-return for chdr_packet_writerMartin Braun2021-03-111-2/+2
| | | | This is a pessimizing move, and clang warns about it.
* lib: Remove unused constantsMartin Braun2021-03-041-4/+5
| | | | | The constants were either commented out, when their value is still useful to the reader, or removed if not.
* host: Update code base using clang-tidyMartin Braun2021-03-041-22/+23
| | | | | | | | | The checks from the new clang-tidy file are applied to the source tree using: $ find . -name "*.cpp" | sort -u | xargs \ --max-procs 8 --max-args 1 clang-tidy --format-style=file \ --fix -p /path/to/compile_commands.json
* rfnoc: Fix remote stream buffer formatWade Fife2020-12-211-0/+18
| | | | | | | | When configuring remote streams, we were setting the format at the source stream endpoint, but not at the destination stream endpoint. Therefore, the destination used the default or whatever it was set to during a previous run. This change sets the format at the destination stream to match the format of the source stream.
* rfnoc: Rename chdr_packet to chdr_packet_writerSamuel O'Brien2020-07-131-1/+1
| | | | | | | | | It would be confusing to have two classes named chdr_packet. As it makes more sense to name the new public chdr parser class chdr_packet, the internal uhd::rfnoc::chdr::chdr_packet class is being renamed to chdr_packet_writer to better represent its functionality. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* lib: rfnoc: Fix "unused" warnings for non-trace log levelsMartin Braun2020-04-171-2/+1
| | | | | | When the compile log level is higher than TRACE, the UHD_LOG_TRACE() macros get removed, which can lead to unused variables. This modifies UHD to avoid those warnings, with no functional changes.
* rfnoc: Fix transport buffer reservationsCiro Nishiguchi2019-11-261-4/+4
| | | | | | | | | Change transports to reserve the number of frame buffers they actually need from the I/O service. Previously some I/O service clients reserved 0 buffers since they shared frame buffers with other clients, as we know the two clients do not use the links simultaneously. This is possible with the inline_io_service but not with a multithreaded I/O service which queues buffer for clients before they are requested.
* rfnoc: Centralize initialization state of SEPs to epid_allocatorAlex Williams2019-11-261-9/+22
| | | | | | | | | | | | | | | | Because the initialization state of SEPs is a graph-wide property, link_stream_managers and mgmt_portals cannot rely on their private members to determine if they can reset an SEP. Move the call to init SEPs into the epid_allocator, and have it call into a mgmt_portal to gain access to the SEP. Thus, link_stream_managers only request that an epid_allocator ensure an SEP is numbered and initialized, and they provide a path to communicate with the SEP. The epid_allocator will ensure init only happens once, so a stream currently running on another link_stream_manager does not get interrupted. This could happen, for example, if the OSTRM went to one device, and the ISTRM came from another. In general, EPIDs should only be assigned once.
* rfnoc: Use link_stream_manager's mgmt_portal for all mgmt packetsAlex Williams2019-11-261-28/+48
| | | | | | | | | | | | | Change data transports to use the mgmt_portal from the link_stream_manager. The initialization state of a device's EPIDs needs to be shared amongst all the SEP users. Otherwise, an RX transport may attempt to do a full reset of the SEP while TX is streaming (for example). TODO: The code contained here is not sufficient to handle multiple links that can access the same SEPs, as those would have different link_stream_managers, and thus, different mgmt_portal instances and views of the SEP state.
* rfnoc: add rx and tx transports, and amend rfnoc_graphCiro Nishiguchi2019-11-261-5/+5
| | | | | | | | | | | | | | | | | | | | | | | transports: Transports build on I/O service and implements flow control and sequence number checking. The rx streamer subclass extends the streamer implementation to connect it to the rfnoc graph. It receives configuration values from property propagation and configures the streamer accordingly. It also implements the issue_stream_cmd rx_streamer API method. Add implementation of rx streamer creation and method to connect it to an rfnoc block. rfnoc_graph: Cache more connection info, clarify contract Summary of changes: - rfnoc_graph stores more information about static connections at the beginning. Some search algorithms are replaced by simpler lookups. - The contract for connect() was clarified. It is required to call connect, even for static connections.
* rfnoc: Make a chdr_ctrl_xport using the new link APIsAlex Williams2019-11-261-44/+50
| | | | | | | | | | These changes add APIs to instantiate the new transports. However, only the control/management transport is currently implemented. It uses the chdr_ctrl_xport. Also update the mgmt_portal to use an ephemeral reference to the shared transport, to indicate that it has no ownership of the transport's memory.
* rfnoc: SW support for FPGA byte swapperAshish Chaudhari2019-11-261-8/+31
| | | | | The management looks at the transport endianness from the packet factory to determine if the byte_swapper in the FPGA needs to be enabled
* rfnoc: Graph and link stream manager API cleanupAshish Chaudhari2019-11-261-27/+49
|
* rfnoc: Enable daisy-chaining in mgmt_portalAshish Chaudhari2019-11-261-5/+14
|
* rfnoc: API cleanup for ctrl/mgmt codeAshish Chaudhari2019-11-261-30/+43
| | | | | | - chdr_ctrl_endpoint can manage multiple dest EPIDs - Moved from both_xports_t to a special defs in rfnoc_common - Changed data-structures where appropriate
* rfnoc: Moved chdr types/packet class out of chdr dirAshish Chaudhari2019-11-261-1/+1
| | | | | | - Moved chdr_packet and chdr_types from rfnoc/chdr to rfnoc and updated all references - Moved non-CHDR definitions to rfnoc_common.hpp
* rfnoc: Added initial impl for mgmt_portalAshish Chaudhari2019-11-261-0/+997
- The management portal is the interface for the framework to allow discovering the data topology, setup routes between stream endpoints and configure streamers - Use a zero_copy_if and the mgmt_paylod to send/recv packets