aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormklyus <mklyus@cisco.com>2020-03-13 15:12:49 +0300
committerAlec Hothan <ahothan@cisco.com>2020-04-07 16:10:20 +0000
commit3bf6dfa64662a3fd3ff1682090b4c2559389d9f1 (patch)
treec6fcba057b928ef274a9e46af44e3841b4a9b452
parentce2525c2a621af3d20fc58f03a8f88d29e0e3617 (diff)
Auto PCI picking issue fix
Change-Id: I2492baf4deffff2d11cf04ab9b79711ea5dd2f16 Signed-off-by: Max Klyus <mklyus@cisco.com>
-rw-r--r--nfvbench/utils.py14
1 files changed, 8 insertions, 6 deletions
diff --git a/nfvbench/utils.py b/nfvbench/utils.py
index 94cc11d..d4482fd 100644
--- a/nfvbench/utils.py
+++ b/nfvbench/utils.py
@@ -149,19 +149,21 @@ def get_intel_pci(nic_slot=None, nic_ports=None):
continue
matches.sort()
+ device_list = list(x[0].split('.')[0] for x in matches)
+ device_ports_list = {i: {'ports': device_list.count(i)} for i in device_list}
for port in matches:
intf_name = glob.glob("/sys/bus/pci/devices/%s/net/*" % port[0])
- if not intf_name:
- # Interface is not bind to kernel driver, so take it
- pcis.append(port[1])
- else:
+ if intf_name:
intf_name = intf_name[0][intf_name[0].rfind('/') + 1:]
process = subprocess.Popen(['ip', '-o', '-d', 'link', 'show', intf_name],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
intf_info, _ = process.communicate()
- if not re.search('team_slave|bond_slave', intf_info.decode("utf-8")):
- pcis.append(port[1])
+ if re.search('team_slave|bond_slave', intf_info.decode("utf-8")):
+ device_ports_list[port[0].split('.')[0]]['busy'] = True
+ for port in matches:
+ if not device_ports_list[port[0].split('.')[0]].get('busy'):
+ pcis.append(port[1])
if len(pcis) == 2:
break