summaryrefslogtreecommitdiffstats
path: root/scripts/dpdk_setup_ports.py
diff options
context:
space:
mode:
authorYaroslav Brustinov <ybrustin@cisco.com>2016-08-18 23:33:07 +0300
committerYaroslav Brustinov <ybrustin@cisco.com>2016-08-18 23:46:32 +0300
commit3651723c548d6730e272a2f3509084b7f34286ce (patch)
treecc8714d7ee530d704765bdd085c01accc856d34f /scripts/dpdk_setup_ports.py
parent08def8d3b3e909b9bbafcb0f4820a84ab7d522ad (diff)
revert mmain_dpdk.h commited by mistake code
add create config functional test change order of cores in config file
Diffstat (limited to 'scripts/dpdk_setup_ports.py')
-rwxr-xr-xscripts/dpdk_setup_ports.py41
1 files changed, 30 insertions, 11 deletions
diff --git a/scripts/dpdk_setup_ports.py b/scripts/dpdk_setup_ports.py
index 3ab13a2d..e9960102 100755
--- a/scripts/dpdk_setup_ports.py
+++ b/scripts/dpdk_setup_ports.py
@@ -41,7 +41,7 @@ class ConfigCreator(object):
include_lcores = [int(x) for x in include_lcores]
exclude_lcores = [int(x) for x in exclude_lcores]
self.has_zero_lcore = False
- for cores in self.cpu_topology.values():
+ for numa, cores in self.cpu_topology.items():
for core, lcores in cores.items():
for lcore in copy.copy(lcores):
if include_lcores and lcore not in include_lcores:
@@ -51,6 +51,12 @@ class ConfigCreator(object):
if 0 in lcores:
self.has_zero_lcore = True
cores[core].remove(0)
+ zero_lcore_numa = numa
+ zero_lcore_core = core
+ zero_lcore_siblings = cores[core]
+ if self.has_zero_lcore:
+ del self.cpu_topology[zero_lcore_numa][zero_lcore_core]
+ self.cpu_topology[zero_lcore_numa][zero_lcore_core] = zero_lcore_siblings
Device_str = None
for interface in self.interfaces:
for mandatory_interface_field in ConfigCreator.mandatory_interface_fields:
@@ -108,18 +114,24 @@ class ConfigCreator(object):
if self.zmq_rpc_port:
config_str += ' zmq_rpc_port: %s\n' % self.zmq_rpc_port
config_str += ' port_info:\n'
- for interface in self.interfaces:
- config_str += ' '*6 + '- dest_mac: [%s]\n' % self._convert_mac(interface['dest_mac'])
+ for index, interface in enumerate(self.interfaces):
+ config_str += ' '*6 + '- dest_mac: [%s]' % self._convert_mac(interface['dest_mac'])
+ if interface.get('loopback_dest'):
+ config_str += " # MAC OF LOOPBACK TO IT'S DUAL INTERFACE\n"
+ else:
+ config_str += '\n'
config_str += ' '*8 + 'src_mac: [%s]\n' % self._convert_mac(interface['src_mac'])
- config_str += '\n platform:\n'
+ if index % 2:
+ config_str += '\n' # dual if barrier
+ config_str += ' platform:\n'
if len(self.interfaces_per_numa.keys()) == 1 and -1 in self.interfaces_per_numa: # VM, use any cores, 1 core per dual_if
lcores_pool = sorted([lcore for lcores in self.lcores_per_numa.values() for lcore in lcores])
config_str += ' '*6 + 'master_thread_id: %s\n' % (0 if self.has_zero_lcore else lcores_pool.pop())
- config_str += ' '*6 + 'latency_thread_id: %s\n' % lcores_pool.pop()
+ config_str += ' '*6 + 'latency_thread_id: %s\n' % lcores_pool.pop(0)
config_str += ' '*6 + 'dual_if:\n'
for i in range(0, len(self.interfaces), 2):
config_str += ' '*8 + '- socket: 0\n'
- config_str += ' '*10 + 'threads: [%s]\n\n' % lcores_pool.pop()
+ config_str += ' '*10 + 'threads: [%s]\n\n' % lcores_pool.pop(0)
else:
# we will take common minimum among all NUMAs, to satisfy all
lcores_per_dual_if = 99
@@ -137,14 +149,14 @@ class ConfigCreator(object):
for i in range(0, len(self.interfaces), 2):
numa = self.interfaces[i]['NUMA']
dual_if_section += ' '*8 + '- socket: %s\n' % numa
- lcores_for_this_dual_if = [str(lcores_pool[numa].pop()) for _ in range(lcores_per_dual_if)]
+ lcores_for_this_dual_if = [str(lcores_pool[numa].pop(0)) for _ in range(lcores_per_dual_if)]
if not lcores_for_this_dual_if:
raise DpdkSetup('Not enough cores at NUMA %s. This NUMA has %s processing units and %s interfaces.' % (numa, len(self.lcores_per_numa[numa]), self.interfaces_per_numa[numa]))
dual_if_section += ' '*10 + 'threads: [%s]\n\n' % ','.join(lcores_for_this_dual_if)
# take the cores left to master and rx
lcores_pool_left = [lcore for lcores in lcores_pool.values() for lcore in lcores]
- config_str += ' '*6 + 'master_thread_id: %s\n' % (0 if self.has_zero_lcore else lcores_pool_left.pop())
- config_str += ' '*6 + 'latency_thread_id: %s\n' % lcores_pool_left.pop()
+ config_str += ' '*6 + 'master_thread_id: %s\n' % (0 if self.has_zero_lcore else lcores_pool_left.pop(0))
+ config_str += ' '*6 + 'latency_thread_id: %s\n' % lcores_pool_left.pop(0)
# add the dual_if section
config_str += dual_if_section
@@ -358,6 +370,7 @@ Other network devices
dual_index = i + 1 - (i % 2) * 2
if 'dest_mac' not in wanted_interfaces[dual_index]:
wanted_interfaces[dual_index]['dest_mac'] = interface['MAC'] # loopback
+ wanted_interfaces[dual_index]['loopback_dest'] = True
cpu_topology_file = '/proc/cpuinfo'
# physical processor -> physical core -> logical processing units (threads)
@@ -401,12 +414,18 @@ Examples:
To unbind the interfaces using the trex configuration file
sudo ./dpdk_set_ports.py -l
-To create a default config file
+To create a default config file (example1)
sudo ./dpdk_setup_ports.py -c 02:00.0 02:00.1 -o /etc/trex_cfg.yaml
+To create a default config file (example2)
+ sudo ./dpdk_setup_ports.py -c eth1 eth2 --dest-macs 11:11:11:11:11:11 22:22:22:22:22:22 --dump
+
To show interfaces status
sudo ./dpdk_set_ports.py -s
+To see more detailed info on interfaces (table):
+ sudo ./dpdk_set_ports.py -t
+
""",
description=" unbind dpdk interfaces ",
epilog=" written by hhaim");
@@ -472,7 +491,7 @@ To show interfaces status
)
parser.add_argument('--version', action='version',
- version="0.1" )
+ version="0.2" )
map_driver.args = parser.parse_args();
if map_driver.args.parent :