aboutsummaryrefslogtreecommitdiffstats
path: root/mpm
Commit message (Collapse)AuthorAgeFilesLines
* mpm: n3xx: Remove eth1, eth2 from interface listMartin Braun2020-08-071-8/+0
| | | | | | | | | These interfaces are renamed to sfp0 and sfp1 and thus don't exist. They were kept in MPM for a while after the rename, but that was many versions of UHD ago, and the current filesystem (which does the rename) is not compatible with older versions of UHD anyway (and vice versa). These aliases are thus dead code and can be removed.
* mpm: Remove SID classMartin Braun2020-08-074-76/+2
| | | | | | This class is a remnant of UHD 3, and is no longer used anywhere. SID is no longer used at all in UHD, in fact, which means the class did not represent a valid data structure.
* mpm: Reenable forward interfaces for remote hostsSteven Koo2020-08-041-2/+1
| | | | | The forward interfaces are able to forward CHDR packets with MPM iptables routing. This reenables forward interfaces as a CHDR option.
* mpm: cmake: use UHDPython module to find PythonJoerg Hofrichter2020-08-041-10/+5
| | | | | Use UHDPython module (from UHD) to find Python interpreter, libraries and include directories.
* mpm: n3xx: bist: Read mboard and dboard eeprom to determine productSteve Czabaniuk2020-07-312-5/+14
| | | | | | | | The routine to identify products currently only reads the motherboard EEPROM. The N310 and N320/N321 use the same motherboard so these devices can't be distinguished using the motherboard EEPROM alone. This change makes get_product_id() read both the motherboard and daughterboard EEPROM in order to determine which N3xx it actually is.
* mpm: Default virtual NIC CHDR IP selectionSteven Koo2020-07-304-4/+22
| | | | | This change adds detection for setting the correct internal fpga CHDR IP address when using embedded mode.
* mpm: Fix more gevent errors on SIGTERMSamuel O'Brien2020-07-281-6/+19
| | | | | | | | | | | | | Sometimes when running usrp_hwd.py in a terminal and then canceling it with Ctrl+C, it prints a really large stacktrace into the terminal resulting from an uncaught gevent BlockingSwitchOutError. This comes from trying to block on Process#join inside a gevent signal handler. This commit resolves this issue by simply triggering an event in the signal handler which prompts a different non-daemon thread to join the subprocesses and end the parent process. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* mpm: Fix documentation and minor issues in sys_utils.GPIOBankMartin Braun2020-07-281-6/+30
| | | | | | | | | | | - GPIOBank made the assumption that all bits used where contiguous. This amends the documentation to make that more clear, and adds an assert statement to check for that. - reset_all() would reset all pins, regardless of DDR value, rendering it useless for any GPIO bank that would want to have readable pins. Fixed that by checking DDR value before resetting. - Minor amendments to various docstrings; improve PyLint score by removing superfluous inheritance from object.
* mpm: Fix gevent errors on SIGTERMSamuel O'Brien2020-07-242-5/+13
| | | | | | | | | | | | | | | | | | | | | | Sometimes when running usrp_hwd.py in a terminal and then canceling it with Ctrl+C, it prints a really large stacktrace into the terminal resulting from an uncaught gevent BlockingSwitchOutError. It seems like there was an attempt to catch this in usrp_hwd.py:kill_time(). This try-except was surrounding a call to Process.join() which, to the best of my knowledge, can't ever throw this exception. Based on my troubleshooting, this error comes from the SIGTERM signal handler of the RPC process. The handler (defined in rpc_server.py:_rpc_server_process), is just a direct call to RPCServer.stop(). When the server's backed is a thread pool, this call may block when joining the thread pool, causing gevent to complain about execution attempting to block in a signal handler. This commit resolves this issue by simply triggering an event in the signal handler which prompts a different thread to clean up the server and end the process. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* fpga, mpm: Bump FPGA compat numberRobertWalstab2020-07-243-3/+3
|
* mpm: Don't index empty forwarding interface listAaron Rossetto2020-07-241-0/+1
| | | | | | If no internal interfaces are found to which to forward CHDR packets, return after printing the warning instead of attempting to index the empty list and generating an exception.
* mpm, mpmd: Bump MPM compat numberAaron Rossetto2020-07-241-1/+1
|
* uhd: remove liberioRobertWalstab2020-07-207-146/+1
|
* mpm: systemd: systemd configuration are getting now installed under ↵RobertWalstab2020-07-163-3/+18
| | | | consideration of the device type
* mpm: remove class N3xxXportMgrLiberioRobertWalstab2020-07-161-15/+4
|
* mpm: Fix a logging messageRobertWalstab2020-07-161-1/+1
|
* mpm: Enable internal NIC on the N3xxRobertWalstab2020-07-161-3/+12
|
* mpm: remove class E310XportMgrLiberioRobertWalstab2020-07-161-11/+4
|
* mpm: Enable internal NIC on the E310RobertWalstab2020-07-161-6/+28
|
* mpm: remove class E320XportMgrLiberioRobertWalstab2020-07-161-12/+5
|
* mpm: systemd: added systemd configuration files for networkJoerg Hofrichter2020-07-168-4/+63
| | | | | | | | | | | Added files which were previously maintained in meta-ettus repository but which are better placed alongside MPM itself: - eth0/int0/sfp0/sfp1.network: network configuration files - 70-sfp-net.rules: udev rule for automatically naming the network interfaces Signed-off-by: Joerg Hofrichter <joerg.hofrichter@ni.com>
* mpm: support forwarding CHDR packetsRobertWalstab2020-07-162-3/+77
|
* mpm: Enable internal NIC on the E320Alex Williams2020-07-161-0/+4
| | | | Add an entry for the internal NIC to E320.
* mpm,mpmd: Add iface type and mtu info for UDP linksAlex Williams2020-07-162-1/+4
| | | | | | 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.
* mpm: Add support for internal Ethernet interfaceAndrew Lynch2020-07-164-12/+46
|
* mpm: Detect number of liberio channelsAlex Williams2020-07-162-5/+18
| | | | | Instead of using hard-coded values, detect the number of liberio channels, and only offer liberio links if they exist.
* mpm: utils: print error on minor compat number mismatch conditionallyJoerg Hofrichter2020-07-131-1/+2
| | | | | | If the minor compat number does not match (older than expected), then generate an error message only if argument fail_on_old_minor is True; generate a warning otherwise.
* docs: Add comments on mpm.confMartin Braun2020-07-091-0/+1
| | | | | This adds some more details on mpm.conf, what it does, how it works, and which keys it accepts.
* mpm: Fix various Pylint issuesMartin Braun2020-07-095-13/+9
| | | | | | | | No functional changes. Fixes for things that PyLint complains about, but are safe to change anyway, as well as a minor improvement to a docstring that referenced non-existant args. This touches files that are mpm.conf-related.
* mpm: Look for pca953x based devices by device/nameSteven Koo2020-06-113-4/+4
| | | | | | | | | | The pca953x driver introduced a change for how the "label" property populates. Instead of using the device model, it gives a device specific name. As a replacement, use device/name. This affects the tca6424 and tca6408. For the kernel change that causes this see: https://github.com/torvalds/linux/commit/5128f8d4450159f59565d247437d3bedda3994cb
* mpm: Return filesystem info from get_device_infoLane Kolbly2020-06-051-0/+14
| | | | | This commit returns information on the filesystem and mender artifact versions to clients of the MPM RPC connection.
* mpm: Return dboard_info in get_device_infoLane Kolbly2020-06-051-0/+5
| | | | | | | | | Though this information is also returned via usrp_probe, it can be useful to provide this information to trackers which scrape the get_device_info RPC call. The dboard information is split up and cast to string just to simplify parsing on the receiving end.
* mpm: Return build info in mpm_sw_versionLane Kolbly2020-05-271-1/+1
| | | | | The mpm_version key was being overridden by the MPM_COMPAT field in rpc_server::get_device_info.
* mpm: systemd: added sysconf file for setting network buffer sizesJoerg Hofrichter2020-05-012-0/+10
| | | | | | | | | udp_zero_copy requires the network send buffer size (net.core.wmem_max) and the network receive buffer size (net.core.rmem_max) to be set to 2500000 bytes (UDP_DEFAULT_BUFF_SIZE in udp_common.hpp). Add a sysconf file (usrp-hwd.conf) to automatically set the recommended values.
* mpm: rpc_server: set correct default unpacker params for msgpack 0.6.1Joerg Hofrichter2020-03-051-2/+2
| | | | | | | | | | | | | | | | | | | | | | msgpack 0.6.1 suggests new default parameters which ensures compatibility with the upcoming msgpack 1.0 release which will have breaking changes. The parameter changes are described in https://github.com/msgpack/msgpack-python/blob/v0.6.1/README.rst The default parameters for msgpack 1.0 will be: - packer: use_bin_type=True - unpacker: raw=False The packer use_bin_type=True option is already set in the client (mpm_shell.py) but the unpacker option raw=False needs to be set in the server (rpc_server.py) This change allows the usage of a patched version of python3-mprpc 0.1.17 which removes passing the encoding option to the Packer and Unpacker Signed-off-by: Joerg Hofrichter <joerg.hofrichter@ni.com>
* mpm: explicitly set max buffer size for msgpack unpackerAndrew Lynch2020-03-051-0/+2
| | | | | | Msgpack version 0.6 reduced the default max buffer size to 1MB which is smaller than the bitfiles. This change sets the max buffer size to 50MB which is larger than the bitfiles.
* mpm: Make contextmanagers exception-safeLane Kolbly2020-03-034-5/+68
| | | | When making context managers in Python, the yield statement has to be wrapped in a try/finally clause in order to properly clean up after exceptions happen.
* mpm: rpc: Use contextmanager for claim timeoutsToni Jones2020-03-031-33/+38
| | | | | Modify the RPC claim timeout mechanism to use a contextmanager helper function when enabling/disabling timeouts.
* mpm: Apply clang-format against all .cpp and .hpp filesMartin Braun2020-03-038-83/+81
|
* e320/e310: Fix get_gpio_srcs() MPM API callMartin Braun2020-02-262-2/+2
| | | | | The Python code contained a typo which would cause a call to get_gpio_srcs() to throw an exception.
* mpm: cmake: added date_time as required boost componentJoerg Hofrichter2020-02-101-0/+1
| | | | | | | this fixes the error of a missing symbol _ZNK5boost9gregorian10greg_month15as_short_stringEv in /usr/lib/libusrp-periphs.so.4 when building with Boost 1.71
* mpm: catalina: Add thread.cpp from UHD to included filesMartin Braun2020-02-101-0/+13
| | | | | This avoids a linker error where set_thread_name and set_thread_priority cannot be found.
* MPM: add ability to run scripts to MPM shellLars Amsel2020-02-071-34/+83
| | | | | | | | | | | | | | | MPM shell now supports script execution. It utilizes the cmdqueue of Pythons cmd.Cmd class for this. The script to execute is a text file containing the commands one per line. The output decoration of MPM shell changed. Commands are decorated with ">" whereas responses use "<" at line start. Multiline responses are decorated in each line. Cleanup overwritten methods of cmd.Cmd to allow proper shutdow in interactive as well as in scripted mode. Improved pylint score.
* fixup! mpm: e320/e310: Expose APIs to drive GPIO source via UHDMartin Braun2020-01-283-2/+3
|
* mpm: e320/e310: Expose APIs to drive GPIO source via UHDMartin Braun2020-01-235-80/+147
| | | | This enables the *gpio_src* APIs for the E320 and the E31x.
* mpm/mpmd: Expose APIs to drive GPIO sourcesMartin Braun2020-01-235-37/+120
| | | | | | | | | | | | | | | | | | | 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.
* mpm: fixed cmake macro for enabling modulesJoerg Hofrichter2020-01-221-7/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | The macro MPM_REGISTER_COMPONENT did not work as described: in case the default enable was set to ON and all dependencies were met, the module was still not enabled. Also made the status prints more helpful: - print the default value, - print the user override (if one was provided) - print the resulting VAR = VALUE - print the override hint only if the user did not already specify an override Example of old incorrect behavior: -- Configuring Mykonos support... -- Dependency ENABLE_LIBMPM = ON -- Disabling Mykonos support. -- Override with -DENABLE_MYKONOS=ON/OFF Example of new correct behavior (also with changed prints): -- Configuring Mykonos support... -- Default value ENABLE_MYKONOS = ON -- Dependency ENABLE_LIBMPM = ON -- Enabling Mykonos support (ENABLE_MYKONOS = ON) -- Override with -DENABLE_MYKONOS=ON/OFF
* mpm: cmake: adopt default enable values of modulesJoerg Hofrichter2020-01-221-4/+4
| | | | | | | | | | | | The cmake script (macro MPM_REGISTER_COMPONENT) has an issue that the default value is ignored which will be fixed in the following commit. As a result of this issue, the modules Mykonos, Magnesium, E320 and E300 never got enabled per default. It was always necessary to use an override like ENABLE_MYKONOS=ON. Therefore, change the default enable values so that a fix to MPM_REGISTER_COMPONENT does not change the current behavior.
* mpm: optionally generate XML report when running unittestsJoerg Hofrichter2020-01-221-7/+22
| | | | | If the unittests are invoked with an extra argument -x, an XML report is generated if the xmlrunner module is installed
* mpm: Add compile flag to fix missing definitionCiro Nishiguchi2020-01-161-0/+4
| | | | | In some environments _GNU_SOURCE must be defined to use O_LARGEFILE.