diff options
Diffstat (limited to 'resources/libraries/python')
-rw-r--r-- | resources/libraries/python/InterfaceUtil.py | 51 | ||||
-rw-r--r-- | resources/libraries/python/VppConfigGenerator.py | 20 |
2 files changed, 28 insertions, 43 deletions
diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py index 1245a3312a..10778ed49a 100644 --- a/resources/libraries/python/InterfaceUtil.py +++ b/resources/libraries/python/InterfaceUtil.py @@ -1048,24 +1048,28 @@ class InterfaceUtil: return sw_if_index @staticmethod - def vpp_create_bond_interface(node, mode, load_balance=None, mac=None): + def vpp_create_bond_interface( + node, mode, load_balance=None, mac=None, gso=False): """Create bond interface on VPP node. :param node: DUT node from topology. :param mode: Link bonding mode. :param load_balance: Load balance (optional, valid for xor and lacp - modes, otherwise ignored). + modes, otherwise ignored). Default: None. :param mac: MAC address to assign to the bond interface (optional). + Default: None. + :param gso: Enable GSO support (optional). Default: False. :type node: dict :type mode: str :type load_balance: str :type mac: str + :type gso: bool :returns: Interface key (name) in topology. :rtype: str :raises RuntimeError: If it is not possible to create bond interface on the node. """ - cmd = u"bond_create" + cmd = u"bond_create2" args = dict( id=int(Constants.BITWISE_NON_ZERO), use_custom_mac=bool(mac is not None), @@ -1078,7 +1082,8 @@ class InterfaceUtil: LinkBondLoadBalanceAlgo, f"BOND_API_LB_ALGO_{load_balance.upper()}" ).value, - numa_only=False + numa_only=False, + enable_gso=gso ) err_msg = f"Failed to create bond interface on host {node[u'host']}" with PapiSocketExecutor(node) as papi_exec: @@ -1227,8 +1232,8 @@ class InterfaceUtil: return Topology.get_interface_by_sw_index(node, sw_if_index) @staticmethod - def vpp_enslave_physical_interface(node, interface, bond_if): - """Enslave physical interface to bond interface on VPP node. + def vpp_add_bond_member(node, interface, bond_if): + """Add member interface to bond interface on VPP node. :param node: DUT node from topology. :param interface: Physical interface key from topology file. @@ -1236,18 +1241,18 @@ class InterfaceUtil: :type node: dict :type interface: str :type bond_if: str - :raises RuntimeError: If it is not possible to enslave physical - interface to bond interface on the node. + :raises RuntimeError: If it is not possible to add member to bond + interface on the node. """ - cmd = u"bond_enslave" + cmd = u"bond_add_member" args = dict( sw_if_index=Topology.get_interface_sw_index(node, interface), bond_sw_if_index=Topology.get_interface_sw_index(node, bond_if), is_passive=False, is_long_timeout=False ) - err_msg = f"Failed to enslave physical interface {interface} to bond " \ - f"interface {bond_if} on host {node[u'host']}" + err_msg = f"Failed to add member {interface} to bond interface " \ + f"{bond_if} on host {node[u'host']}" with PapiSocketExecutor(node) as papi_exec: papi_exec.add(cmd, **args).get_reply(err_msg) @@ -1260,7 +1265,7 @@ class InterfaceUtil: :type node: dict :type verbose: bool """ - cmd = u"sw_interface_bond_dump" + cmd = u"sw_bond_interface_dump" err_msg = f"Failed to get bond interface dump on host {node[u'host']}" data = f"Bond data on node {node[u'host']}:\n" @@ -1275,26 +1280,26 @@ class InterfaceUtil: data += u" load balance: {lb}\n".format( lb=bond[u"lb"].name.replace(u"BOND_API_LB_ALGO_", u"").lower() ) - data += f" number of active slaves: {bond[u'active_slaves']}\n" + data += f" number of active members: {bond[u'active_members']}\n" if verbose: - slave_data = InterfaceUtil.vpp_bond_slave_dump( + member_data = InterfaceUtil.vpp_bond_member_dump( node, Topology.get_interface_by_sw_index( node, bond[u"sw_if_index"] ) ) - for slave in slave_data: - if not slave[u"is_passive"]: - data += f" {slave[u'interface_name']}\n" - data += f" number of slaves: {bond[u'slaves']}\n" + for member in member_data: + if not member[u"is_passive"]: + data += f" {member[u'interface_name']}\n" + data += f" number of members: {bond[u'members']}\n" if verbose: - for slave in slave_data: - data += f" {slave[u'interface_name']}\n" + for member in member_data: + data += f" {member[u'interface_name']}\n" data += f" interface id: {bond[u'id']}\n" data += f" sw_if_index: {bond[u'sw_if_index']}\n" logger.info(data) @staticmethod - def vpp_bond_slave_dump(node, interface): + def vpp_bond_member_dump(node, interface): """Get bond interface slave(s) data on VPP node. :param node: DUT node from topology. @@ -1304,7 +1309,7 @@ class InterfaceUtil: :returns: Bond slave interface data. :rtype: dict """ - cmd = u"sw_interface_slave_dump" + cmd = u"sw_member_interface_dump" args = dict( sw_if_index=Topology.get_interface_sw_index(node, interface) ) @@ -1313,7 +1318,7 @@ class InterfaceUtil: with PapiSocketExecutor(node) as papi_exec: details = papi_exec.add(cmd, **args).get_details(err_msg) - logger.debug(f"Slave data:\n{details}") + logger.debug(f"Member data:\n{details}") return details @staticmethod diff --git a/resources/libraries/python/VppConfigGenerator.py b/resources/libraries/python/VppConfigGenerator.py index fa8290d974..437386d81d 100644 --- a/resources/libraries/python/VppConfigGenerator.py +++ b/resources/libraries/python/VppConfigGenerator.py @@ -318,26 +318,6 @@ class VppConfigGenerator: path = [u"dpdk", cryptodev_config] self.add_config_item(self._nodeconfig, u"", path) - def add_dpdk_eth_bond_dev(self, ethbond_id, mode, xmit_policy, *slaves): - """Add DPDK Eth_bond device configuration. - - :param ethbond_id: Eth_bond device ID. - :param mode: Link bonding mode. - :param xmit_policy: Transmission policy. - :param slaves: PCI device(s) to be bonded (format xxxx:xx:xx.x). - :type ethbond_id: str or int - :type mode: str or int - :type xmit_policy: str - :type slaves: list - """ - slaves_config = u"slave=" + u",slave=".join( - slave if pci_dev_check(slave) else u"" for slave in slaves - ) - ethbond_config = f"vdev eth_bond{ethbond_id}," \ - f"mode={mode}{slaves_config},xmit_policy={xmit_policy}" - path = [u"dpdk", ethbond_config] - self.add_config_item(self._nodeconfig, u"", path) - def add_dpdk_dev_default_rxq(self, value): """Add DPDK dev default rxq configuration. |