
It is possible to configure bond over two virtual functions for the vms in case of using mellanox interfaces. Change-Id: Iaeee31a9edaefec25498a734cac6eda389c38ec5
68 lines
2.2 KiB
Plaintext
68 lines
2.2 KiB
Plaintext
<%- | String $content_string = '', String $interface = '', String $count = '' | -%>
|
|
<%=$content_string%>set -ex
|
|
set -o pipefail
|
|
|
|
if [ "<%=$interface%>" == "$1" ]
|
|
then
|
|
exec 1> >(logger -s -t $(basename $0)) 2>&1
|
|
vendor_id="$(cat /sys/class/net/<%=$interface%>/device/vendor)"
|
|
if [[ $vendor_id == "0x15b3" && $(/sbin/lsmod | grep bonding) ]]
|
|
then
|
|
declare -A bonds
|
|
for bond in `cat /sys/class/net/bonding_masters`
|
|
do
|
|
bonds[$bond]=`cat "/sys/class/net/$bond/bonding/slaves"`
|
|
for bond_interface in ${bonds[$bond]}
|
|
do
|
|
echo "-$bond_interface" > "/sys/class/net/$bond/bonding/slaves"
|
|
done
|
|
done
|
|
fi
|
|
if [ "$(cat /sys/class/net/<%=$interface%>/device/sriov_numvfs)" == "0" ]
|
|
then
|
|
echo <%=$count%> > /sys/class/net/<%=$interface%>/device/sriov_numvfs
|
|
else
|
|
exit 0
|
|
fi
|
|
if [ $vendor_id == "0x15b3" ]
|
|
then
|
|
vfs_pci_list=$(grep PCI_SLOT_NAME /sys/class/net/<%=$interface%>/device/virtfn*/uevent | cut -d'=' -f2)
|
|
for pci in $vfs_pci_list
|
|
do
|
|
echo "$pci" > /sys/bus/pci/drivers/mlx5_core/unbind
|
|
done
|
|
fi
|
|
interface_pci=$(grep PCI_SLOT_NAME /sys/class/net/<%=$interface%>/device/uevent | cut -d'=' -f2)
|
|
/usr/sbin/devlink dev eswitch set pci/"$interface_pci" mode switchdev
|
|
if [[ "$(/usr/sbin/devlink dev eswitch show pci/"$interface_pci")" =~ "mode switchdev" ]]
|
|
then
|
|
echo "PCI device $interface_pci set to mode switchdev."
|
|
else
|
|
echo "Failed to set PCI device $interface_pci to mode switchdev."
|
|
exit 1
|
|
fi
|
|
interface_device=$(cat /sys/class/net/<%=$interface%>/device/device)
|
|
if [ "$interface_device" == "0x1013" ] || [ "$interface_device" == "0x1015" ]
|
|
then
|
|
/usr/sbin/devlink dev eswitch set pci/"$interface_pci" inline-mode transport
|
|
fi
|
|
/usr/sbin/ethtool -K <%=$interface%> hw-tc-offload on
|
|
if [ $vendor_id == "0x15b3" ]
|
|
then
|
|
for pci in $vfs_pci_list
|
|
do
|
|
echo "$pci" > /sys/bus/pci/drivers/mlx5_core/bind
|
|
done
|
|
fi
|
|
if [[ $vendor_id == "0x15b3" && $(/sbin/lsmod | grep bonding) ]]
|
|
then
|
|
for bond in "${!bonds[@]}"
|
|
do
|
|
for bond_interface in ${bonds[$bond]}
|
|
do
|
|
echo "+$bond_interface" > "/sys/class/net/$bond/bonding/slaves"
|
|
done
|
|
done
|
|
fi
|
|
fi
|