aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* images: Clear out code from days of yoreMartin Braun2021-12-174-418/+17
| | | | | | | | | The images/ subdir is used to create images packages for release tags. However, it contained a lot of code from many releases ago, prior to the usage of the cache/ directory. This simply removes all the old code that is no longer required for creating release packages.
* dpdk: correct MTU warning messageAndrew Lynch2021-12-171-1/+1
|
* rfnoc: graph: make topology failure more descriptivemattprost2021-12-171-4/+41
| | | | | | | | Clarify that invalid RFNoC graph topology failures are due to an attempt to access input or output ports that are not connected to anything in the FPGA. Signed-off-by: mattprost <matt.prost@ni.com>
* dpdk: support new MTU discoveryAndrew Lynch2021-12-171-4/+4
|
* images: Add the utilization report for X410 images (X4_200)Martin Braun2021-12-171-1/+3
|
* uhd: nsis: Remove broken shortcuts in Windows installerAaron Rossetto2021-12-161-4/+0
| | | | | | | | The Windows UHD installer binary, generated by e.g. running the PACKAGE project in the Visual Studio solution generated by CMake, creates two shortcuts to utilities that are no longer included with the installer: the USRP2 card burner and USRP-N2xx net burner. This commit removes these defunct shortcuts.
* tools: Add check for SEP with ctrl enabled to rfnoc_image_builderLars Amsel2021-12-161-0/+13
| | | | | | | | | When creating RFNoC images at least one SEP needs to have ctrl enabled otherwise one will end up with a non-functional image. This commit adds a method to the image builder to do plausibility checks on the configuration. The only check done for now is to verify that there is at least one SEP with ctrl enabled.
* docs: Fix MathJax formulae renderingAaron Rossetto2021-12-161-1/+1
| | | | | | | | | | When a webpage is accessed via secure HTTP, and that webpage attempts to address active content via a non-secure URI, most modern browsers will block the loading of that content as a security precaution. In this case, the URI to the MathJax JavaScript rendering library was specified in the Doxygen configuration with an HTTP (i.e., non-encrypted) URI, thus preventing the browser from loading it and rendering formulae correctly.
* uhd: Fix RFNoC-capable detection in uhd_usrp_probeMartin Braun2021-12-161-1/+1
| | | | | For RFNoC devices, it now displays "RFNoC capable: Yes", like it did in UHD 3.
* rfnoc: Fix block_id::get_tree_root()Martin Braun2021-12-162-1/+3
| | | | | The path it returned was only valid in UHD 3. Added unit test to confirm.
* docs: Amend page on RFNoC propertiesMartin Braun2021-12-161-2/+12
| | | | Add an additional paragraph on back-edges, and when *not* to declare them.
* examples: Fix tx_bursts bandwidth/freq/gain reportingMartin Braun2021-12-161-11/+9
| | | | | | | | | | | | | This example would not specify a channel when querying the actual frequency/bandwidth/gain after setting it. When using the --channels options like this: tx_bursts --channels 1 --freq 1e9 [...] ...it would request the frequency of 1 GHz on channel 1, then query the frequency on channel 0 when reporting the "actual" frequency. Also removes some boost::format().
* fpga: x300: Fix time register readbackWade Fife2021-12-151-2/+2
|
* docs: remove bmaptool instructions for writing filesystemsMatthew Crymble2021-12-141-3/+3
| | | | | | Due to a change in Mender, bmaptool is no longer supported for writing filesystem images. Currently, the only recommended method for writing a filesystem to an SD card is to use dd. The filesystem can still be updated in place using mender.
* host: Make radio_control constants an enumLane Kolbly2021-12-102-108/+82
| | | | | | | In C++, variables whose address are taken must be defined somewhere. PERIPH_BASE had no such definition, so on some compilers/systems caused a linker error. This commit switches to using enums to prevent this happening again in the future.
* tests: Add replay-back-edge testMartin Braun2021-12-091-0/+44
| | | | | | | | | This tests the following graph: DDC -> Replay -> DDC, where the initial and final blocks are the same (i.e., a loop). This could be useful for generating and capturing data with the same replay block while testing a block. Note that this test will fail if the edge consistency checks are buggy.
* rfnoc: Fix back-edge consistency checkMartin Braun2021-12-091-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On back-edges, no properties are forwarded, but properties must be consistent after property resolution. This breaks when the source edge on a back-edge has an edge property which the destination block does not. Consider the following graph: DDC -> Replay -> DDC where both instances of 'DDC' refer to the same block. Now, assume the first edge is declared a back edge (in principle, it shouldn't matter). The DDC block has an edge property `samp_rate` which the Replay block does not. Therefore, it can't forward this edge property to the Replay block's input edge property list. In the consistency check code, we don't check for the existence of edge nodes, because it is assumed edge properties where either forwarded, or aligned through some other manner. This leads to a property lookup failure. With this fix, we skip the consistency check for edge properties which don't exist on the destination node. This is safe because the destination block can not have a property resolver defined for undefined properties. This means the destination block can either: - Drop the property. In this case, there is no value in checking consistency. Even if we could forward edge properties on back-edges, they would always have the same value. - Forward the property. In that case, the consistency check would happen elsewhere in the graph where there's no back-edge.
* mpm: x4xx: Add log message for older DIO boardsMartin Braun2021-12-091-1/+2
| | | | | | Older DIO boards don't support all the features of newer ones, but from the log messages, it's not clear what revision the board has. We add a log statement to clarify.
* mpm: x4xx: Move DioControl into its own moduleMartin Braun2021-12-094-882/+914
| | | | | | | | | No functional changes whatsoever, only: - Move DioControl to its own module (x4xx_dio_control.py) - Where PyLint was complaining about whitespace issues, fix those - Fix import list in x4xx_periphs.py after removing DioControl - Fix import list in x4xx.py to import DioControl from the correct location
* host: Fix typos and small thingsLane Kolbly2021-12-093-2/+6
|
* e3xx: Remove unused constantMartin Braun2021-12-091-2/+0
|
* tools: Add missing fields to CHDR dissectorWade Fife2021-12-082-89/+208
| | | | | | | | | | | | - Add data packet payload field - Add metadata support - Add missing management fields (OpsPending, ExtendedInfo). - Add missing control fields (byte_enable, data, has_time) - Update offsets for management OpPayload fields. - Make the field names more consistent, readable, and consistent with the RFNoC specification. - Display value of fields in addition to name. - Fix timestamp, eob, and eov offsets
* rfnoc: Add ops pending to management opWade Fife2021-12-082-3/+12
| | | | | | The ops pending for each operation was stored implicitly in the data structure. This adds it explicitly, which is useful for debugging and packet dissection.
* cmake: tests: Conditionally compile tests for X400Martin Braun2021-12-081-30/+32
| | | | | When using ENABLE_X400=OFF, we should also disable the corresponding tests, or we get linker errors.
* fpga: usrp2: update build tools to use python3Matthew Crymble2021-12-082-6/+6
|
* fpga: tools: Update Vivado scripts to use python3Wade Fife2021-12-081-4/+4
|
* docs: Remove obsolete man pagesMartin Braun2021-12-083-112/+0
| | | | | | The man pages for usrp_x3xx_fpga_burner and octoclock_firmware_burner are obsolete; the corresponding utilities were replaced by uhd_image_loader many UHD versions ago.
* github: Amend PR template with a checkbox for compat numbersMartin Braun2021-12-081-0/+2
|
* rfnoc: Fix noc_shell direction commentsWade Fife2021-12-0821-86/+91
| | | | | | Some comments describing data flow direction were wrong. This commit updates the Mako files and updates the noc_shell modules with newly generated versions.
* fpga: x300: OR ATR signals going into db_controlMartin Braun2021-12-071-1/+10
| | | | | | | | | | | Before this change, only the channel 0 ATR state was sent to the db_control module. For TwinRX, this had the disadvantage that when only Channel 1 was used, the FP- and LED-GPIOs could not track the radio's ATR state (e.g., no LED would light up in this case). Note that unlike UHD 3, there is only one db_control module per slot. There are therefore no options to map GPIOs to track the ATR state of an individual channel.
* tests: Remove non-functional DPDK testAndrew Lynch2021-12-061-97/+2
|
* dpdk: disable warnings for using an experimental featureAndrew Lynch2021-12-061-0/+6
|
* docs: Update DPDK documentationAndrew Lynch2021-12-061-13/+37
|
* dpdk: Upgrade to DPDK 19.11 APIAndrew Lynch2021-12-0612-129/+129
| | | | Support DPDK versions 19.11 and 20.11
* mpm: x4xx: Add checks before accessing self.dio_controlMartin Braun2021-12-061-5/+12
| | | | | | | | | | | | | | | | | | | The X4x0 MPM code doesn't always load the object for the DIO control, it only does that when certain checks pass (EEPROM readouts need to match expected values). Therefore, `self.dio_control` may be NoneObject during operations, and in other areas of the code, we already check if that's the case. The APIs added in c36fc5f don't have these checks, which means accessing these new APIs may result in odd exceptions when trying to dereference a NoneType object. By adding checks for the initialization state of `self.dio_control`, we can avoid these and either substitute better error messages / exception messages, or return safe values. Note that mpmd_mb_controller also accesses this object indirectly by checking the length of the return value of get_gpio_banks(). This check is not affected by this change, as we now are guaranteed to return an empty list if there is no self.dio_control.
* mpm: x4xx: Remove superfluous importMartin Braun2021-12-061-1/+0
|
* rfnoc: Enable drop counter on chdr_ctrl_endpointMartin Braun2021-12-032-4/+23
| | | | | | | | | | | | This class has a member _num_drops, which can be read out using the get_num_drops() API call. However, when dropping packets, this counter was not incremented, which is fixed now. This also includes a very minor optimization from 2 map<> lookups to 1 lookup (they are in O(log N)). Since there are usually a small two-digit number of endpoints connected to the async message receiver, this change is not expected to yield major improvements, but the lookup *is* in a hot loop.
* docs: Improve documentation for properties and -propagationMartin Braun2021-12-038-2/+498
|
* max287x: Fix key in table of freq rangesMartin Anderseck2021-12-031-1/+1
| | | | | | The keys for the table of frequency ranges for each VCO value counts up consecutively but key "1" was there twice while "2" was missing. This is fixed here.
* uhd: Remove superfluous boost/bind.hpp includesMartin Braun2021-12-032-3/+0
| | | | | On newer versions of Boost, they show deprecation notes. However, they're not actually used any more so they can go.
* rfnoc: Change default block behaviourMartin Braun2021-12-021-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The default block controller is used whenever no other block controller is used. It currently defaults to dropping both property propagation and actions. When a custom block is injected into a graph like this for example: Radio -> DDC -> Custom Block -> Rx Streamer This default behaviour causes the Rx Streamer to not be able to send actions (like stream commands) nor does it allow MTU propagation (or any other property's propagation). The default block behaviour is ONE_TO_ONE, meaning that actions and properties on input channel N will get forwarded to output channel N. In absence of an actual block controller, this is more useful default than setting the propagation to DROP for both actions and properties. Most blocks that pass through data, or do some simple processing, will now work in the absence of a block controller. The new disadvantage is that blocks which would modify properties such as sampling rate, scaling, or MTU will no longer work properly in the absence of a block controller. However, the recommended behaviour is anyway not to operate without a block controller. For the cases where no block controller is present, ONE_TO_ONE is considered the generally more useful default.
* mpm: x4xx: update mboard_max_revVirendra Kakade2021-12-021-1/+1
| | | | Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
* uhd: add support for max10 variantsVirendra Kakade2021-12-022-5/+74
| | | | Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
* uhd: update manifest for x410 cpldVirendra Kakade2021-12-021-1/+1
| | | | Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
* mpmd: Add MTU plausibility checkMartin Braun2021-12-021-0/+42
| | | | | | | | | | | | | | | | | | We have noticed that on 1 GbE connections, MTU discovery can become unreliable. Since we now use the MTU directly for deriving spp and other values, a correct MTU is important. Because we don't have a way of knowing if MTU discovery worked or not, we add some heuristics in form of a plausibility check. For now, the only rule in this check is if that the detected MTU is a bit larger than 1472 bytes, we coerce down to 1472, because this is such a standard value (most 1 GbE interfaces default to an IPv4 MTU of 1500 bytes). For the cases where the interface MTU is set to be between 1500 and 1528 bytes, this would cause a very minor performance loss. We accept this performance loss as it is small, and those cases are very rare. MTUs are usually 1500 bytes, or >= 8000 bytes for high-speed links using jumbo frames.
* x300: Remove usage of CHDR_MAX_LEN_HDRMartin Braun2021-12-022-5/+6
| | | | | | | This constant was generally harmful, since it was only correct under certain circumstances (64 bit CHDR with timestamps). The X3x0 code was the last place it was being used, and we remove it without substitute because it was not doing anything useful here.
* rfnoc: Clarify usage of MTU vs. max payload size, remove DEFAULT_SPPMartin Braun2021-12-0221-96/+321
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These two values where being mixed up in the code. To summarize: - The MTU is the max CHDR packet size, including header & timestamp. - The max payload is the total number of bytes regular payload plus metadata that can be fit into into a CHDR packet. It is strictly smaller than the MTU. For example, for 64-bit CHDR widths, if a timestamp is desired, the max payload is 16 bytes smaller than the MTU. The other issue was that we were using a magic constant (DEFAULT_SPP) which was causing conflicts with MTUs and max payloads. This constant was harmful in multiple ways: - The explanatory comment was incorrect (it stated it would cap packets to 1500 bytes, which it didn't) - It imposed random, hardcoded values that interfered with an 'spp discovery', i.e., the ability to derive a good spp value from MTUs - The current value capped packet sizes to 8000 bytes CHDR packets, even when we wanted to use bigger ones This patch changes the following: - noc_block_base now has improved docs for MTU, and additional APIs (get_max_payload_size(), get_chdr_hdr_len()) which return the current payload size given MTU and CHDR width, and the CHDR header length. - The internally used graph nodes for TX and RX streamers also get equipped with the same new two API calls. - The radio, siggen, and replay block all where doing different calculations for their spp/ipp values. Now, they all use the max payload value to calculate spp/ipp. Unit tests where adapted accordingly. Usage of DEFAULT_SPP was removed. - The replay block used a hardcoded 16 bytes for header lengths, which was replaced by get_chdr_hdr_len() - The TX and RX streamers where discarding the MTU value and using the max payload size as the MTU, which then propagated throughout the graph. Now, both values are stored and can be used where appropriate.
* tests: Add default length for automated streaming testsMatthew Crymble2021-12-012-0/+2
|
* rfnoc: replay block: Disable prop and action propagationMartin Braun2021-12-011-1/+10
| | | | | | | | | | | | | | The replay block is more like the radio block than like a FIFO. In particular, consider this flow graph: Replay -> DDC -> Replay Imagine you're using the replay block to test the DDC block with prerecorded data. If we treated the Replay Block like a FIFO, then we'd have a loop in the graph (which is already wrong). If we used the DDC to resample, then the input- and output sample rate of the Replay mismatch, which is a legal way to use the Replay block, but not possible if we treat the graph like a loop.
* examples: Improve rfnoc_rx_to_fileMartin Braun2021-12-011-112/+143
| | | | | | | | | | | | | | | This example had some major issues since UHD 4, which are now fixed. Mainly, the option to include a custom RFNoC block was not working. The example was rehauled severely: - Custom blocks are now usable again. - UHD/RFNoC code is used for the connections, rather than a custom kludge. - Sample rate is set via property propagation - boost::format() was not helpful in this example, and was removed. - A list of active connections is now printed - The --block-args argument is dropped in favour of --block-props. The former never did anything useful, and "block args" are a UHD 3 thing.