aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib
Commit message (Collapse)AuthorAgeFilesLines
* mpmd: use init timeout for update_componentTrung Tran2019-01-291-4/+1
| | | | | update_component will reinit the device therefore we should use MPMD_DEFAULT_INIT_TIMEOUT.
* ad9361: Replace Boost lock & mutex with std varietyMartin Braun2019-01-251-23/+21
|
* formatting: Apply clang-format to ad9361_ctrl.cppMartin Braun2019-01-251-72/+87
|
* uhd-dpdk: Cover all paths to request TX offloadsAlex Williams2019-01-253-11/+61
| | | | | Some NICs were not enabling TX IP checksum offloads. This fixes that issue.
* uhd-dpdk: Delete useless test folderAlex Williams2019-01-252-356/+0
| | | | This was old code that wouldn't compile or run anymore.
* mpmd,transport,prefs: Add xport_mgr for dpdk_zero_copyAlex Williams2019-01-2520-303/+1177
| | | | | | | | | | | | | | | | | | | | | | | 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.
* mpmd_xport: liberio: using 4096 bytes frame sizeTrung Tran2019-01-231-2/+6
| | | | | | | | Using a send_frame_size of 8192 locks up some devices while transmitting. The root cause of this is unknown, but the new value (4096) prevents this issue in most cases. Some device are still affected by the lock-up even after this change.
* lib: rfnoc: Add some missing virtual destructorsMartin Braun2019-01-223-2/+8
|
* formatting: Apply clang-format to nocscript filesMartin Braun2019-01-228-557/+499
|
* device3: Replace NULL with 0 for empty function pointersMartin Braun2019-01-221-2/+2
| | | | | Technically, nullptr should be the correct replacement, but some compilers have issues with that. This is a continuation of e1c754f20.
* transport: muxed_zero_copy_if fixesmichael-west2019-01-214-29/+18
| | | | | | | | | | 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>
* mpmd_xport: honor users' send(recv)frame_size argsTrung Tran2019-01-212-8/+11
|
* mpmd: implement get_*x_hintsTrung Tran2019-01-212-6/+11
| | | | Fix transport related arguments passed down the stack.
* endianness: Replace Boost macros with custom onesMartin Braun2019-01-213-4/+4
| | | | | | | | 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.
* lib: transport: convert: apply clang-formatBrent Stapleton2019-01-211-119/+165
| | | | | | | | | | | | | 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
* cmake: Register N320 componentMartin Braun2019-01-211-1/+1
| | | | | | 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.
* rh: increase timeout of set_rate's rpc callMark Meserve2019-01-211-1/+4
|
* lib: transport: Revert to boost instead of std sleepSugandha Gupta2019-01-181-3/+1
| | | | | | 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.
* lib: transport: apply clang-formatBrent Stapleton2019-01-1825-2326/+2745
| | | | | | | | | | 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
* math: Replace boost::*::{lcm,gcd}() with portable versionsMartin Braun2019-01-184-11/+10
| | | | | | 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.
* math: Remove uhd::math::log2, replace with std::log2Martin Braun2019-01-181-1/+2
| | | | | Now that we're C++11, we can assume the existence of said symbol and need no more portability hacks.
* formatting: preparing for uhd::math cleanupBrent Stapleton2019-01-185-971/+1129
| | | | Formatting files that will be touched in upcoming changes to uhd::math
* rfnoc: Fix detection of outstanding acks by ctrl_ifaceMartin Braun2019-01-171-4/+3
| | | | | | | 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.
* lib: rfnoc: apply clang-formatMartin Braun2019-01-1729-1905/+1859
| | | | | | This is a continuation of 967be2a4. $ clang-format -i -style=file host/lib/rfnoc/*.cpp
* uhd: mpm: apply clang-format to all filesBrent Stapleton2019-01-1661-7418/+6799
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* formatting: remove vim hints in headersBrent Stapleton2019-01-1622-22/+0
| | | | | Remove trailing vim hints in header files. This functionality will be replaced by clang-format.
* uhd: skip formatting misc arrays, maps, etc.Brent Stapleton2019-01-167-1/+18
| | | | | | 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.
* transport: Move uhd-dpdk header to uhdlibAlex Williams2019-01-154-3/+3
|
* transport: Add dpdk_zero_copy transportAlex Williams2019-01-153-0/+527
| | | | | 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.
* transport: Add blocking recv calls to uhd-dpdkAlex Williams2019-01-1511-220/+704
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* uhd-dpdk: Add ARP responder, set MTU, and clean up APIAlex Williams2019-01-155-7/+75
| | | | | | | | | | | | 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.
* mpmd: increase claim_rpc call timeout.Trung Tran2019-01-142-3/+6
| | | | | | | | | | | 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.
* rpc,mpmd: replace all set_timeout() to new apiTrung Tran2019-01-144-58/+11
| | | | | Using new rpc client new API that ensure atomic setting of timeout on each rpc call.
* mpmd_impl: move timeout constants to headerTrung Tran2019-01-142-9/+13
|
* utils:rpc: set rpc timeout during rpc callTrung Tran2019-01-141-3/+120
| | | | | | | | | | | | | 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.
* tests: Add benchmark of streaming code pathsCiro Nishiguchi2019-01-101-0/+4
| | | | | Add a benchmark of packet handlers and device3 flow control. Benchmarks use mock transport objects.
* uhd: Move device3 flow control functions to header for benchmarkCiro Nishiguchi2019-01-102-291/+306
| | | | | Moving device3 flow control functions to a header file so they can be included in benchmark utility.
* rh: add support for identify argMark Meserve2019-01-102-12/+40
|
* rh: implement set_rateMark Meserve2019-01-103-9/+40
|
* rh: general code cleanupMark Meserve2019-01-101-4/+5
| | | | | | | | - Add default bandwidth range - Add default mash order constant - Delete MPM todos - Cleanup whitespace in MPM python code - Add docstring for is_lo_dist_present
* lib: experts: fixup for including Boost headerMartin Braun2019-01-091-0/+2
| | | | | | Header wasn't included until Boost 1.56. Fixes 5c012cad7858 ("lib: experts: Add potentially missing but...")
* udp_wsa_zero_copy: add default xport paramsThomas Vogel2019-01-091-1/+25
|
* rh: add support for iq and dc correction filesMark Meserve2019-01-094-18/+88
| | | | | | | - Update corrections on frequency or LO source change - Add legacy EEPROM properties - Move DSP control initialization earlier - Fix TX antenna list property
* lib: experts: Add potentially missing but sometimes inferred includeMartin Braun2019-01-091-0/+1
| | | | | This adds an include for boost/core/noncopyable.hpp. Without it, builds would potentially fail on Boost 1.69++.
* rh: adjust frequencies for lo filter bankMark Meserve2019-01-081-1/+1
| | | | | - Moves the cutover frequency for the 900 MHz LO filter from 900 to 975 MHz. This fixes an image issue in TX when transmitting near 325 MHz or 900 MHz.
* b200: Fix compiler warnings related to type conversionsMartin Braun2019-01-072-8/+8
| | | | | | | These compiler warnings mostly pop up on MSVC. Most of them are due to inconsistent usage of size_t, uint{8,16,32}_t, and even int. This commit changes types mostly such that variables have the correct type to begin with, although it also contains a few explicit type-casts.
* x300: Fix compiler warnings related to type conversionsMartin Braun2019-01-074-15/+15
| | | | | | | These compiler warnings mostly pop up on MSVC. Most of them are due to inconsistent usage of size_t, uint{8,16,32}_t, and even int. This commit changes types mostly such that variables have the correct type to begin with, although it also contains a few explicit type-casts.
* transport: Fix MSVC warning by replacing size_t with uint32_tMartin Braun2019-01-031-1/+1
| | | | This fixes a C4267 which pops up a lot when compiling UHD with MSVC.
* TwinRX: Fix tuningMichael West2019-01-022-8/+5
| | | | | - Set SPI clock back to 3 MHz - Fix returned frequency for ADF5355 (rev A and B boards)
* x300: Remove usage of boost::bindMartin Braun2019-01-021-12/+16
|