github.com/k8snetworkplumbingwg/sriov-network-operator@v1.2.1-0.20240408194816-2d2e5a45d453/pkg/render/testdata/machineconfig/files/configure-switchdev.sh.yaml (about) 1 mode: 0755 2 overwrite: true 3 path: "/usr/local/bin/configure-switchdev.sh" 4 contents: 5 inline: | 6 #!/bin/bash 7 set -eux 8 input="/etc/switchdev.conf" 9 names=() 10 11 while read pci_addr num_vfs 12 do 13 echo "Set $num_vfs VFs on device $pci_addr" 14 15 names+=($(ls /sys/bus/pci/devices/${pci_addr}/net/)) 16 # create VFs 17 echo $num_vfs > /sys/bus/pci/devices/${pci_addr}/sriov_numvfs 18 done <"$input" 19 20 # wait for vfs to be ready 21 sleep 5 22 i=0 23 while read pci_addr num_vfs 24 do 25 # unload VF driver 26 VfDirs=$(ls /sys/bus/pci/devices/${pci_addr} | grep virtfn) 27 for VfDir in $VfDirs 28 do 29 VfPciAddr=$(basename "$( readlink -f /sys/bus/pci/devices/${pci_addr}/$VfDir )") 30 echo $VfPciAddr > /sys/bus/pci/drivers/mlx5_core/unbind || true 31 32 done 33 34 # set PF to switchdev mode 35 devlink dev eswitch set pci/${pci_addr} mode switchdev 36 37 # reset the pf name 38 new_name=$(ls /sys/bus/pci/devices/${pci_addr}/net/) 39 ip link set ${new_name} down 40 ip link set ${new_name} name ${names[i]} 41 ip link set ${names[i]} up 42 i=$(( i+1 )) 43 44 # load VF driver 45 for VfDir in $VfDirs 46 do 47 VfPciAddr=$(basename "$( readlink -f /sys/bus/pci/devices/${pci_addr}/$VfDir )") 48 echo $VfPciAddr > /sys/bus/pci/drivers_probe 49 done 50 done <"$input" 51