| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
This removes a comment that refers to Boost smart pointers, which were
removed in UHD.
|
|
|
|
| |
This gives examples of how to use the set_gpio_src() API and friends.
|
|
|
|
| |
This enables the *gpio_src* APIs for the E320 and the E31x.
|
|
|
|
|
|
|
|
|
|
|
| |
This adds a new API call to multi_usrp: get_gpio_src_banks(). This
returns a list of GPIO banks who's source can be controlled through the
motherboard controller.
The remaining GPIO source methods' docstrings are improved, to explain
the difference between GPIO banks for set_gpio_attr() and
set_gpio_src(). The former controls the actual value on a GPIO bank, and
the latter who drives it. These can be different banks.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The N310 has a feature that allows the front panel GPIOs to be driven by
various sources: The PS, or any of the radio channels. The MPM-based
APIs did not expose any way to change that.
Changes:
- Add MPM APIs to PeripheralManagerBase and n3xx classes
- Improve comments and explanations
- Add host-side hooks into these new APIs in mpmd_mb_controller
- Implement these APIs for N3xx
The N3xx devices will have the option to set the GPIO source to "PS", or
to one of "RF0", "RF1", "RF2", "RF3" (if there are four channels; the
N300 and N320 can only go up to RF1).
Note: The N310 radio does not have separate FP-GPIO banks for channels
0 and 1, which needs to be fixed in a separate commit.
|
|
|
|
| |
And delete the stale code for the DPDK-specific version.
|
|
|
|
|
|
|
|
| |
Args were being parsed in x300_eth_manager::find(), before UHD could
ascertain the args were intended for an X300 device (and not some
other device). This caused unwarranted error messages to print in
some cases. The changes here fix this and prevent the premature
parsing and error messages.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The macro MPM_REGISTER_COMPONENT did not work as described: in case
the default enable was set to ON and all dependencies were met, the
module was still not enabled.
Also made the status prints more helpful:
- print the default value,
- print the user override (if one was provided)
- print the resulting VAR = VALUE
- print the override hint only if the user did not
already specify an override
Example of old incorrect behavior:
-- Configuring Mykonos support...
-- Dependency ENABLE_LIBMPM = ON
-- Disabling Mykonos support.
-- Override with -DENABLE_MYKONOS=ON/OFF
Example of new correct behavior (also with changed prints):
-- Configuring Mykonos support...
-- Default value ENABLE_MYKONOS = ON
-- Dependency ENABLE_LIBMPM = ON
-- Enabling Mykonos support (ENABLE_MYKONOS = ON)
-- Override with -DENABLE_MYKONOS=ON/OFF
|
|
|
|
|
|
|
|
|
|
|
|
| |
The cmake script (macro MPM_REGISTER_COMPONENT) has an issue that the default
value is ignored which will be fixed in the following commit.
As a result of this issue, the modules Mykonos, Magnesium, E320 and E300 never
got enabled per default. It was always necessary to use an override
like ENABLE_MYKONOS=ON.
Therefore, change the default enable values so that a fix to MPM_REGISTER_COMPONENT
does not change the current behavior.
|
|
|
|
|
|
| |
Debian uses pkg-config without the libdpdk.so linker script. Use
the pkg-config file to grab the installed libraries and determine
what to link to.
|
|
|
|
|
|
|
|
|
|
| |
Stop the streaming and free the allocated buffers on destruction of the
liberio xport object.
Note: There is a lingering resource leak in the kernel module, this
patch merely orders the resource release correctly.
Signed-off-by: Joerg Hofrichter <joerg.hofrichter@ni.com>
|
|
|
|
|
| |
If the unittests are invoked with an extra argument -x, an XML report
is generated if the xmlrunner module is installed
|
| |
|
|
|
|
|
|
|
|
| |
Add a subsection to both N310- and N320 specific features to
document the EEPROM flags simliar to as it is done in the E320
documentation.
Signed-off-by: Joerg Hofrichter <joerg.hofrichter@ni.com>
|
|
|
|
|
| |
Adding more details on uhd_images_downloader usage, as well as some
technical details.
|
|
|
|
|
|
| |
Using default values, the initial delay for tx is larger than the
default timeout of tx_streamer::send. Changing the example to always
specify a timeout in send.
|
|
|
|
|
| |
In some environments _GNU_SOURCE must be defined to use
O_LARGEFILE.
|
|
|
|
|
|
|
| |
The latter causes issues with some builds using `/tmp` as the build directory.
Ref: https://github.com/EttusResearch/uhddev/commit/9517de45709adaea8b574011573a565007149d5d
This commit changed these from `abspath` to `relpath` for Windows needs.
Trying `realpath` as an alternative to both of those.
|
| |
|
| |
|
|
|
|
|
|
| |
-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
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Updating FPGA image packages, filesystems, and submodule pointer to
include recent RFNoC changes.
Note: These filesystems have compatible Linux distributions, but do
require an MPM update in order to use the UHD features in this branch.
|
|
|
|
| |
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.
|
|
|
|
| |
This commit changes an mpm_shell error message to include the command
that failed when the mpm_shell does not have the claim token.
|
|
|
|
|
|
|
|
| |
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...")
|
|
|
|
| |
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|