aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/mpmd
Commit message (Collapse)AuthorAgeFilesLines
* mpm: Bump MPM compat version to 4.0Lane Kolbly2021-06-241-1/+1
|
* uhd: Add callback for setting sync_sourcesGrant Meyerhoff2021-06-171-0/+25
|
* uhd: Add support for the USRP X410Lars Amsel2021-06-103-7/+76
| | | | | | | | | | | | | | | | Co-authored-by: Lars Amsel <lars.amsel@ni.com> Co-authored-by: Michael Auchter <michael.auchter@ni.com> Co-authored-by: Martin Braun <martin.braun@ettus.com> Co-authored-by: Paul Butler <paul.butler@ni.com> Co-authored-by: Cristina Fuentes <cristina.fuentes-curiel@ni.com> Co-authored-by: Humberto Jimenez <humberto.jimenez@ni.com> Co-authored-by: Virendra Kakade <virendra.kakade@ni.com> Co-authored-by: Lane Kolbly <lane.kolbly@ni.com> Co-authored-by: Max Köhler <max.koehler@ni.com> Co-authored-by: Andrew Lynch <andrew.lynch@ni.com> Co-authored-by: Grant Meyerhoff <grant.meyerhoff@ni.com> Co-authored-by: Ciro Nishiguchi <ciro.nishiguchi@ni.com> Co-authored-by: Thomas Vogel <thomas.vogel@ni.com>
* mpmd: support four linksAndrew Lynch2021-06-082-0/+10
|
* rfnoc: Add option to disable flow control on rx streamingmattprost2021-04-292-19/+52
| | | | | | | | | | | 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>
* host: Update code base using clang-tidyMartin Braun2021-03-171-1/+1
| | | | | | | | | | | | 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 unused constantsMartin Braun2021-03-041-1/+0
| | | | | 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-048-34/+34
| | | | | | | | | 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
* mpmd: Skip find if "resource" key is specifiedmichael-west2021-02-111-6/+6
| | | | | | | | | | | 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>
* uhd_image_loader: Consume .lvbitx filesLane Kolbly2021-01-111-117/+237
| | | | | | | | | | | | .lvbitx files contain the device tree and the FPGA bitstream, so this change allows a user to download a .lvbitx to their device instead of having to juggle separate .bin and .dts files. If a .lvbitx file does not contain a .dts section for any reason, download will still succeed, and a warning will be printed that no dts file was found. This behaviour was chosen (over erroring) to mimic the existing behaviour when a .bin file is found but there is no corresponding .dts file.
* utils: check config file before finding devices for image loaderAndrew Lynch2021-01-111-1/+2
|
* mpmd: Add support to delay and trigger fpga/dts load after updateVirendra Kakade2021-01-112-80/+130
| | | | | | | | | Add a new image_loader argument delay_reload to provide a way to update components but optionally delay the actual load. Similarly add a new argument, just_reload, to enable uhd to reload the fpga/dts components. Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
* Create C++ wrappers for MPM RPC callsLane Kolbly2021-01-112-32/+25
| | | | | | | | | This gives us type-safety, as well as allowing us to create unit tests for RFNoC radio_controls without having to create actual RPC servers and clients in the unit tests. This change also fixes a bug in mpmd_mb_controller::set_sync_source, where it was calling the wrong MPM function.
* mpmd: Export RPC token and mb_args to the property treeMartin Braun2020-12-043-0/+13
| | | | | | There are applications (typically for debugging purposes) which need access to the token and the mb_args. They are thus published via the property tree.
* MPMD: Reduce max frame size for 10 GbEmichael-west2020-11-061-1/+1
| | | | | | | | | | | | MTU discovery is passing on sizes beyond the maximum size, which allows packets to exceed the default MTU size of 8000 set for 10 GbE. This can cause TX to stop when using higher sample rates. Reducing the maximum frame size to 7972 (8000 minus 28 bytes for UDP and IP headers) guarantees the packet size will never exceed the default MTU for 10 GbE. Signed-off-by: michael-west <michael.west@ettus.com>
* sim: Integrate simulator into UHDSamuel O'Brien2020-10-284-3/+197
| | | | | | | | | This commit adds a device::register_device which allows uhd to start up a simulator when uhd is called with the arguments type=sim. Creating the device object creates a subprocess using pybind and an embedded interpreter, and destroying the object cleans up those subprocesses. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* lib: disable non pcie types in find with resourceSteven Koo2020-10-051-0/+6
| | | | | | | mpmd find doesn't respect the "resource" arg hint and can be detected when "resource" is set. This results in incorrect device selection when using PCIe. This change adds detection for "resource" as a prefix in the device hints for mpmd and the other devices.
* uhd: clang format device implSteven Koo2020-10-051-9/+11
|
* x300,mpmd: Increase recv frames for dpdk streamingSteven Koo2020-09-031-1/+9
| | | | | | | | With the default 32 frames, high rate DPDK streaming would overrun or drop samples. This defaults num_recv_frames to 512 for DPDK, which has shown to resolve these issues. Signed-off-by: Steven Koo <steven.koo@ni.com>
* rfnoc: Resolves streamer/link segfaults on pythonSteven Koo2020-08-111-10/+13
| | | | | | | | | This commit resolves a segfault that occurs during teardown. Since teardown isn't detereministic in python, there were cases where the graph would destruct before the streamers or links got chance to cleanup. This would result in a segfault. This change gives the lambda a shared pointer to the object the callback method is calling on, so that it won't destruct before being called.
* mpmd: Clean out link_if_mgrMartin Braun2020-08-072-7/+4
| | | | | | | | | The link_if_mgr used to be a factory for Liberio, UDP, and DPDK. Now, Liberio is gone and DPDK is handled by UDP. This makes the class superfluous. Instead of removing the class, we comment on this, and remove any DPDK references from the file.
* mpmd: Assume mgmt interface can route CHDR packetsSteven Koo2020-08-041-1/+15
| | | | | | | | | The e31x devices don't advertise CHDR interface availability when the low power FPGA is loaded. Since the e3xx and n3xx all route CHDR packets with Virtual NIC forwarding, it's safe to assume that if we can communicate with the mgmt_addr, we can communicate via CHDR too. We can then correctly set the reachability for the e31x from this assumption.
* MPMD: Fix typomichael-west2020-08-041-1/+1
| | | | | | | Fix typo in warning message when DPDK is specified at run time but not enabled at compile time. Signed-off-by: michael-west <michael.west@ettus.com>
* RFNoC: Add xport disconnect callbacksmichael-west2020-08-041-7/+20
| | | | | | | | | | | | Transports were not disconnecting their links from the I/O service upon destruction, leaving behind inaccessible send and recv links used by nothing. This led to I/O errors after creating several transports. Added callbacks to transports to automatically disconnect their links from the I/O service when the transport is destroyed. Updated all callers to supply a disconnect callback. Signed-off-by: michael-west <michael.west@ettus.com>
* mpm: Default virtual NIC CHDR IP selectionSteven Koo2020-07-302-12/+28
| | | | | This change adds detection for setting the correct internal fpga CHDR IP address when using embedded mode.
* mpm, mpmd: Bump MPM compat numberAaron Rossetto2020-07-241-1/+1
|
* uhd: remove liberioRobertWalstab2020-07-201-1/+1
|
* mpmd: remove liberioRobertWalstab2020-07-204-213/+0
|
* mpm,mpmd: Add iface type and mtu info for UDP linksAlex Williams2020-07-162-2/+15
| | | | | | This changes MTU handling for the "internal" UDP type. Because MPM echo packets will not be returned for internal NICs, use the iface's programmed MTU instead.
* rfnoc: Rename chdr_packet to chdr_packet_writerSamuel O'Brien2020-07-132-2/+2
| | | | | | | | | It would be confusing to have two classes named chdr_packet. As it makes more sense to name the new public chdr parser class chdr_packet, the internal uhd::rfnoc::chdr::chdr_packet class is being renamed to chdr_packet_writer to better represent its functionality. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* CHDR: support multiple CHDR widthsAndrew Lynch2020-06-265-14/+20
| | | | | Support management payloads on busses over 64 bits Automatically set CHDR width for mpmd_link_if_ctrl_udp
* mpmd: Increase default long timeout to 30 secondsSteve Czabaniuk2020-06-221-2/+2
| | | | | Note: timeouts were occurring on n310 due to an increase in daughterboard re-initialization time.
* MPMD: Fix RPC call to get GPIO sourcemichael-west2020-06-101-1/+1
| | | | Signed-off-by: michael-west <michael.west@ettus.com>
* fixup! uhd: Add fuzzy serial number checkingmattprost2020-04-091-1/+1
|
* uhd: mpm: Query prefs per-device for multi-device queriesLane Kolbly2020-04-082-2/+15
| | | | | | | If a user specifies a multi-device query, such as "serial0=1234,serial1=4321", we have to look up the preferences for each device. To minimize the impact to non-x400 devices, I simply push the get_usrp_args call down into mpmd_impl and mpmd_find.
* uhd: Add fuzzy serial number checkingLane Kolbly2020-04-081-1/+2
| | | | | | | | | We have integer 32-bit serial numbers for MPM devices, for example "1234abcd". For serial numbers which have less than eight digits, e.g. "123abcd", a user may feel inclined to prefix this number with a 0 when they are searching for devices, e.g. "0123abcd". This change makes it so that specifying "0123abcd" will match a device with serial number "123ABCD".
* uhd: Apply clang-format against all .cpp and .hpp files in host/Martin Braun2020-03-037-23/+25
| | | | | Note: template_lvbitx.{cpp,hpp} need to be excluded from the list of files that clang-format gets applied against.
* mpm/mpmd: Expose APIs to drive GPIO sourcesMartin Braun2020-01-231-0/+40
| | | | | | | | | | | | | | | | | | | 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.
* mpmd: Use dpdk_simple for MTU discoveryAlex Williams2020-01-221-91/+16
| | | | And delete the stale code for the DPDK-specific version.
* cmake: Find DPDK via pkg-config, if availableAlex Williams2020-01-221-1/+2
| | | | | | 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.
* transport,usrp: Make available packet-based flow controlAlex Williams2019-12-203-17/+26
| | | | | | | | 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>
* x300,mpmd: Enable DPDKMartin Braun2019-12-207-361/+137
| | | | | | | | | | | | | | 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
* mpmd: Name the claimer task threadMartin Braun2019-11-261-13/+15
| | | | | We call set_thread_name() on the claimer loop so the thread can be identified using OS utilities.
* mpmd: Fix get_mboard_name()Martin Braun2019-11-261-1/+1
| | | | | It used to produce the individual name of the USRP, but it should return a product name.
* mpm/mpmd: Remove token requirement for device infoMartin Braun2019-11-261-2/+2
| | | | | This removes the token requirement for get_proto_ver() and get_chdr_width().
* lib,tests: Remove old DPDK files from buildAlex Williams2019-11-261-7/+8
| | | | The DPDK files are left behind as a reference, for now.
* liberio: porting to I/O servicesBrent Stapleton2019-11-261-11/+2
| | | | Fixes 85f0551 ("rfnoc: Add I/O service manager to X300 and MPMD")
* rfnoc: Merge I/O service device args with stream argsCiro Nishiguchi2019-11-261-2/+4
| | | | | This makes it possible for users to put I/O service-related args in either the device args or stream args.
* mpmd: Add skip_oldlog device argMartin Braun2019-11-261-0/+8
| | | | | | | | | | This device arg will avoid printing old log messages by dumping all log messages in the buffer immediately after claiming a device. This can be helpful because reading old log messages can be confusing during debug situations, or simply during situations where we expect errors to contain warnings or errors, but we want to hide them. skip_oldlog defaults to off, i.e., the previous behaviour.
* mpmd: Skip generation of mb_controller and mb_iface for skip_init=1Martin Braun2019-11-261-3/+6
| | | | | | | | | The mpmd_mb_controller requires access to the fully functional FPGA, which in turn assumes flawless initialization. skip_init doesn't init at all, so inializing an mb_controller may not be possible, and shouldn't be attempted. This skips init of both mb_iface and mb_controller for skip_init, leaving it to the other code to figure out if they are initialized.