> -----Original Message----- > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Eoin Breen > Sent: Thursday, August 25, 2016 6:52 AM > To: Jain, Deepak K; Trahe, Fiona; Griffin, John > Cc: dev at dpdk.org; Breen, Eoin > Subject: [dpdk-dev] [PATCH v2] tools: add crypto device details > > Adding the support to bind/unbind crypto devices with > dpdk-devbind.py script, as now it is not restricted > to network devices anymore. > > Signed-off-by: Eoin Breen <eoin.breen at intel.com> > --- > Changes since v1: > * Resolved coding issues > > tools/dpdk-devbind.py | 107 > ++++++++++++++++++++++++++++++++++++++++++++++---- > 1 file changed, 99 insertions(+), 8 deletions(-) > > diff --git a/tools/dpdk-devbind.py b/tools/dpdk-devbind.py > index b69ca2a..c7576b9 100755 > --- a/tools/dpdk-devbind.py > +++ b/tools/dpdk-devbind.py
... > + # check what is the interface if any for an ssh connection if > + # any to this host, so we can mark it later. > + ssh_if = [] > + route = check_output(["ip", "-o", "route"]) > + # filter out all lines for 169.254 routes > + route = "\n".join(filter(lambda ln: not ln.startswith("169.254"), > + route.decode().splitlines())) > + rt_info = route.split() > + for i in range(len(rt_info) - 1): > + if rt_info[i] == "dev": > + ssh_if.append(rt_info[i+1]) This is relevant only to network devices, so it should not be included here. > + > + # based on the basic info, get extended text details > + for d in devices.keys(): > + # get additional info and add it to existing data > + devices[d] = devices[d].copy() > + devices[d].update(get_pci_device_details(d).items()) > + > + for _if in ssh_if: > + if _if in devices[d]["Interface"].split(","): > + devices[d]["Ssh_if"] = True > + devices[d]["Active"] = "*Active*" > + break Same here. > + > + # add igb_uio to list of supporting modules if needed > + if "Module_str" in devices[d]: > + for driver in dpdk_drivers: > + if driver not in devices[d]["Module_str"]: > + devices[d]["Module_str"] = \ > + devices[d]["Module_str"] + ",%s" % driver > + else: > + devices[d]["Module_str"] = ",".join(dpdk_drivers) > + > + # make sure the driver and module strings do not have any duplicates > + if has_driver(d): > + modules = devices[d]["Module_str"].split(",") > + if devices[d]["Driver_str"] in modules: > + modules.remove(devices[d]["Driver_str"]) > + devices[d]["Module_str"] = ",".join(modules) > + > + > def dev_id_from_dev_name(dev_name): > '''Take a device "name" - a string passed in by user to identify a NIC > device, and determine the device id - i.e. the domain:bus:slot.func - for > @@ -480,15 +546,16 @@ def show_status(): > dpdk_drv = [] > no_drv = [] > > - # split our list of devices into the three categories above > + # split our list of network devices into the three categories above > for d in devices.keys(): > - if not has_driver(d): > - no_drv.append(devices[d]) > - continue > - if devices[d]["Driver_str"] in dpdk_drivers: > - dpdk_drv.append(devices[d]) > - else: > - kernel_drv.append(devices[d]) > + if (NETWORK_BASE_CLASS in devices[d]["Class"]): > + if not has_driver(d): > + no_drv.append(devices[d]) > + continue > + if devices[d]["Driver_str"] in dpdk_drivers: > + dpdk_drv.append(devices[d]) > + else: > + kernel_drv.append(devices[d]) > > # print each category separately, so we can clearly see what's used by > DPDK > display_devices("Network devices using DPDK-compatible driver", > dpdk_drv, > @@ -498,6 +565,28 @@ def show_status(): > "unused=%(Module_str)s %(Active)s") > display_devices("Other network devices", no_drv, > "unused=%(Module_str)s") > > + # split our list of crypto devices into the three categories above > + kernel_drv = [] > + dpdk_drv = [] > + no_drv = [] > + > + for d in devices.keys(): > + if (CRYPTO_BASE_CLASS in devices[d]["Class"]): > + if not has_driver(d): > + no_drv.append(devices[d]) > + continue > + if devices[d]["Driver_str"] in dpdk_drivers: > + dpdk_drv.append(devices[d]) > + else: > + kernel_drv.append(devices[d]) > + > + display_devices("Crypto devices using DPDK-compatible driver", > dpdk_drv, > + "drv=%(Driver_str)s unused=%(Module_str)s") > + display_devices("Crypto devices using kernel driver", kernel_drv, > + "if=%(Interface)s drv=%(Driver_str)s " > + "unused=%(Module_str)s %(Active)s") > + display_devices("Other crypto devices", no_drv, > "unused=%(Module_str)s") > + > > def parse_args(): > '''Parses the command-line arguments given by the user and takes the > @@ -562,6 +651,7 @@ def do_arg_actions(): > if status_flag: > if b_flag is not None: > get_nic_details() # refresh if we have changed anything > + get_crypto_details() # refresh if we have changed anything > show_status() > > > @@ -570,6 +660,7 @@ def main(): > parse_args() > check_modules() > get_nic_details() > + get_crypto_details() > do_arg_actions() > > if __name__ == "__main__": > -- > 2.5.5 >