fix(infra): QAT init
[csit.git] / resources / libraries / python / QATUtil.py
index be8cc95..e16221f 100644 (file)
@@ -16,6 +16,7 @@
 from resources.libraries.python.DUTSetup import DUTSetup
 from resources.libraries.python.topology import NodeType, Topology
 from resources.libraries.python.VPPUtil import VPPUtil
+from resources.libraries.python.ssh import exec_cmd_no_error
 
 
 class QATUtil:
@@ -58,17 +59,34 @@ class QATUtil:
         # Bind to kernel driver.
         DUTSetup.pci_driver_bind(node, device["pci_address"], device["driver"])
 
+        cmd = f"adf_ctl status | grep {device['pci_address']} | "
+        cmd += "awk '{print $1}'"
+        stdout, _ = exec_cmd_no_error(
+            node, cmd, sudo=True, message="Failed to check crypto device!"
+        )
+        if stdout.strip():
+            qat_dev = stdout.split("_")[-1]
+            conf_file = f"/etc/{device['driver']}_{qat_dev.strip()}.conf"
+            exec_cmd_no_error(
+                node, f"adf_ctl --config {conf_file} {stdout.strip()} restart",
+                sudo=True, message="Failed to restart crypto device!"
+            )
+        else:
+            raise ValueError("Crypto device error")
+
         # Initialize QAT VFs.
         if int(device["numvfs"]) > 0:
+            path = f"drivers/{device['driver']}"
             DUTSetup.set_sriov_numvfs(
-                node, device["pci_address"], type="drivers/4xxx",
+                node, device["pci_address"], path=path,
                 numvfs=device["numvfs"]
             )
 
-        for cvf in range(int(device["numvfs"])):
-            DUTSetup.pci_vf_driver_unbind(
-                node, device["pci_address"], cvf
-            )
-            DUTSetup.pci_vf_driver_bind(
-                node, device["pci_address"], cvf, "vfio-pci"
-            )
+        if device["driver"] not in ["c4xxx"]:
+            for cvf in range(int(device["numvfs"])):
+                DUTSetup.pci_vf_driver_unbind(
+                    node, device["pci_address"], cvf
+                )
+                DUTSetup.pci_vf_driver_bind(
+                    node, device["pci_address"], cvf, "vfio-pci"
+                )