Adds dkms installation for QAT drivers and QAT SRIOV VFs

Change-Id: Id72e19bbfd6cbf4bf46c7a5fb0d8797eb184ab38
diff --git a/templates/sriov_qat.sh.j2 b/templates/sriov_qat.sh.j2
new file mode 100644
index 0000000..22dda99
--- /dev/null
+++ b/templates/sriov_qat.sh.j2
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+{#
+SPDX-FileCopyrightText: © 2022 Open Networking Foundation <support@opennetworking.org>
+SPDX-FileCopyrightText: © 2019 Intel Corporation
+SPDX-License-Identifier: Apache-2.0
+
+# adapted from https://github.com/clearlinux/cloud-native-setup/blob/master/clr-k8s-examples/9-multi-network/systemd/sriov.sh
+#}
+# {{ ansible_managed }}
+
+set -o errexit
+set -o pipefail
+set -o nounset
+set -x
+
+QAT_PFs=($(lspci -Dmm | grep Quick | awk '{print $1}'))
+QAT_DIR="/sys/bus/pci/devices/"
+
+
+setup_qat_pf_vfs() {
+	echo "Restarting services qat_service and qat_service_vfs"
+    service qat_service restart
+    service qat_service_vfs restart
+}
+
+setup_pf() {
+	local pf=$1
+	local num_vfs
+
+	echo "Resetting PF $pf"
+	echo 0 | tee "$QAT_DIR"/"$pf"/sriov_numvfs
+	num_vfs=$(cat "$QAT_DIR"/"$pf"/sriov_totalvfs)
+	echo "Enabling $num_vfs VFs for $pf"
+	echo "$num_vfs" | tee "$QAT_DIR"/"$pf"/sriov_numvfs
+}
+
+vfio_bind() {
+	local pf=$1
+
+	vfs_dirs=($(ls "$QAT_DIR"/"$pf" | grep virtfn))
+
+    for vf_name in "${vfs_dirs[@]}"; do
+        local vf_dir="$QAT_DIR"/"$pf"/"$vf_name"
+
+		vfpci=$(ls -l "$vf_dir" | awk '{print substr($11,4)}')
+		vfpci_dir=$(readlink -f "$vf_dir")
+
+    	echo "Binding qat VF $vfpci with vfio-pci"
+
+	    echo "$vfpci" >"$vfpci_dir"/driver/unbind
+		echo "vfio-pci" >"$vfpci_dir"/driver_override
+		echo "$vfpci" >/sys/bus/pci/drivers/vfio-pci/bind
+    done
+}
+
+setup_qat_pf_vfs
+
+for pf in "${QAT_PFs[@]}"; do
+	# setup_pf "$pf"
+    vfio_bind "$pf"
+done