summaryrefslogtreecommitdiff
path: root/usertools
AgeCommit message (Collapse)Author
2017-05-07usertools: add Cavium pkx as network deviceJerin Jacob
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
2017-05-07usertools: fix binding device matchGuduri Prathyusha
If multiple devices of same class are added to a device type, only devices that match first device listed in device type list are processed. Fixing it in device_type_match() by returning false after iterating through all the devices listed in a device type list. Fixes: 8ad08a287918 ("usertools: define DPDK PCI functional device") Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
2017-05-02usertools: fix CPU layout with python 3Thomas Monjalon
These differences in Python 3 were causing errors: - xrange is replaced by range - dict values are a view (instead of list) - has_key is removed Fixes: deb87e6777c0 ("usertools: use sysfs for CPU layout") Fixes: 63985c5f104e ("usertools: fix CPU layout for more than 2 threads") Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Reviewed-by: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com>
2017-05-01usertools: remove devbind module search corner casesMark Asselstine
The existing code used to search for module files via modinfo has several corner cases which can result in it failing where it should be successful. The call to lower() would cause results returned by 'modinfo' to be forced to lowercase, results which were subsequently passed to exists() which is case sensitive. This was most likely done to capture all variants of failure strings modinfo might return (ie. ERROR/Error/error/...) without thought negative effect to the later call to exists(). For many this is a nonissue but if the module path included non-lowercase alpha characters, something which is easily possible with a non-lowercase kernel-extraversion string, this would cause an issue. We could move the call to lower() to the check for "error" but this still leaves possible corner cases, for modules or module paths with 'error' in them. Instead we will prevent modinfo's stderr from being used as a "good value" for path, meaning we either get a valid path from modinfo, or nothing at all. This removes all corner cases. Ultimately these preliminary checks are unnecessary as exists() will only return True if it is passed a valid path, passing it modinfo's stderr would fail. In keeping with the original code, however, we do some preliminary checks, but we are now free of corner cases. Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
2017-04-30usertools: fix CPU layout for more than 2 threadsGowrishankar Muthukrishnan
Current usertools/cpu_layout.py is broken to handle multithreads of count more than 2 as in IBM powerpc P8 servers. Below patch addressed this issue. Also, added minor exception catch on failing to open unavailable sys file in case of multithread=off configuration in server. Patch has been verified not to break existing topology configurations and also not changing anything in current output. Signed-off-by: Gowrishankar Muthukrishnan <gowrishankar.m@linux.vnet.ibm.com> Reviewed-by: Andriy Berestovskyy <andriy.berestovskyy@caviumnetworks.com>
2017-04-30usertools: add --status-dev option to devbindFerruh Yigit
Script displays status for all device types and output is much longer than it used to be. This makes harder to read script output. This patch adds new --status-dev argument to the script to select a device group to display status. Supported device groups: net crypto event mempool Sample usage: ./usertools/dpdk-devbind.py --status-dev mempool Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
2017-04-30usertools: fix device binding with kernel toolsGuduri Prathyusha
The following sequence of operation gives error in binding devices 1) Bind a device using dpdk-devbind.py 2) Unbind the device using kernel tools(/sys/bus/pci/device/driver/unbind) 3) Bind the device using kernel tools(/sys/bus/pci/driver/new_id and /sys/bus/pci/driver/bind) The bind failure was due to cached driver name in 'driver_override'. Fix it by writing 'null' to driver_override just after binding a device so that any method of binding/unbinding can be used. Fixes: 2fc350293570 ("usertools: use optimized driver override scheme to bind") Reported-by: Lijuan A Tu <lijuanx.a.tu@intel.com> Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com>
2017-04-25usertools: add mempool PCI functional deviceGuduri Prathyusha
Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com> Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
2017-04-25usertools: add eventdev PCI functional deviceGuduri Prathyusha
Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com> Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
2017-04-25usertools: define DPDK PCI functional deviceGuduri Prathyusha
This patch creates the framework to define the DPDK PCI functional device by specifying the pci attributes like Vendor ID, Device ID, Sub Vendor ID, Sub Device ID and Class.This enables a flexible way to add DPDK function devices based on PCI attributes. Crypto devices can belong to Encryption class(0x10) or Processor class(0x0b) based on the vendor preference. Using this framework, The above disparity can be encoded in the following format encryption_class = [{'Class': '10', 'Vendor': None, 'Device': None, 'SVendor': None, 'SDevice': None}] intel_processor_class = [{'Class': '0b', 'Vendor': '8086', 'Device': None, 'SVendor': None, 'SDevice': None}] crypto_devices = [encryption_class, intel_processor_class] Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com> Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
2017-04-25usertools: use optimized driver override scheme to bindGuduri Prathyusha
The current device bind model uses /sys/bus/pci/driver/new_id scheme to bind devices to the driver. This scheme has following operations to bind a device to the driver. 1) Write device ID and vendor ID to /sys/bus/pci/driver/new_id 2) Write PCI BDF number to /sys/bus/pci/driver/bind 3) On step (1), _All_ the devices that match the device ID and vendor ID get bound to the driver 4) Except for requested devices, Unbind the remaining devices In kernels >= 3.15, An alternative scheme driver_override can be used to bind a device to driver.This scheme has following operations to bind a device to driver. 1) Write driver to /sys/bus/pci/device/driver_override 2) Write PCI BDF number to /sys/bus/pci/driver/bind This script detects the presence of /sys/bus/pci/device/driver_override, if available use optimized bind scheme to bind it Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com> Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
2017-04-25usertools: optimize lspci invocationGuduri Prathyusha
lspci invoked twice over all the pci devices in the system. The first pass is to extract Numeric IDs and second pass to get extended device details. As an optimization, Used lspci with -nn option in get_device_details() to obtain Numeric ID and extended device details in one shot. In addition to this, After binding the PCI device, lspci needs to be invoked again to confirm the proper bind operation. Used a boolean argument to express this case in get_pci_device_details() Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com> Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
2017-04-25usertools: refactor binding statusGuduri Prathyusha
Identified and parameterized the common code in show_status() function as show_device_status().This will enable to avoid code duplication when additional devices added to the script. Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com> Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
2017-04-25usertools: refactor NIC and crypto binding detailsGuduri Prathyusha
get_nic_details() and get_crypto_details() shares a lot of common code. Created a new unified get_device_details() function get the device details. Signed-off-by: Guduri Prathyusha <gprathyusha@caviumnetworks.com> Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
2017-04-25usertools: use sysfs for CPU layoutAndriy Berestovskyy
Some platforms do not have core/socket info in /proc/cpuinfo. Use /sys/devices/system/cpu instead. Signed-off-by: Andriy Berestovskyy <andriy.berestovskyy@caviumnetworks.com>
2017-01-30usertools: fix active interface detection when bindingYoni Gilad
When adding crypto devices, the "Active" and "Ssh_if" attributes of existing network devices were reset. This causes the following issues: - Network interfaces aren't marked as "*Active*" in the --status output. - Active network interfaces can be unbound without the --force option, causing loss of network connection. The reset was caused by the call to devices[d].update in get_crypto_details. This patch prevents the update on non-crypto devices. Fixes: cb4a1d14bf3e ("tools: bind crypto devices") Cc: stable@dpdk.org Signed-off-by: Yoni Gilad <yonig@radcom.com> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2017-01-04tools: move to usertoolsThomas Monjalon
Rename tools/ into usertools/ to differentiate from buildtools/ and devtools/ while making clear these scripts are part of DPDK runtime. Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com> Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>