| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
-Adds embedded mode tests for E310 and E320 to the
R&D testing procedure.
-Modifies increased rates for 1Gige testing on E320
|
|
|
|
|
|
|
|
|
|
|
| |
Small changes to remove various compiler warnings found in MSVC
- Adding uhd::narrow_cast to verious spots
- wavetable.hpp: all floats literals in the wavetable.
- paths_test: unnecessary character escape
- replay example: remove unreferenced noc_id
- adfXXXX: Fixing qualifiers to match between parent and derived
classes
- rpc, block_id: Removing unused name in try...catch
|
| |
|
| |
|
|
|
|
| |
Correct a typo differentiating RX and TX EEPROM paths.
|
|
|
|
|
|
|
| |
Adding bindings for res_source_info, which allows us to use
noc_block_base::get_mtu.
Fixes: 400b00c34338 ("rfnoc: adding RFNoC Python API")
|
|
|
|
|
| |
Allows the RFNoC Python API to automatically convert strings to
block_id_t's.
|
|
|
|
|
|
|
|
| |
Adding Python bindings for the RFNoC API. This includes the
rfnoc_graph, noc_block_base, and several other supporting classes.
Templated functions are not currently supported. For example,
`rfnoc_graph::get_block` can only return the basic block controller.
|
|
|
|
| |
Fixes: 967be2a4e82b ("uhd: mpm: apply clang-format to all files")
|
|
|
|
|
|
| |
In chdr_ctrl_endpoint recv_thread, _recv_thread was starting
at construction time and trying to lock mutex, but due to member
declaration in class, mutex was not yet constructed
|
|
|
|
|
|
|
|
| |
- Add option for high or normal thread priority with default set to high
- Add rx_delay and tx_delay options to dynamically set start delays
(default of 0.25 seconds for TX and 0.05 seconds for RX)
Signed-off-by: Michael West <michael.west@ettus.com>
|
|
|
|
|
|
|
|
| |
GPIOs in the property tree are registered as uint32_t's, so the
get_gpio_attr function should use that type as well.
This resolves a property tree runtime_error when running the `gpio`
example with a B2xx device.
|
|
|
|
| |
Fixes cb40069b ("tests: Port polling-mode dpdk_test to new DPDK...")
|
|
|
|
|
|
|
|
|
|
| |
Improves dpdk streaming performance for benchmark_rate by elevating
thread priority of the send and recv threads. It does this
conditionally, if use_dpdk=1 was passed in through the command line
args. Admittedly, this is not a perfect solution, as it does not
account for the case when a dpdk user is utilizing a config file to
pass in that information. The scope of this fix does seem
appropriate for an example.
|
|
|
|
|
|
| |
Waiting on queue status seems to not always work, the queue state seems
to not be updated immediately after pushing an item onto it when queried
from a different thread.
|
|
|
|
|
|
| |
Change the default number of frames so that it works well when using
offload threads, including DPDK. This matches the default number of
frames in mpmd.
|
|
|
|
|
|
|
|
| |
DPDK provides a fixed number of fixed-size buffers for the receive
window, so it needs packet-based flow control to avoid dropping
packets. This change enables counting by packets.
Co-authored-by: Ciro Nishiguchi <ciro.nishiguchi@ni.com>
|
|
|
|
|
|
| |
The mock_send_transport and mock_recv_transport are used, which
ends up with two layers of flow control. More work may be needed
here for comparisons with the old data.
|
|
|
|
| |
This helps a little with debugging (for breakpoints).
|
|
|
|
| |
It referenced the wrong function for releasing recv buffers.
|
| |
|
|
|
|
| |
These were left here as a reference.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
x300:
- Remove obsolete variables from x300_eth_mgr and X300 motherboard
components
- Added some documentation / comments
- Use constrained device args in more places
- Enables the use of use_dpdk=1
- Switches between regular (kernel-based) and DPDK UDP
mpmd:
- Merge link_if_ctrl for udp and dpdk_udp
- Update cmake options
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
docs: Update DPDK docs with new parameters:
Parameter names have had their hyphens changed to underscores, and
the I/O CPU argument is now named after the lcores and reflects
the naming used by DPDK.
transport: Add new udp_dpdk_link, based atop the new APIs:
This link is tightly coupled with the DPDK I/O service. The link class
carries all the address information to communicate with the other
host, and it can send packets directly through the DPDK NIC ports.
However, for receiving packets, the I/O service must pull the packets
from the DMA queue and attach them to the appropriate link object.
The link object merely formats the frame_buff object underneath, which
is embedded in the rte_mbuf container. For get_recv_buff, the link
will pull buffers only from its internal queue (the one filled by the
I/O service).
transport: Add DPDK-specific I/O service:
The I/O service is split into two parts, the user threads and the
I/O worker threads. The user threads submit requests through
various appropriate queues, and the I/O threads perform all the
I/O on their behalf. This includes routing UDP packets to the
correct receiver and getting the MAC address of a destination (by
performing the ARP request and handling the ARP replies).
The DPDK context stores I/O services. The context spawns all I/O
services on init(), and I/O services can be fetched from the dpdk_ctx
object by using a port ID.
I/O service clients:
The clients have two lockless ring buffers. One is to get a buffer
from the I/O service; the other is to release a buffer back to the
I/O service. Threads sleeping on buffer I/O are kept in a separate
list from the service queue and are processed in the course of doing
RX or TX.
The list nodes are embedded in the dpdk_io_if, and the head of the
list is on the dpdk_io_service. The I/O service will transfer the
embedded wait_req to the list if it cannot acquire the mutex to
complete the condition for waking.
Co-authored-by: Martin Braun <martin.braun@ettus.com>
Co-authored-by: Ciro Nishiguchi <ciro.nishiguchi@ni.com>
Co-authored-by: Brent Stapleton <brent.stapleton@ettus.com>
|
|
|
|
|
|
| |
The client type is kept in _offload_thread_params, but a separate,
unitialized field is checked in member functions. Remove the
duplicate and switch the checks over. This fixes offload_io_srv_test.
|
|
|
|
|
| |
Add more tests to compare streaming rates with previous releases.
Changed the output string to a table.
|
| |
|
|
|
|
|
| |
Update UBX and SBX gain settings in the manual for phase alignment
testing.
|
| |
|
|
|
|
|
|
|
| |
Install all of the streaming performance tests scripts, not just the
X300 one.
Fixes: 2bf1f0acaa35 ("tests: Add script to execute batch of bench...")
|
| |
|
|
|
|
|
| |
Script runs benchmark_rate repeatedly, parses results, and calculates
average, min, and max of each value reported.
|
| |
|
|
|
|
|
|
|
|
| |
- Use coerce_decim(), not int(), to coerce the decimation rate
- Fix typo
Fixes: a36fc4604f9b ("rfnoc: DDC: Fix property propagation")
Fixes: 36853315741a ("rfnoc: Add DDC block controller")
|
|
|
|
|
|
|
| |
The prefs API is supposed to load the config files once, and stash them
away for the process to consume at will. Because the init_done is never
set, it will read the config files every time it's asked for them. This
is usually not a problem, but it causes the logging output to be messy.
|
| |
|
|
|
|
|
|
| |
The filter bank and antenna switches have different configuration
for channel 0 and channel 1. This commit fixes the issue where
channel 0 produces only noise due to incorrect switches.
|
|
|
|
|
|
| |
Only update DDC/DUC samp_rate properties if the number is substantially
different (don't update for sub-1Hz property calculations). This fixes
resolver exceptions for certain rates.
|
| |
|
| |
|
|
|
|
|
| |
This is a more portable option to set thread names. References to
pthreads are now limited to thread.cpp, where they belong.
|
|
|
|
|
| |
We call set_thread_name() on the claimer loop so the thread can be
identified using OS utilities.
|
|
|
|
| |
Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
|
|
|
|
| |
Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
|
|
|
|
|
|
|
| |
This fixes behavior where we would get long 100 sec timeouts
on fifo waits instead of 100 ms timeouts.
Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
|
|
|
|
|
| |
Individual API calls might have to call each other (e.g., like
set_rate() will call set_rx_frequency()), which would cause a deadlock.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The N310 cannot set the MCR for its daughterboards separately. This
patch modifies the radio block controller such that any block
controller, when requested to change the master clock rate, will first
change Radio 0, and then Radio 1.
This fixes the following issues:
- In multi_usrp, calling set_master_clock_rate() will not necessarily
call set_rate() on the radios in any particular order, which will
break when calling Radio 1 first
- In RFNoC apps, it wasn't possible to run off of slot B alone without
this change.
Note: When calling set_rate() on one radio, the other radio is in an
invalid state until its set_rate() is also called.
|
|
|
|
|
|
|
| |
This is a data structure intended for use by the DPDK I/O service.
It uses DPDK's lockless ring in multi-producer, single-consumer mode
to allow clients to submit requests to the DPDK I/O service's worker
thread. Clients can specify a timeout for the requests to be fulfilled.
|
| |
|
|
|
|
|
| |
It used to produce the individual name of the USRP, but it should return
a product name.
|