aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/mpmd
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* uhd: Introduce I/O service managerAaron Rossetto2019-11-264-45/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | - Implement I/O service detach link methods - The I/O service manager instantiates new I/O services or connects links to existing I/O services based on options provided by the user in stream_args. - Add a streamer ID parameter to methods to create transports so that the I/O service manager can group transports appropriately when using offload threads. - Change X300 and MPMD to use I/O service manager to connect links to I/O services. - There is now a single I/O service manager per rfnoc_graph (and it is also stored in the graph) - The I/O service manager now also knows the device args for the rfnoc_graph it was created with, and can make decisions based upon those (e.g, use a specific I/O service for DPDK, share cores between streamers, etc.) - The I/O Service Manager does not get any decision logic with this commit, though - The MB ifaces for mpmd and x300 now access this global I/O service manager - Add configuration of link parameters with overrides Co-Authored-By: Martin Braun <martin.braun@ettus.com> Co-Authored-By: Aaron Rossetto <aaron.rossetto@ni.com>
* uhd: Replace usage of boost smart pointers with C++11 counterpartsMartin Braun2019-11-261-2/+2
| | | | | | | | | | | | | | | | | | | This removes the following Boost constructs: - boost::shared_ptr, boost::weak_ptr - boost::enable_shared_from_this - boost::static_pointer_cast, boost::dynamic_pointer_cast The appropriate includes were also removed. All C++11 versions of these require #include <memory>. Note that the stdlib and Boost versions have the exact same syntax, they only differ in the namespace (boost vs. std). The modifications were all done using sed, with the exception of boost::scoped_ptr, which was replaced by std::unique_ptr. References to boost::smart_ptr were also removed. boost::intrusive_ptr is not removed in this commit, since it does not have a 1:1 mapping to a C++11 construct.
* rfnoc: Unify endianness of transportsAlex Williams2019-11-261-1/+1
| | | | | Ethernet now uses the same serialization of the RFNoC stream as all the other transports.
* Remove proto-RFNoC filesMartin Braun2019-11-264-82/+71
| | | | | | | This commit removes all files and parts of files that are used by proto-RFNoC only. uhd: Fix include CMakeLists.txt, add missing files
* x300/mpmd: Port all RFNoC devices to the new RFNoC frameworkMartin Braun2019-11-2627-1233/+1384
| | | | | | | Co-Authored-By: Alex Williams <alex.williams@ni.com> Co-Authored-By: Sugandha Gupta <sugandha.gupta@ettus.com> Co-Authored-By: Brent Stapleton <brent.stapleton@ettus.com> Co-Authored-By: Ciro Nishiguchi <ciro.nishiguchi@ni.com>
* rfnoc: Add mb_controller base class and X300/MPMD implementationsMartin Braun2019-11-263-0/+110
|
* rpc: improve exception handling for reachability checksMark Meserve2019-10-151-2/+3
| | | | | - Handle exception created during RPC client creation - Corrected a catch block for UHD exceptions
* Device3: Restore default buffer sizes for MPMD UDPMichael West2019-09-131-0/+2
| | | | | | | | | The latest change to fix MTU and default frame sizes inadvertantly removed the default send and recv buffer sizes in the MPMD UDP transport, which caused receive timeouts and underruns at higher sample rates. This change restores those values. Signed-off-by: Michael West <michael.west@ettus.com>
* mpmd: Fix corner case in MPM device reachabilitySugandha Gupta2019-08-071-1/+1
| | | | | | | | | To check if a device is fully reachable through the chdr address i.e. SFP port, an RPC request is sent to "second_addr" and "addr" of that device. This commit fixes the case where if "second_addr" is not connected to the host, the function returns earlier and does not check for "addr".
* Device3: Fix MTU and default frame sizesMichael West2019-07-183-47/+128
| | | | | | | | | | The latest changes to the get_*x_stream() functions to calculate the MTU for the channel caused default frame size values to be ignored. This change fixes that by changing the key from "send/recv_frame_size" to "mtu" and then changing the implementations of make_transport() constrain the frame size values based on the "mtu" value as well as any device and/or transport-specific limits. Signed-off-by: Michael West <michael.west@ettus.com>
* mpmd: image_loader: Add support for devices without fpga_typeSugandha Gupta2019-05-211-1/+5
| | | | | This fixes fpga image loading for devices which not have SFP port and hence no fpga_type e.g. E310.
* utils: add support for directly updating components from image_loaderAndrew Lynch2019-05-021-71/+96
|
* mpmd: Release resources on destructionVirendra Kakade2019-05-012-4/+6
| | | | | This will clear the property tree, block registry, transport managers, and motherboard list on destruction of mpmd_impl.
* mpmd: Fix spurious reclaim call after unclaimVirendra Kakade2019-05-011-3/+6
| | | | | | | | | The reclaim task loop is asnychronous to the main thread which can result in spurious reclaim call to the device after unclaim has been called. This is especially risky if the device has already entered a non-serviceable state after unclaim e.g. idle state. Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
* device3: Constraint send/recv_frame_size based on down/upstream MTUSugandha Gupta2019-05-012-0/+7
| | | | | | We need to properly contraint the send/recv_frame_size based on the minimum MTU of all the down/upstream blocks. This fixes the issue with E310 tx/rx streaming as it has smaller MTU sizes than the other usrps.
* mpm: Add option for muxed data stream for liberio transportSugandha Gupta2019-05-012-2/+18
| | | | | | If the number of channels for embedded mode streaming is 4 (1 for ctrl, 1 for async messages and 2 for data ), we need to mux the data transport. This is needed for E310