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