a5d6be32c7
This PS udpates the sriov init script to by default create the max number of vfs supported by the card -1. Which works round issues encoutered with many cards that prevents ther theroretical max being attainable. Change-Id: I01f8ce1f36b6053a5ef68119d87b67050ffe99d1 Signed-off-by: Pete Birley <pete@port.direct>
55 lines
1.9 KiB
Smarty
55 lines
1.9 KiB
Smarty
#!/bin/bash
|
|
|
|
{{/*
|
|
Copyright 2017 The Openstack-Helm Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/}}
|
|
|
|
set -ex
|
|
|
|
{{- range $k, $sriov := .Values.network.interface.sriov }}
|
|
if [ "x{{ $sriov.num_vfs }}" != "x" ]; then
|
|
echo "{{ $sriov.num_vfs }}" > /sys/class/net/{{ $sriov.device }}/device/sriov_numvfs
|
|
else
|
|
#NOTE(portdirect): Many NICs have difficulty creating more than n-1 over their
|
|
# claimed limit, by default err on the side of caution and account for this
|
|
# limitation.
|
|
TOT_NUM_VFS=$(cat /sys/class/net/{{ $sriov.device }}/device/sriov_totalvfs)
|
|
if [[ "$TOT_NUM_VFS" -le "0" ]]; then
|
|
NUM_VFS="$TOT_NUM_VFS"
|
|
else
|
|
if [[ "$((TOT_NUM_VFS - 1 ))" -le "1" ]]; then
|
|
NUM_VFS=1
|
|
else
|
|
NUM_VFS="$((TOT_NUM_VFS - 1 ))"
|
|
fi
|
|
fi
|
|
echo "${NUM_VFS}" > /sys/class/net/{{ $sriov.device }}/device/sriov_numvfs
|
|
fi
|
|
{{- if $sriov.mtu }}
|
|
ip link set dev {{ $sriov.device }} mtu {{ $sriov.mtu }}
|
|
{{- end }}
|
|
ip link set {{ $sriov.device }} up
|
|
ip link show {{ $sriov.device }}
|
|
{{- if $sriov.promisc }}
|
|
ip link set {{ $sriov.device }} promisc on
|
|
#NOTE(portdirect): get the bus that the port is on
|
|
NIC_BUS=$(lshw -c network -businfo | awk '/{{ $sriov.device }}/ {print $1}')
|
|
#NOTE(portdirect): get first port on the nic
|
|
NIC_FIRST_PORT=$(lshw -c network -businfo | awk "/${NIC_BUS%%.*}/ { print \$2; exit }"
|
|
#NOTE(portdirect): Enable promisc mode on the nic, by setting it for the 1st port
|
|
ethtool --set-priv-flags ${NIC_FIRST_PORT} vf-true-promisc-support on
|
|
{{- end }}
|
|
{{- end }}
|