aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/mpmd
Commit message (Collapse)AuthorAgeFilesLines
* 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
|
* mpmd: Poll logs on claim and exitMartin Braun2018-01-101-0/+6
|
* mpmd: Add API to read back logs from device and send to native loggingMartin Braun2018-01-102-0/+71
|
* mpmd: Factor out compat number checkMartin Braun2018-01-081-26/+59
|
* mpmd: Refactor device initialization for better parallelizabilityMartin Braun2018-01-083-92/+125
| | | | | | | | | | Note: This doesn't add any concurrency, rather, it changes the structure of the code to allow that. Notable changes: - All prop tree inits in one place - No access to containers in methods that might be run in parallel - Split initialization and claiming in mpmd_mboard_impl, calling ctor will no longer run the full initialization. - Added comments to identify parallelizable spots
* mpm: Increase RPC timeout during update_componentBrent Stapleton2018-01-053-0/+14
| | | | | | | Increases the host's timeout during update_component times, then resets it to the default RPC timeout after the call is complete. Reviewed-by: Martin Braun <martin.braun@ettus.com>
* mpmd: Allow user-overrides for MPM portsMartin Braun2018-01-044-8/+32
| | | | | | | Adds two device args: discovery_port and rpc_port. Both are integers which override the respective constants. Reviewed-by: Ashish Chaudhari <ashish.chaudhari@ettus.com>