aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/include/uhdlib/transport
Commit message (Collapse)AuthorAgeFilesLines
* uhd: add udp boost asio implementation of transport interfaceCiro Nishiguchi2019-11-262-0/+315
|
* uhdlib: transport: Add links.hppMartin Braun2019-11-261-0/+43
| | | | This contains both_links_t
* transport: Implement a single-threaded I/O serviceAlex Williams2019-11-261-0/+121
| | | | | | | | | | | | | | | | | | | | The inline_io_service connects transports to links without any worker threads. Send operations go directly to the link, and recv will perform the I/O as part of the get_recv_buffer() call. The inline_io_service also supports muxed links natively. The receive mux is entirely inline. There is no separate thread for the inline_io_service, and that continues here. A queue is created for each client of the mux, and packets are processed as they come in. If a packet is to go up to a different client, the packet is queued up for later. When that client attempts to recv(), the queue is checked first, and the attempts to receive from the link happen ONLY if no packet was found. Also add mock transport to test I/O service APIs. Tests I/O service construction and some basic packet transmision. One case will also uses a single link that is shared between the send and recv transports. That link is muxed between two compatible but different transports.
* transport: Introduce I/O service layer between transport and linkAlex Williams2019-11-261-0/+337
| | | | | | | | | | | Split the transport into three layers to allow for greater flexibility in scheduling algorithms. The io_service will make queues on behalf of the transport and take responsibility for scheduling data transfers through the links. The transport layer is the explicit handler for flow control. This enables the possibility of a scheduling layer in between, so flow control may be offloaded on the same thread as the link.
* uhd: add new transport interface and base class implementationCiro Nishiguchi2019-11-262-0/+334
| | | | | | | | | | New interface aimed to replace zero_copy_if for new code, including new RFNoC development and redesign of streamer objects. Generic implementation of send and receive transport interfaces to allow reuse by various transport types. Derived classes implement transport-specific functions that are invoked by the base classes through CRTP.
* uhdlib: Add dpdk_zero_copy.hppAlex Williams2019-04-101-0/+45
| | | | | dpdk_zero_copy.hpp was referenced in multiple places using relative paths. Let's throw it in uhdlib for easy access.
* transport: Make dpdk_simple subclass udp_simpleAlex Williams2019-04-101-28/+14
| | | | With the same APIs, this will make it easier to add support for X310.
* uhd: Replace all usage of boost::noncopyable with uhd::noncopyableMartin Braun2019-02-152-2/+4
| | | | | | This fixes the build errors that occur due to switching locations of noncopyable.hpp within Boost, and also allows us to remove boost::noncopyable in one fell swoop.
* mpmd,transport,prefs: Add xport_mgr for dpdk_zero_copyAlex Williams2019-01-253-7/+201
| | | | | | | | | | | | | | | | | | | | | | | Add configuration sections to the UHD config file for NIC entries. Keys are based on MAC addresses, and the entries beneath the section describe which CPU and I/O thread to use for the NIC and its IPv4 address. Make ring sizes configurable for uhd-dpdk. Ring size is now an argument for packet buffers. Note that the maximum number of available buffers is still determined at init! Add ability to receive broadcasts to uhd-dpdk. This is controllable by a boolean in the sockarg during socket creation. dpdk_zero_copy will filter broadcast packets out. Add dpdk_simple transport (to mirror udp_simple). This transport allows receiving from broadcast addresses, but it only permits one outstanding buffer at a time. Fix IP checksum handling in UHD-DPDK. TX checksums were not being calculated in the NIC, and in RX, the check for IP checksums allowed values of zero (reported as none). Now packets with bad IP checksums will be dropped.
* transport: Move uhd-dpdk header to uhdlibAlex Williams2019-01-151-0/+261