| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
Technically, nullptr should be the correct replacement, but some
compilers have issues with that. This is a continuation of e1c754f20.
|
| |
|
|
|
|
|
|
| |
There was a corner case where the data could be such that the FFT plot
symbol selection would cause an out-of-bounds access on the symbols
table, and abort the example with an uncaught exception.
|
|
|
|
|
|
|
|
|
|
| |
Changed muxed_zero_copy_if to make each stream buffer the same number
of frames as the underlying transport and changed the size of the
underlying control transport for X300 and MPMD devices to match the
size of the command FIFO in order to prevent starvation of any single
control transport. Added some constants to remove hard coded values.
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
| |
Since the N32* is part of the N3XX family, it shares a page with
N300/N310.
Co-authored-by: Mark Meserve <mark.meserve@ni.com>
|
| |
|
|
|
|
| |
Fix transport related arguments passed down the stack.
|
|
|
|
|
|
|
|
| |
Boost changed the macros for endianness identification in 1.69, and the
deprecation warning is a pretty noisy one during compilation. This
abstracts away the Boost macro, so we have two UHD macros,
UHD_BIG_ENDIAN and UHD_LITTLE_ENDIAN. They indicate big and little
endian byte order.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a continuation of 967be2a4. Applying clang-format to files
needed for endianness changes.
$ clang-format -i --style=file \
host/include/uhd/types/endianness.hpp \
host/include/uhd/utils/byteswap.hpp \
host/include/uhd/utils/byteswap.ipp
$ clang-format -i --style=file \
host/lib/convert/convert_with_tables.cpp \
host/lib/transport/chdr.cpp
|
|
|
|
| |
Remove some semicolons and superfluous imports.
|
|
|
|
|
|
| |
This will default to building the N320 driver. It replaces having to
manually specify -DENABLE_N320=ON when depdendencies are met. This also
means that N320 will be built by default.
|
| |
|
|
|
|
|
|
| |
std::sleep_for causes issues with priority threading when running
examples in embedded mode on some devices (E310). boost::sleep_for does
not have this problem.
|
|
|
|
|
|
|
|
|
|
| |
This is a continuation of 967be2a4.
$ find host/lib/transport -iname *.hpp -o -iname *.cpp |\
xargs clang-format -i -style=file
Skipping host/lib/transport/nirio/ because of build errors.
$ git checkout host/lib/transport/nirio
|
|
|
|
|
|
|
| |
The use of the wildcard channel index, ALL_CHANS, as the default
value for the argument chan in the methods get_{tx/rx}_dc_offset_range
seems inappropriate. A default value of 0 is consistent with other
getters.
|
|
|
|
|
|
| |
Boost changed the lcm() and gcd() functions in Boost 1.67. This creates
portable UHD versions to be used instead. They use various Boost
versions under the hood conditionally.
|
|
|
|
|
| |
Now that we're C++11, we can assume the existence of said symbol and
need no more portability hacks.
|
|
|
|
| |
Formatting files that will be touched in upcoming changes to uhd::math
|
|
|
|
|
|
|
| |
There was a bug where the number of outstanding ACKS in RFNoC's
ctrl_iface was derived from the number of recv frames, which was wrong.
A number that was too low would effectively break timed commands on
tune, which would, e.g., affect phase alignment.
|
|
|
|
|
|
| |
This is a continuation of 967be2a4.
$ clang-format -i -style=file host/lib/rfnoc/*.cpp
|
| |
|
| |
|
|
|
|
|
|
| |
In bridge mode, packets may be arriving at the Ethernet device which
aren't meant for this device, and thus need different routing
instructions.
|
| |
|
|
|
|
|
|
|
| |
Because our headers do not require C++11, they need a different syntax
(e.g., vector<vector<int> >, note the space between the >). Since some
editors automatically pick up a .clang-format from a parent dir, this
helps when editing headers.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Applying formatting changes to all .cpp and .hpp files in the following
directories:
```
find host/examples/ -iname *.hpp -o -iname *.cpp | \
xargs clang-format -i -style=file
find host/tests/ -iname *.hpp -o -iname *.cpp | \
xargs clang-format -i -style=file
find host/lib/usrp/dboard/neon/ -iname *.hpp -o -iname *.cpp | \
xargs clang-format -i -style=file
find host/lib/usrp/dboard/magnesium/ -iname *.hpp -o -iname *.cpp | \
xargs clang-format -i -style=file
find host/lib/usrp/device3/ -iname *.hpp -o -iname *.cpp | \
xargs clang-format -i -style=file
find host/lib/usrp/mpmd/ -iname *.hpp -o -iname *.cpp | \
xargs clang-format -i -style=file
find host/lib/usrp/x300/ -iname *.hpp -o -iname *.cpp | \
xargs clang-format -i -style=file
find host/utils/ -iname *.hpp -o -iname *.cpp | \
xargs clang-format -i -style=file
find mpm/ -iname *.hpp -o -iname *.cpp | \
xargs clang-format -i -style=file
```
Also formatted host/include/, except Cpp03 was used as a the language
standard instead of Cpp11.
```
sed -i 's/ Cpp11/ Cpp03/g' .clang-format
find host/include/ -iname *.hpp -o -iname *.cpp | \
xargs clang-format -i -style=file
```
Formatting style was designated by the .clang-format file.
|
|
|
|
|
| |
Moving the example `main` within the include guards for the file. This
is mostly to help clang-format's include guard detection.
|
|
|
|
|
| |
Remove trailing vim hints in header files. This functionality will be
replaced by clang-format.
|
|
|
|
| |
Increasing priority of `#include "header.hpp"` statements.
|
|
|
|
|
|
| |
Turning off clang formatting around the program option declarations.
clang-format makes them looks bad an unreadable because it thinks the
options are function calls or something.
|
|
|
|
|
|
| |
Various data structures are nicely formatted to be human-readable.
clang-format makes these structures harder to read, so we can skip
formatting these sections.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
This commit adds a loopback benchmark for a PC with 2 DPDK-compatible
NIC ports that are connected together via a cable. It sends messages
with embedded sequence numbers (outgoing and last-seen) for maintaining
a flow control window of packets in flight. It tracks the number of
bytes sent/received and reports the time the test took and average
throughput.
|
|
|
|
|
| |
This transport is based on uhd-dpdk, and it includes a global context
that must be initialized prior to creating any dpdk_zero_copy objects.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds an internal wait queue API to uhd-dpdk. Socket configuration
requests had their blocking calls re-implemented on top of this API, and
it is also used to service requests to wait on RX packets (w/ timeout).
The wait API involves a multi-producer, single-consumer queue per I/O
thread (waiter_ring), with a condition variable used for sleeping. The
data structure is shared between user thread and I/O thread, and because
timeouts make resource release time non-deterministic, we use reference
counting on the shared resource.
One reference is generated by the user thread and passed to the I/O
thread to consume. A user thread that still needs the data after waking
must get() another reference, to postpone the destruction of the
resource until it is done.
Timeouts are based on CLOCK_MONOTONIC. For recv, a timeout of 0
indicates blocking indefinitely, and a negative timeout indicates no
timeout is desired.
Also drop timeout for closing sockets in uhd-dpdk.
The timeout would allow a user thread to pre-empt the I/O thread's
cleanup process. The user thread would free data structures the I/O
thread still needed to function. Since this timeout is superfluous
anyway, let's just get rid of it.
Also add some more input checking and error reporting.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Set MTU of Ethernet ports:
Some NICs (like the Mellanox ones) require this to work.
Add ARP responder to uhd-dpdk.
Clean up pending ARP request list when done:
Threads waiting for an ARP request to complete would be woken up when
the request completed, but they wouldn't get removed from the list of
pending requests. This fixes the issue.
|
|
|
|
|
|
| |
The TwinRX dboards only support a master clock rate of 200 MHz, which is
now emphasized in the manual. In addition, the meaning of tick rate,
sampling rate, and master clock rate in the TwinRX context is explained.
|
|
|
|
|
| |
Boost changed the includes, and boost/version.hpp was being implicitly
imported. This makes the include explicit.
|
|
|
|
| |
Non-CONST type waveforms require a non-zero wave freq
|
|
|
|
|
|
|
|
|
|
|
| |
During certain RPC calls (e.g. update_component), the MPM RPC server is
slow to respond to reclaim requests, which can causes RPC timeouts.
These changes fix those timeouts.
By setting the reclaiming timeout to twice the timeout of an RPC call,
we have some margin for error on the host side, while not affecting the
underlying claiming logic in MPM. The loop should still operate on a 5
second period, but now has more leeway during stressful conditions.
|
|
|
|
|
| |
Using new rpc client new API that ensure atomic setting of timeout on
each rpc call.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The current implementation of the UHD RPC client has a timeout that is
being accessed non-atomically. Many calls follow the pattern:
1. set_timeout(value)
2. request_rpc()
3. set_timeout(default)
which is not atomic. Other concurrent calls on the same rpc client may
change the timeout value; leads to unexpected behavior
These new set of function will, instead, handle
setting and re-setting the timeout atomically in the RPC request.
|
|
|
|
|
| |
Add a benchmark of packet handlers and device3 flow control. Benchmarks
use mock transport objects.
|
|
|
|
|
| |
Moving device3 flow control functions to a header file so they can be
included in benchmark utility.
|
| |
|
| |
|