-# Copyright (c) 2021 Cisco and/or its affiliates.
+# Copyright (c) 2022 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:
initialize or remove VFs on QAT.
:param node: DUT node.
- :crypto_type: Crypto device type - HW_DH895xcc or HW_C3xxx.
+ :crypto_type: Crypto device type - HW_DH895xcc, HW_C3xxx or HW_C4xxx.
:param numvfs: Number of VFs to initialize, 0 - disable the VFs.
:param force_init: If True then try to initialize to specific value.
:type node: dict
"""Init Crypto QAT device virtual functions on DUT.
:param node: DUT node.
- :crypto_type: Crypto device type - HW_DH895xcc or HW_C3xxx.
+ :crypto_type: Crypto device type - HW_DH895xcc, HW_C3xxx or HW_C4xxx.
:param numvfs: Number of VFs to initialize, 0 - disable the VFs.
:type node: dict
:type crypto_type: string
elif crypto_type == u"HW_C3xxx":
kernel_mod = u"qat_c3xxx"
kernel_drv = u"c3xxx"
+ elif crypto_type == u"HW_C4xxx":
+ kernel_mod = u"qat_c4xxx"
+ kernel_drv = u"c4xxx"
else:
raise RuntimeError(
f"Unsupported crypto device type on {node[u'host']}"
# sriov is not supported and we want 0 VFs
# no need to do anything
return
- else:
- raise RuntimeError(
- f"Can't configure {numvfs} VFs on {pf_pci_addr} device "
- f"on {node[u'host']} since it doesn't support SR-IOV."
- )
+
+ raise RuntimeError(
+ f"Can't configure {numvfs} VFs on {pf_pci_addr} device "
+ f"on {node[u'host']} since it doesn't support SR-IOV."
+ )
pci = pf_pci_addr.replace(u":", r"\:")
command = f"sh -c \"echo {numvfs} | " \
)
@staticmethod
- def pci_driver_unbind_list(node, *pci_addrs):
- """Unbind PCI devices from current driver on node.
+ def unbind_pci_devices_from_other_driver(node, driver, *pci_addrs):
+ """Unbind PCI devices from driver other than input driver on node.
:param node: DUT node.
+ :param driver: Driver to not unbind from. If None or empty string,
+ will attempt to unbind from the current driver.
:param pci_addrs: PCI device addresses.
:type node: dict
+ :type driver: str
:type pci_addrs: list
"""
for pci_addr in pci_addrs:
- DUTSetup.pci_driver_unbind(node, pci_addr)
+ if not driver or \
+ DUTSetup.get_pci_dev_driver(node, pci_addr) != driver:
+ DUTSetup.pci_driver_unbind(node, pci_addr)
@staticmethod
def pci_driver_bind(node, pci_addr, driver):
# the directory doesn't exist which means the device is not bound
# to any driver
return None
- else:
- cmd = f"basename $(readlink -f {driver_path})"
- ret_val, _ = exec_cmd_no_error(node, cmd)
- return ret_val.strip()
+ cmd = f"basename $(readlink -f {driver_path})"
+ ret_val, _ = exec_cmd_no_error(node, cmd)
+ return ret_val.strip()
@staticmethod
def verify_kernel_module(node, module, force_load=False):
)
# workaround to avoid installation of vpp-api-python
exec_cmd_no_error(
- node, u"rm -f {vpp_pkg_dir}vpp-api-python.deb",
+ node, f"rm -f {vpp_pkg_dir}vpp-api-python.deb",
timeout=120, sudo=True
)
exec_cmd_no_error(
)
# workaround to avoid installation of vpp-api-python
exec_cmd_no_error(
- node, u"rm -f {vpp_pkg_dir}vpp-api-python.rpm",
+ node, f"rm -f {vpp_pkg_dir}vpp-api-python.rpm",
timeout=120, sudo=True
)
exec_cmd_no_error(