aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib
Commit message (Collapse)AuthorAgeFilesLines
* rfnoc: Fix MTU prop resolver refactoringAaron Rossetto2021-06-011-8/+70
| | | | | | | | | | | | | | | | | | | | | | | | In 073574e24, the MTU property resolver in `noc_block_base` was refactored to make the resolver's output sensitivity list less broad. The broadness was intentional as a consequence of allowing the MTU forwarding policy to be changed at will, but had the unintended side effect of being incompatible with certain RFNoC graph use cases. The refactoring solved the issues, but added a new restriction that the MTU forwarding policy could only be called once per instance of a NoC block. Unfortunately, that refactoring introduced a bug. By moving the registration of MTU resolvers to `set_mtu_forwarding_policy()`, no resolvers would be added if the MTU forwarding policy was never changed from the default of `DROP` (which is the case for the vast majority of NoC blocks). However, the resolver had code that would run in the `DROP` case to coerce the incoming MTU edge property to be the smaller of the new value or the existing MTU value on that edge. With the resolvers only getting added when the MTU forwarding policy is changed, this coercion behavior would never execute, thus breaking a number of devtests. This commit ensures that the default coercion behavior is always present regardless of whether the MTU forwarding policy is changed or not.
* ic_reg_maps: Remove SPCC core reg mapLars Amsel2021-05-271-116/+0
| | | | These registers aren't used anywhere in UHD.
* multi_usrp, x300: Relax LO set API strictnessAaron Rossetto2021-05-192-12/+24
| | | | | | | | | | | This PR relaxes the set_{rx|tx}_lo_{source|sources|export_enabled}() functions to allow them to be called with 'internal'/ALL_LOS or false/ALL_LOS on devices which do not support changing their LO source or exporting. This makes the get and set functions for those LOs settings more symmetrical in that the values returned from the get function can be successfully passed to the set function. Prior to this change, calling the set functions would throw an error indicating that the device does not support manual configuration of the LO.
* rfnoc: noc_block_base: Throw if set_mtu_forwarding_policy() called multiplyAaron Rossetto2021-05-181-0/+9
|
* rfnoc: noc_block_base: Refactor MTU prop resolverAaron Rossetto2021-05-181-46/+58
| | | | | | | | | | | | | | | | | | | | | | Prior to this commit, the MTU property resolver in noc_block_base had an issue: for every MTU edge property (both input and output on each port) on the block, the property resolver listed every other MTU edge property in its output sensitivity list, regardless of whether or not the output edge properties would ever be affected by the current MTU forwarding policy. This breaks an inherent (and up until now, unwritten) contract between a property resolver and UHD that only properties that can be affected by the resolver should be included in the output sensitivity list. The result of breaking the contract leads to errors being thrown when committing an RFNoC graph in certain multi-channel use cases. This commit refactors the MTU property resolver to use the MTU forwarding policy to determine the correct set of edge properties to include in the output sensitivity list. The change also introduces a new restriction--the MTU forwarding policy may only be set once per instance of a noc_block_base. Typically, a subclass implementing an RFNoC block will call `set_mtu_forwarding_policy()` in its constructor to set a custom MTU forwarding policy (if desired) and leave it untouched for the lifetime of the block.
* RFNoc: Fix graph connect timeout errorMichael West2021-05-101-2/+3
| | | | | | | | | A loop in mgmt_portal::_validate_stream_setup() was missing a sleep, which was causing it to return long before the timeout with a timeout error. This change adds that sleep and reduces the duration of the sleep so it responds faster. Signed-off-by: Michael West <michael.west@ettus.com>
* n320: Add correction APIs to radio_control objectMartin Braun2021-05-062-0/+63
| | | | | | | | | | The N320, like the X310, has some frontend corrections (IQ balance, DC offset) which can be controlled from software. The property tree entries exist for these, but the radio_control APIs do not (which also disables the multi_usrp APIs). This makes it harder to disable DC offset or IQ balance corrections from software, and disables our calibration utilities.
* multi_usrp_rfnoc: Fix get_device()->get_tree()michael-west2021-05-051-6/+3
| | | | | | | | | | | | | | | Property tree access via the device tree was resulting in a segmentation fault because the device::_tree member was not properly initialized for the redirector_device class. The redirector_device also had a get_tree() method that was not actually called because the get_tree() method in the parent class was not declared virtual and all calls to get_tree() were done on the parent class (i.e. get_device()->get_tree(). - Added initializer for device::_tree member in redirector_device class constructor - Removed redirector_device::get_tree() method Signed-off-by: michael-west <michael.west@ettus.com>
* experts: Change coercion policy for regular prop nodesMartin Braun2021-05-041-2/+12
| | | | | | | | | | | | | | | | The experts framework has two ways of integrating expert nodes into the property tree: add_prop_node() and add_dual_prop_node(). In the latter case, the experts should take care of coercion, and thus, we subscribe to the desired value. In the former case, this is not necessary, and precludes us from using set_coercer() with prop nodes on the prop tree. This change lets us use regular nodes in the expert framework that also use property tree coercers. As of now, there is not a single property node in UHD that uses add_prop_node() and also does any kind of coercion, so this change has no effect on current code (this is only used in TwinRX as of now).
* lib: Fix misssing include in e3xx_radio_control_implMartin Braun2021-05-041-0/+3
| | | | Adds a missing <thread>, <algorithm>, and <chrono>.
* dboard: magnesium: Update Rx IF Frequency Valuemattprost2021-04-301-1/+1
| | | | | | | Add extra precision to if frequency in the low band rx path in order to avoid hitting the edges of a filter. Signed-off-by: mattprost <matt.prost@ni.com>
* Revert "N310: Low band IF adjustments"mattprost2021-04-301-17/+21
| | | | | | | | This reverts commit 969e426f2ef57f8d6fd3099870955ba2083abf9c. Revert "fixup! N310: Low band IF adjustments" This reverts commit 71137999430afaca18bfff179e6a3c4b0276d54c.
* rfnoc: Add option to disable flow control on rx streamingmattprost2021-04-299-60/+146
| | | | | | | | | | | Disabling this feature will allow the USRP to send a continuous stream of Rx data to a host machine without throttling due to lack of flow control credits. This is unnecessary overhead on lossless transports such as pcie or aurora. Usage: add 'enable_fc=false' to stream_args.args Signed-off-by: mattprost <matt.prost@ni.com>
* N320: Fix IQ mapping and frontend correctionsmichael-west2021-04-221-2/+4
| | | | | | | | Changed register offset from 4 bytes to 8 bytes. The registers in the frontend were not being properly addressed, so calibration, IQ mapping, and frontend corrections were not working properly. Signed-off-by: michael-west <michael.west@ettus.com>
* N320: Fix available antennasmichael-west2021-04-221-2/+2
| | | | | | Available antennas for TX and RX were swapped. Signed-off-by: michael-west <michael.west@ettus.com>
* X300: Reduce phase noise for 184.32 MHz MCRmichael-west2021-04-161-2/+5
| | | | | | | Reverts charge pump current changes for 10 MHz reference / 184.32 MHz master clock rate case that caused additional phase noise. Signed-off-by: michael-west <michael.west@ettus.com>
* N310: Fix calculation of LO freq w/ext LO for RXmichael-west2021-04-121-1/+1
| | | | | | | A typo was causing an issue with order of precedence in the calculation of the LO frequency when using an external LO for RX on the N310. Signed-off-by: michael-west <michael.west@ettus.com>
* n320: Fix address for RX frontend controlMartin Braun2021-04-121-1/+1
| | | | The RX FE core was using the address for the TX FE core.
* UHD: Fix typo in has_tx_power_referenceLars Amsel2021-04-091-1/+1
| | | | The has_tx_power_reference called has_rx_power_reference by mistake.
* rfnoc: radio: Add getter for SPC valueMartin Braun2021-03-193-0/+7
| | | | | | This adds uhd::rfnoc::radio_control::get_spc(). It can be overridden by radio implementations, but radio_control_impl has a sensible default implementation, return the value that is in the SPC radio register.
* lib: rpc: Add virtual dtor to RPC iface base classMartin Braun2021-03-171-0/+2
| | | | This avoids more clang compiler warnings.
* uhd: Fix radio_control-related method constnessMartin Braun2021-03-176-16/+15
| | | | | | | | | | | | | | | | | The const-ness of some radio_control differed between base class and implementation. This fixes the consistency, but also makes sure these methods follow the rules for when to make methods 'const'. The following rules apply: - Methods that query static capabilities are const. Here, we made get_tx_lo_sources() const (the RX version was already const). - Getters that may have to interact with the device (e.g., peek a register) are not const, because the act of peeking is usually also non-const. Here, we changed get_rx_lo_export_enabled() to non-const. - All base classes are fixed such that the derived classes and the base classes have the same const-ness. Clang was warning about differences. This can cause very tricky bugs, where the radio_control_impl version can get called instead of the intended child class.
* host: Update code base using clang-tidyMartin Braun2021-03-1726-256/+275
| | | | | | | | | | | | The checks from the new clang-tidy file are applied to the source tree using: $ find . -name "*.cpp" | sort -u | xargs \ --max-procs 8 --max-args 1 clang-tidy --format-style=file \ --fix -p /path/to/compile_commands.json Note: This is the same procedure as 107a49c0, but applied to all the new code since then.
* lib: Remove move-on-return for chdr_packet_writerMartin Braun2021-03-114-6/+6
| | | | This is a pessimizing move, and clang warns about it.
* mg: Fix slot_idx referenceWade Fife2021-03-081-1/+1
|
* lib: Fix unresolved cleanup conflict (sorry!)Aaron Rossetto2021-03-041-5/+1
|
* rpclib: Fix warning on ARM buildAaron Rossetto2021-03-041-1/+1
|
* lib: deps: Ignore more warnings in our versions of rpclib, pybind11Martin Braun2021-03-042-1/+12
| | | | | This modifies the UHD versions of those libraries to turn off warnings that appear with Clang.
* lib: Use const-ref in for loops instead of const-copyMartin Braun2021-03-046-7/+7
| | | | | | This is potentially a performance issue, even though it doesn't have a big impact in this context. Clang will warn about it, and this fixes the compiler warning.
* lib: Add some virtual dtorsMartin Braun2021-03-046-1/+19
| | | | | | | Classes where we call delete (implicitly or explicitly) with a virtual inheritance structure need to declare dtors as virtual. This reduces compiler warnings with clang. There are no known bugs (yet) due to this.
* twinrx: Fix missing default copy ctorMartin Braun2021-03-041-0/+3
| | | | | | | twinrx_gain_config_t defined an assignment operator, but not a default copy ctor. This is not allowed in modern C++, although compilers let it slide and provide their own defaults. Clang, however, throws a warning so let's fix it.
* lib: Fix warnings related to unnecessary lambda capturesMartin Braun2021-03-0411-18/+28
|
* convert: Remove unused variablesMartin Braun2021-03-042-4/+0
| | | | This reduces compiler warnings when using clang.
* mg: Remove unused private attribute from ad9371_ifaceMartin Braun2021-03-042-4/+0
| | | | This fixes a clang warning.
* rh: Remove unused constantMartin Braun2021-03-041-1/+0
| | | | This fixes a clang warning.
* lib: lmx2592: Comment out some unused constantsMartin Braun2021-03-041-7/+10
| | | | | | These constants are useful for reference, but they're not used. We keep them in-tree (as comments) because of their utility, but comment them out to fix clang warnings.
* rh: cpld control: Comment out gain table addressMartin Braun2021-03-041-1/+1
| | | | This fixes a clang warning.
* rfnoc: tx_streamer: Remove EOV size attributeMartin Braun2021-03-041-2/+0
| | | | It is unused, and causes clang warnings.
* rh: Remove use of magic number of identify durationMartin Braun2021-03-042-3/+3
| | | | This fixes a clang compiler warning.
* lib: Remove unused constantsMartin Braun2021-03-045-9/+6
| | | | | The constants were either commented out, when their value is still useful to the reader, or removed if not.
* host: Update code base using clang-tidyMartin Braun2021-03-04170-1856/+1955
| | | | | | | | | The checks from the new clang-tidy file are applied to the source tree using: $ find . -name "*.cpp" | sort -u | xargs \ --max-procs 8 --max-args 1 clang-tidy --format-style=file \ --fix -p /path/to/compile_commands.json
* ic_reg_maps: Add SPCC reg mapToni Jones2021-03-011-0/+116
| | | | Add SPCC reg map for reference and testing.
* mpmd: Skip find if "resource" key is specifiedmichael-west2021-02-118-49/+14
| | | | | | | | | | | MPM devices were being discovered when trying to locate PCIe connected devices. Adding filter to exclude them if the "resource" key is specified in the device address arguments. Replaces "lib: disable non pcie types in find with resource" to reduce impact to older devices and remove API change. Signed-off-by: michael-west <michael.west@ettus.com>
* TwinRX: Fix LO lock failuremichael-west2021-02-101-11/+2
| | | | | | | Always write register 6 in the ADF5356. Conditional write was causing the LO not to lock at some frequencies. Signed-off-by: michael-west <michael.west@ettus.com>
* ADF535x: Change freq_resolution to mod2michael-west2021-02-042-26/+28
| | | | | | | | | The freq_resolution parameter to the set_frequency() method was confusing. Changing it to the mod2 value clarifies the intention and makes the math to reduce the FRAC2 and MOD2 values much easier to read and maintain. Signed-off-by: michael-west <michael.west@ettus.com>
* dboard_iface: Modify sleep() functionMichael West2021-02-041-5/+14
| | | | | | | | | The algorithm for the sleep() function is changed to first increment the command time if the command time is set. If the command time is not set, it just performs a sleep on the host. The intention is to make a best effort to create the requested delay on the device. Signed-off-by: Michael West <michael.west@ettus.com>
* TwinRX: Spur cleanupmichael-west2021-02-043-11/+49
| | | | | | | | | | - Reduce FRAC2 and MOD2 values on ADF5356 - Add write to register 10 and delay during retune on ADF5356 - Make negative bleed conditional on integer or fractional N mode for ADF5356 - Tune unused LOs out of band to remove interference Signed-off-by: michael-west <michael.west@ettus.com>
* lib: Fix missing includes in rpc.hppMartin Braun2021-02-011-0/+4
|
* cmake: fix cut-and-paste typo to fix SIM APPLE buildMichael Dickens2021-01-251-1/+1
| | | | Ref: 00c306d5c441e60e7dfd2516e05e4e433977ecee
* uhd: lambda capture the node instead of vert descSteven Koo2021-01-212-4/+17
| | | | | | | | | | | This commit adds another resolve_all_properties method to use the node instead of the vertex descriptor. The vertex descriptor could be removed. This could cause the lambda capture to have an outdated vertex descriptor, which would result in a hang when looking for it. This resolves the issue by capturing the node and looking for the vertex descriptor. Signed-off-by: Steven Koo <steven.koo@ni.com>