"Intel-E823C": "HW_C4xxx",
"Intel-X710": "HW_DH895xcc",
"Intel-XL710": "HW_DH895xcc",
+ "Cavium-A063-100G":"HW_A0FD",
}
DEVICE_TYPE_TO_KEYWORD = {"scapy": None}
--- /dev/null
+# Copyright (c) 2025 Marvell.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""OCTEON util library."""
+
+from resources.libraries.python.DUTSetup import DUTSetup
+from resources.libraries.python.topology import NodeType, Topology
+from resources.libraries.python.VPPUtil import VPPUtil
+
+class OCTEONUtil:
+ """Contains methods for setting up OCTEON interfaces."""
+
+ @staticmethod
+ def octeon_crypto_device_verify_on_all_duts(nodes):
+ """Verify if Crypto Octeon device and its virtual functions are
+ initialized on all DUTs.
+
+ :param nodes: Nodes in the topology.
+ :type nodes: dict
+ """
+ VPPUtil.stop_vpp_service_on_all_duts(nodes)
+
+ for node in nodes.values():
+ if node["type"] == NodeType.DUT:
+ cryptodevs = Topology.get_cryptodev(node)
+ if not cryptodevs:
+ return
+ for device in cryptodevs.values():
+ OCTEONUtil.crypto_device_init(node, device)
+
+ @staticmethod
+ def crypto_device_init(node, device):
+ """Init Crypto Octeon device virtual functions on DUT.
+
+ :param node: DUT node.
+ :device: Crypto device entry from topology file.
+ :type node: dict
+ :type device: dict
+ """
+ DUTSetup.verify_kernel_module(node, device["module"], force_load=True)
+
+ current_driver = DUTSetup.get_pci_dev_driver(
+ node, device["pci_address"].replace(":", r"\:")
+ )
+ if current_driver is not None:
+ DUTSetup.pci_driver_unbind(node, device["pci_address"])
+ # Bind to kernel driver.
+ DUTSetup.pci_driver_bind(node, device["pci_address"], device["driver"])
+
+ # Initialize VFs.
+ if int(device["numvfs"]) > 0:
+ path = f"drivers/{device['driver']}"
+ DUTSetup.set_sriov_numvfs(
+ node, device["pci_address"], path=path,
+ numvfs=device["numvfs"]
+ )
+ uio_driver = Topology.get_uio_driver(node)
+ for vf in range(int(device["numvfs"])):
+ DUTSetup.pci_vf_driver_unbind(
+ node, device["pci_address"], vf
+ )
+ DUTSetup.pci_vf_driver_bind(
+ node, device["pci_address"], vf, uio_driver
+ )
if verify_vpp:
VPPUtil.verify_vpp(self._node)
+ def add_octeon_cryptodev(self):
+ """Add Octeon Crypto PCI device configuration.
+ """
+ cryptodict = Topology.get_cryptodev(self._node)
+ cryptodev = cryptodict[u"device1"][u"pci_address"]
+ cryptodev_config = re.sub(r"\d.\d$", f"0.1", cryptodev)
+ path = [u"devices", f"dev pci/{cryptodev_config}", u"driver octeon"]
+ self.add_config_item(self._nodeconfig, u"", path)
class VppInitConfig:
"""VPP Initial Configuration."""
-# Copyright (c) 2021 Cisco and/or its affiliates.
+# Copyright (c) 2025 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
for node in nodes.values():
if node[u"type"] == NodeType.DUT:
VppCounters.clear_vpp_statistics(node)
+
+ @staticmethod
+ def vpp_show_ipsec_all(node):
+ """Run "show ipsec all" debug CLI command.
+
+ :param node: Node to run command on.
+ :type node: dict
+ """
+ PapiSocketExecutor.run_cli_cmd_on_all_sockets(node, u"show ipsec all")
except KeyError:
return None
+ @staticmethod
+ def get_eventdev(node):
+ """Return Eventdev configuration of the node.
+
+ :param node: Node created from topology.
+ :type node: dict
+ :returns: Eventdev configuration string.
+ :rtype: str
+ """
+ try:
+ return node[u"eventdev"]
+ except KeyError:
+ return None
+
def get_bus(node):
"""Return bus configuration of the node.
| Library | resources.libraries.python.Namespaces
| Library | resources.libraries.python.PapiHistory
| Library | resources.libraries.python.QATUtil
+| Library | resources.libraries.python.OCTEONUtil
| Library | resources.libraries.python.SchedUtils
| Library | resources.libraries.python.Tap
| Library | resources.libraries.python.Tap.TapFeatureMask
-# Copyright (c) 2024 Cisco and/or its affiliates.
+# Copyright (c) 2025 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
| Additional Suite Setup Action For cryptohw
| | [Documentation]
-| | ... | Additional Setup for suites which uses QAT HW.
-| |
-| | Crypto Device Verify on all DUTs | ${nodes}
+| | ... | Additional Setup for suites which uses QAT/OCTEON HW.
+| |
+| | ${marvell}= | Get Node Model Bool | ${nodes[('${duts}[0]')]}
+| | ... | Marvell-Octeon
+| | Run Keyword If | not ${marvell}
+| | ... | Run Keyword | Crypto Device Verify on all DUTs | ${nodes}
+| | ... | ELSE
+| | ... | Run Keyword | Octeon Crypto Device Verify on all DUTs | ${nodes}
| Additional Suite Setup Action For nginx
| | [Documentation]
-# Copyright (c) 2024 Cisco and/or its affiliates.
+# Copyright (c) 2025 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
| | FOR | ${dut} | IN | @{duts}
| | | Run Keyword If Test Failed
| | | ... | Show Ipsec Security Association | ${nodes['${dut}']}
+| | | Run Keyword | Vpp Show Ipsec All | ${nodes['${dut}']}
| | END
| Additional Test Tear Down Action For ipsec_all