aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/mpmd
Commit message (Collapse)AuthorAgeFilesLines
* mpmd: Release resources on destructionVirendra Kakade2019-05-212-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-211-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-212-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.
* uhdlib: Add dpdk_zero_copy.hppAlex Williams2019-05-212-2/+2
| | | | | dpdk_zero_copy.hpp was referenced in multiple places using relative paths. Let's throw it in uhdlib for easy access.
* mpmd: Fix typecast warning in property tree default settingsMartin Braun2019-02-221-1/+1
|
* mpmd: Allow reclaim failures on component updatesMartin Braun2019-02-223-14/+67
| | | | | | | | | | | | MPM has a flag that identifies component reloads as requiring to restart the RPC server. This change honours that flag, and doesn't cause a fatal failure when reclaims fail to ack for certain operations. For example, running uhd_image_loader on an N310 could fail after the FPGA was reloaded because the communication to the RPC server was temporarily interrupted. This is not always avoidable, since the RPC server does actually go down, and Ethernet connections might also be lost. So, we cut our losses and accept failures in that case.
* RFNoC: Limit number of control packets in flightmichael-west2019-01-311-16/+8
| | | | | | | | Limit number of unacknowledged control packets to the number of receive frames in the transport to prevent the transport from getting locked up or being overrun by ACK packets. Signed-off-by: michael-west <michael.west@ettus.com>
* RFNoC: Prevent unnecessary FC ACK packetsmichael-west2019-01-311-8/+1
| | | | | | | | Avoid sending flow control ACK packets for lossless transports. Add 'send_no_fc_acks' device argument to explicitly prevent flow control ACK packets from being sent. Signed-off-by: michael-west <michael.west@ettus.com>
* 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.
* mpmd,transport,prefs: Add xport_mgr for dpdk_zero_copyAlex Williams2019-01-255-0/+350
| | | | | | | | | | | | | | | | | | | | | | | 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.
* transport: muxed_zero_copy_if fixesmichael-west2019-01-211-24/+13
| | | | | | | | | | 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.
* uhd: mpm: apply clang-format to all filesBrent Stapleton2019-01-1615-1284/+983
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-161-1/+0
| | | | | Remove trailing vim hints in header files. This functionality will be replaced by clang-format.
* 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-143-53/+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
|
* mpmd: add fpga_vesion_hash infoTrung Tran2018-11-161-0/+2
|
* mpmd: Improve error message for compat number mismatchesMartin Braun2018-11-161-6/+14
|
* cmake: Update coding style to use lowercase commandsMartin Braun2018-11-141-8/+8
| | | | | | | | | | | | | | | | | Also updates our coding style file. Ancient CMake versions required upper-case commands. Later command names became case-insensitive. Now the preferred style is lower-case. Run the following shell code (with GNU compliant sed): cmake --help-command-list | grep -v "cmake version" | while read c; do echo 's/\b'"$(echo $c | tr '[:lower:]' '[:upper:]')"'\(\s*\)(/'"$c"'\1(/g' done > convert.sed \ && git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' \ '*CMakeLists.txt' | xargs -0 gsed -i -f convert.sed && rm convert.sed (Make sure the backslashes don't get mangled!)
* mpmd: increase rpc timeout during reading mb sensorTrung Tran2018-11-131-1/+4
| | | | | | | Reading motherboard sensor, sometimes, takes more than 2 seconds. We don't have asynchronous RPC, increase this timeout will help long sensor reading such as reading GPSD value when GPSD connection is unreliable.
* mpmd: Increase rpcc timeout when calling set_time_source()Trung Tran2018-10-111-0/+2
| | | | | | | set_time_source() for N310 and N300 can take longer than the default RPC client timeout of 2 seconds due to dboard initialization. We need increase this timeout, by using the init timeout value which is 2 minutes.
* mpmd: add link speed to xport udpTrung Tran2018-09-131-6/+29
| | | | This is used to determine send_buff_size and recv_buff_size
* mpmd: add option to enum rfnoc blocks from argsTrung Tran2018-08-311-5/+21
|
* mpmd: Allow setting time_source and clock_source propsMartin Braun2018-08-021-24/+4
| | | | | Before, setting these properties in the prop tree would trigger an exception.
* mpmd: Parallelize broadcast-findingMartin Braun2018-07-311-2/+11
| | | | This will broadcast on all interfaces concurrently, instead of serially.
* mpmd: Add set_timeout_init() API call to mpmd_mboard_implMartin Braun2018-07-182-2/+11
|
* uhd: initial commit of UHD support for E320Brent Stapleton2018-07-182-2/+6
| | | | Co-authored-by: Sugandha Gupta <sugandha.gupta@ettus.com>
* mpmd: add missing virtual destructorsMark Meserve2018-05-022-0/+2
|
* mpmd: Use separate rpc connection for claim loopTrung N Tran2018-04-302-27/+55
| | | | | We need a separate RPC connection for the claim loop such that it is not blocked by other long executions of rpc calls.
* mpmd: tighten reclaiming time.Trung N Tran2018-04-021-2/+3
| | | | | Reclaming interval was exec_time(claim+dump_logs)+MPMD_RECLAIM_INTERNVAL; this change will MAX(exec_time(claim+dump_logs),MPM_RECLAIM_INTERVAL)
* mpmd: Fixed MPM marking wrong device as reachableBrent Stapleton2018-03-301-1/+12
| | | | | | | | During MPMd find routine, added a check when connecting to a CHDR interface to make sure we're talking to the correct device. Without this check MPMd would sometimes incorrectly mark a device as reachable because they shared an addr (ie. 192.168.10.2 existed on multiple devices).
* mpmd: Provide list of MPM devices to fail fast on findMartin Braun2018-03-292-1/+34
| | | | | | | | With this fix, uhd_find_devices --args type=b200, for example, will not stall in this function. Reviewed-by: Ashish Chaudhari <ashish.chaudhari@ettus.com> Reviewed-by: Brent Stapleton <brent.stapleton@ettus.com>
* uhd: Move internal headers to uhdlib/Martin Braun2018-03-142-2/+9
| | | | | | | | | | | | | | | | To avoid the proliferation of additional include directories and multiple ways of including project-local headers, we now default to moving all headers that are used across UHD into the uhdlib/ subdirectory. Some #include statements were also reordered as they were modified for closer compliance with the coding guidelines. Internal cpp source files should now include files like this: #include <uhdlib/rfnoc/ctrl_iface.hpp> Reviewed-by: Ashish Chaudhari <ashish.chaudhari@ettus.com>
* n310: Make MPM report FPGA version and description, UHD read itMartin Braun2018-03-021-2/+6
| | | | | | | The FPGA and MPM version as well as the description of the device ("N300-Series Device") and its name (its the hostname) are now properly reported coming from MPM, properly saved in the prop tree, and uhd_usrp_probe can nicely display them this way.
* mpmd: Fix typo in image loaderMartin Braun2018-02-201-3/+4
|
* mpmd: image loader: add default pathBrent Stapleton2018-02-191-5/+58
| | | | | | | | | | | Added default FPGA image path, similar to how we do it in X300. We determine the path to the fpga image path by checking the following: 1. --fpga-path provided by the user and that file exists 2. FPGA type (`fgpa`) provided in the args 3. Checking the fpga type of the currently loaded image on the device (pulled through `MPM.get_component_info`) 4. Otherwise, error out
* mpmd: add getter for components in property treeBrent Stapleton2018-02-192-4/+32
| | | | | | Adding a publisher for updateable components listed in the property tree. This calls MPM.get_component_info for the desired component, and returns a dictionary containing that metadata.
* mpmd: components: Add doxygen for update componentBrent Stapleton2018-02-191-0/+6
| | | | Adding doxygen comment for _update_component in mpmd.
* uhd: Update license headersMartin Braun2018-02-1914-14/+14
| | | | | | | All copyright is now attributed to "Ettus Research, a National Instruments company". SPDX headers were also updated to latest version 3.0.
* mpmd: Fix compiler issuesMartin Braun2018-02-103-7/+5
| | | | | | - Initialization of device_addr_t from another using auto doesn't work across compilers - Moved MPMD_DISC_RESPONSE_PREAMBLE to mpmd_find where it belongs
* fixup! mpmd: Factor find and prop tree init code out of mpmd_impl.cppBrent Stapleton2018-02-092-4/+3
|
* mpmd: Factor find and prop tree init code out of mpmd_impl.cppMartin Braun2018-02-075-461/+503
| | | | No functional changes.
* mpmd: Let 'find' via broadcast check for reachabilityMartin Braun2018-02-073-6/+197
| | | | | | | | | In particular, when running uhd_find_devices, this will limit the devices to ones that can actually be reached via CHDR. There is a new key, find_all, which allows finding all devices even those not reachable from UHD. Reviewed-by: Brent Stapleton <brent.stapleton@ettus.com>
* mpmd: image loader: increased timeoutBrent Stapleton2018-01-292-2/+4
| | | | | | | | -Increased timeout from 10s to 20s. This time is also per component file being updated. For example, when updating the FPGA with new .bit and .dts files, the timeout will be 40s. -Also added log message to let user know their device is updating, not frozen.
* mpm/mpmd: Report device state using get_init_status() and verifyMartin Braun2018-01-161-0/+9
| | | | | | When trying to run init(), mpmd will first query the initialization status of the MPM device. If it is found to be in a bad state, it will not go forward with initialization, but instead print the error message.
* fixup! mpmd: Add API to read back logs from device and send to native loggingMartin Braun2018-01-111-1/+1
|
* fixup! fpga load: adding MPMD image loader functionBrent Stapleton2018-01-111-1/+1
|