aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--resources/api/vpp/supported_crcs.yaml20
-rw-r--r--resources/libraries/python/InterfaceUtil.py51
-rw-r--r--resources/libraries/python/VppConfigGenerator.py20
-rw-r--r--resources/libraries/robot/l2/l2_bridge_domain.robot18
-rw-r--r--resources/libraries/robot/l2/l2_xconnect.robot15
-rw-r--r--resources/libraries/robot/shared/interfaces.robot4
6 files changed, 57 insertions, 71 deletions
diff --git a/resources/api/vpp/supported_crcs.yaml b/resources/api/vpp/supported_crcs.yaml
index d15e9f44c3..459bbd576b 100644
--- a/resources/api/vpp/supported_crcs.yaml
+++ b/resources/api/vpp/supported_crcs.yaml
@@ -47,10 +47,10 @@
add_node_next_reply: '0x2ed75f32' # dev
avf_create: '0xdaab8ae2' # dev
avf_create_reply: '0x5383d31f' # dev
- bond_create: '0x48883c7e' # perf
- bond_create_reply: '0x5383d31f' # perf
- bond_enslave: '0x076ecfa7' # perf
- bond_enslave_reply: '0xe8d4e804' # perf
+ bond_add_member: '0xe7d14948' # perf
+ bond_add_member_reply: '0xe8d4e804' # perf
+ bond_create2: '0x912fda76' # perf
+ bond_create2_reply: '0x5383d31f' # perf
# 4x^ tc01-64B-1c-1lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr
# ^ l2xcfwdANDlbond_1lANDnf_testpmd
bridge_domain_add_del: '0x600b7170' # dev
@@ -245,11 +245,11 @@
sr_steering_pol_dump: '0x51077d14' # perf teardown
# 14x^ tc01-78B-1c-ethip6ip6-ip6base-srv6enc1sid-mrr
# ^ srv6_1sid
+ sw_bond_interface_details: '0x9428a69c' # perf
+ sw_bond_interface_dump: '0xf9e6675e' # perf
+ # ^^ see bond_*
sw_interface_add_del_address: '0x5803d5c4' # dev
sw_interface_add_del_address_reply: '0xe8d4e804' # dev
- sw_interface_bond_details: '0xf5ef2106' # perf
- sw_interface_bond_dump: '0x51077d14' # perf
- # ^^ see bond_*
sw_interface_details: '0x17b69fa2' # dev setup
sw_interface_dump: '0xaa610c27' # dev setup
# sw_interface_get_table / reply # honeycomb
@@ -279,14 +279,14 @@
# ^^ see ipsec_tunnel_if_add_del
sw_interface_set_vxlan_bypass: '0x65247409' # dev
sw_interface_set_vxlan_bypass_reply: '0xe8d4e804' # dev
- sw_interface_slave_details: '0x3c4a0e23' # perf
- sw_interface_slave_dump: '0xf9e6675e' # perf
- # ^^ see bond_*
# sw_interface_span_dump / details # honeycomb
sw_interface_tap_v2_dump: '0xf9e6675e' # dev
sw_interface_tap_v2_details: '0xe53c16de' # dev
sw_interface_vhost_user_details: '0x98530df1' # dev
sw_interface_vhost_user_dump: '0xf9e6675e' # dev
+ sw_member_interface_details: '0x3c4a0e23' # perf
+ sw_member_interface_dump: '0xf9e6675e' # perf
+ # ^^ see bond_*
tap_create_v2: '0x445835fd' # dev
tap_create_v2_reply: '0x5383d31f' # dev
vxlan_add_del_tunnel: '0xa35dc8f5' # dev
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.
diff --git a/resources/libraries/robot/l2/l2_bridge_domain.robot b/resources/libraries/robot/l2/l2_bridge_domain.robot
index 1726eb0ae6..812514bd98 100644
--- a/resources/libraries/robot/l2/l2_bridge_domain.robot
+++ b/resources/libraries/robot/l2/l2_bridge_domain.robot
@@ -460,13 +460,13 @@
| Initialize L2 bridge domains with Vhost-User and VLAN with VPP link bonding in a 3-node circular topology
| | [Documentation]
| | ... | Create two Vhost-User interfaces on all defined VPP nodes. Create one
-| | ... | link bonding (BondEthernet) interface on both VPP nodes. Enslave one
-| | ... | physical interface towards next DUT by BondEthernet interface. Setup
-| | ... | VLAN on BondEthernet interfaces between DUTs. Add one Vhost-User
-| | ... | interface into L2 bridge domains with learning enabled with physical
-| | ... | interface towards TG and other Vhost-User interface into L2 bridge
-| | ... | domains with learning enabled with VLAN sub-interface. All interfaces
-| | ... | are brought up.
+| | ... | link bonding (BondEthernet) interface on both VPP nodes. Add one
+| | ... | physical interface towards next DUT as a member of BondEthernet
+| | ... | interface. Setup VLAN on BondEthernet interfaces between DUTs. Add one
+| | ... | Vhost-User interface into L2 bridge domains with learning enabled with
+| | ... | physical interface towards TG and other Vhost-User interface into L2
+| | ... | bridge domains with learning enabled with VLAN sub-interface. All
+| | ... | interfaces are brought up.
| |
| | ... | *Arguments:*
| | ... | - bd_id1 - Bridge domain ID. Type: integer
@@ -495,7 +495,7 @@
| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
| | | ${_even}= | Evaluate | ${pf} % 2
| | | Run Keyword Unless | ${even}
-| | | ... | VPP Enslave Physical Interface
+| | | ... | VPP Add Bond Member
| | | ... | ${dut1} | ${DUT1_${int}${pf}}[0] | ${dut1_eth_bond_if1}
| | END
| | ${dut2_eth_bond_if1}= | VPP Create Bond Interface
@@ -505,7 +505,7 @@
| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
| | | ${_even}= | Evaluate | ${pf} % 2
| | | Run Keyword If | ${even}
-| | | ... | VPP Enslave Physical Interface
+| | | ... | VPP Add Bond Member
| | | ... | ${dut2} | ${DUT2_${int}${pf}}[0] | ${dut2_eth_bond_if1}
| | END
| | VPP Show Bond Data On All Nodes | ${nodes} | verbose=${TRUE}
diff --git a/resources/libraries/robot/l2/l2_xconnect.robot b/resources/libraries/robot/l2/l2_xconnect.robot
index fdbd1dca61..2cdba5b4d2 100644
--- a/resources/libraries/robot/l2/l2_xconnect.robot
+++ b/resources/libraries/robot/l2/l2_xconnect.robot
@@ -217,11 +217,12 @@
| Initialize L2 xconnect with Vhost-User and VLAN with VPP link bonding in 3-node circular topology
| | [Documentation]
| | ... | Create two Vhost-User interfaces on all defined VPP nodes. Create one
-| | ... | link bonding (BondEthernet) interface on both VPP nodes. Enslave one
-| | ... | physical interface towards next DUT by BondEthernet interface. Setup
-| | ... | VLAN on BondEthernet interfaces between DUTs. Cross connect one Vhost
-| | ... | interface with physical interface towards TG and other Vhost interface
-| | ... | with VLAN sub-interface. All interfaces are brought up.
+| | ... | link bonding (BondEthernet) interface on both VPP nodes. Add one
+| | ... | physical interface towards next DUT as a member of BondEthernet
+| | ... | interface. Setup VLAN on BondEthernet interfaces between DUTs. Cross
+| | ... | connect one Vhost interface with physical interface towards TG and
+| | ... | other Vhost interface with VLAN sub-interface. All interfaces are
+| | ... | brought up.
| |
| | ... | *Arguments:*
| | ... | - subid - ID of the sub-interface to be created. Type: string
@@ -247,7 +248,7 @@
| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
| | | ${_even}= | Evaluate | ${pf} % 2
| | | Run Keyword Unless | ${even}
-| | | ... | VPP Enslave Physical Interface
+| | | ... | VPP Add Bond Member
| | | ... | ${dut1} | ${DUT1_${int}${pf}}[0] | ${dut1_eth_bond_if1}
| | END
| | ${dut2_eth_bond_if1}= | VPP Create Bond Interface
@@ -257,7 +258,7 @@
| | FOR | ${pf} | IN RANGE | 1 | ${nic_pfs} + 1
| | | ${_even}= | Evaluate | ${pf} % 2
| | | Run Keyword If | ${even}
-| | | ... | VPP Enslave Physical Interface
+| | | ... | VPP Add Bond Member
| | | ... | ${dut2} | ${DUT2_${int}${pf}}[0] | ${dut2_eth_bond_if1}
| | END
| | VPP Show Bond Data On All Nodes | ${nodes} | verbose=${TRUE}
diff --git a/resources/libraries/robot/shared/interfaces.robot b/resources/libraries/robot/shared/interfaces.robot
index b842f276ef..27908c3cf8 100644
--- a/resources/libraries/robot/shared/interfaces.robot
+++ b/resources/libraries/robot/shared/interfaces.robot
@@ -415,9 +415,9 @@
| | ... | ${nodes['${dut}']} | ${bond_mode} | load_balance=${lb_mode}
| | ... | mac=00:00:00:01:01:01
| | Set Interface State | ${nodes['${dut}']} | ${if_index} | up
-| | VPP Enslave Physical Interface
+| | VPP Add Bond Member
| | ... | ${nodes['${dut}']} | ${${dut}_${int}1_1} | ${if_index}
-| | VPP Enslave Physical Interface
+| | VPP Add Bond Member
| | ... | ${nodes['${dut}']} | ${${dut}_${int}2_1} | ${if_index}
| | FOR | ${id} | IN RANGE | 1 | ${count} + 1
| | | Set Test Variable | ${${dut}_bond1_${id}} | ${if_index}