Add support for ConnectX-5 adapters
- upgrade mlnx-ofed-fuel to version 4.0-2.0.0.1 - add maximum number of CX5 VFs to 96 Change-Id: Ie3612d5b9a488ade49dbfc65389be9e9f9442bb0
This commit is contained in:
parent
8a16909f40
commit
b488aaaf7a
|
@ -85,6 +85,7 @@ readonly SRIOV=`get_mlnx_param sriov`
|
||||||
readonly USER_NUM_OF_VFS=`get_mlnx_param num_of_vfs`
|
readonly USER_NUM_OF_VFS=`get_mlnx_param num_of_vfs`
|
||||||
readonly ISER=`get_mlnx_param iser`
|
readonly ISER=`get_mlnx_param iser`
|
||||||
readonly MAX_VFS=62
|
readonly MAX_VFS=62
|
||||||
|
readonly MAX_VFS_CX5=96
|
||||||
readonly MIN_VFS=1
|
readonly MIN_VFS=1
|
||||||
readonly CX=`get_mlnx_param cx_card`
|
readonly CX=`get_mlnx_param cx_card`
|
||||||
readonly NETWORK_TYPE=`get_mlnx_param network_type`
|
readonly NETWORK_TYPE=`get_mlnx_param network_type`
|
||||||
|
|
|
@ -27,7 +27,8 @@ MLNX_SECTION = 'mellanox-plugin'
|
||||||
SETTINGS_FILE = '/etc/astute.yaml'
|
SETTINGS_FILE = '/etc/astute.yaml'
|
||||||
PLUGIN_OVERRIDE_FILE = '/etc/hiera/override/plugins.yaml'
|
PLUGIN_OVERRIDE_FILE = '/etc/hiera/override/plugins.yaml'
|
||||||
MLNX_DRIVERS_LIST = { 'ConnectX-3': {'eth_driver' : 'mlx4_en', 'ib_driver' : 'eth_ipoib'},
|
MLNX_DRIVERS_LIST = { 'ConnectX-3': {'eth_driver' : 'mlx4_en', 'ib_driver' : 'eth_ipoib'},
|
||||||
'ConnectX-4': {'eth_driver' : 'mlx5_core', 'ib_driver' : 'eth_ipoib'}}
|
'ConnectX-4': {'eth_driver' : 'mlx5_core', 'ib_driver' : 'eth_ipoib'},
|
||||||
|
'ConnectX-5': {'eth_driver' : 'mlx5_core', 'ib_driver' : 'eth_ipoib'}}
|
||||||
MLNX_DRIVERS = set([MLNX_DRIVERS_LIST[card][net]
|
MLNX_DRIVERS = set([MLNX_DRIVERS_LIST[card][net]
|
||||||
for card in MLNX_DRIVERS_LIST
|
for card in MLNX_DRIVERS_LIST
|
||||||
for net in MLNX_DRIVERS_LIST[card]])
|
for net in MLNX_DRIVERS_LIST[card]])
|
||||||
|
@ -82,6 +83,17 @@ class MellanoxSettings(object):
|
||||||
.index(driver)]
|
.index(driver)]
|
||||||
return card
|
return card
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_card_type_by_interface_name(cls, ifc_name):
|
||||||
|
card_type = os.popen('mst status -v | grep {0} | grep -o ConnectX[0-9]*'
|
||||||
|
.format(ifc_name)).readlines()
|
||||||
|
if len(card_type) == 1:
|
||||||
|
card_type = card_type[0].replace('ConnectX', 'ConnectX-').strip()
|
||||||
|
return card_type
|
||||||
|
else:
|
||||||
|
logging.error('No driver found for interface {0}'.format(ifc_name))
|
||||||
|
exit(1)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def add_cx_card(cls):
|
def add_cx_card(cls):
|
||||||
mlnx_interfaces = cls.mlnx_interfaces_section
|
mlnx_interfaces = cls.mlnx_interfaces_section
|
||||||
|
@ -90,7 +102,7 @@ class MellanoxSettings(object):
|
||||||
mlnx = cls.get_mlnx_section()
|
mlnx = cls.get_mlnx_section()
|
||||||
for network_type, ifc_dict in mlnx_interfaces.iteritems():
|
for network_type, ifc_dict in mlnx_interfaces.iteritems():
|
||||||
if 'driver' in ifc_dict and network_type in ['private','management','storage']:
|
if 'driver' in ifc_dict and network_type in ['private','management','storage']:
|
||||||
|
|
||||||
# The bond interfaces extend the original list,
|
# The bond interfaces extend the original list,
|
||||||
# otherwise, the interface is appended to the list.
|
# otherwise, the interface is appended to the list.
|
||||||
if(type(ifc_dict['driver']) is list):
|
if(type(ifc_dict['driver']) is list):
|
||||||
|
@ -115,7 +127,7 @@ class MellanoxSettings(object):
|
||||||
mellanox_interface = interfaces_set[0]
|
mellanox_interface = interfaces_set[0]
|
||||||
if current_driver in ETH_DRIVERS:
|
if current_driver in ETH_DRIVERS:
|
||||||
mlnx['network_type'] = 'ethernet'
|
mlnx['network_type'] = 'ethernet'
|
||||||
mlnx['cx_card'] = cls.get_card_type(current_driver)
|
mlnx['cx_card'] = cls.get_card_type_by_interface_name(mellanox_interface)
|
||||||
elif current_driver in IB_DRIVERS:
|
elif current_driver in IB_DRIVERS:
|
||||||
mlnx['network_type'] = 'infiniband'
|
mlnx['network_type'] = 'infiniband'
|
||||||
ibdev = os.popen('ibdev2netdev').readlines()
|
ibdev = os.popen('ibdev2netdev').readlines()
|
||||||
|
@ -125,11 +137,7 @@ class MellanoxSettings(object):
|
||||||
return 0
|
return 0
|
||||||
if ('bonds' in cls.data and mellanox_interface.startswith('bond')):
|
if ('bonds' in cls.data and mellanox_interface.startswith('bond')):
|
||||||
mellanox_interface = cls.data['bonds'][mellanox_interface]['interfaces'][0]
|
mellanox_interface = cls.data['bonds'][mellanox_interface]['interfaces'][0]
|
||||||
interface_line = [l for l in ibdev if mellanox_interface in l]
|
mlnx['cx_card'] = cls.get_card_type_by_interface_name(mellanox_interface)
|
||||||
if interface_line and 'mlx5' in interface_line.pop():
|
|
||||||
mlnx['cx_card'] = 'ConnectX-4'
|
|
||||||
else:
|
|
||||||
mlnx['cx_card'] = 'ConnectX-3'
|
|
||||||
|
|
||||||
network_info_msg = 'Detected Network Type is: {0} '.format(mlnx['network_type'])
|
network_info_msg = 'Detected Network Type is: {0} '.format(mlnx['network_type'])
|
||||||
card_info_msg = 'Detected Card Type is: {0} '.format(mlnx['cx_card'])
|
card_info_msg = 'Detected Card Type is: {0} '.format(mlnx['cx_card'])
|
||||||
|
|
|
@ -13,7 +13,7 @@ if ( $mlnx['driver'] == 'mlx4_en' and $mlnx['mlnx_qos'] ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($mlnx['sriov']) {
|
if ($mlnx['sriov']) {
|
||||||
$pci_vendor_devices = '15b3:1014,15b3:1016'
|
$pci_vendor_devices = '15b3:1014,15b3:1016,15b3:1018'
|
||||||
$agent_required = 'True'
|
$agent_required = 'True'
|
||||||
class { 'mellanox_openstack::controller_sriov' :
|
class { 'mellanox_openstack::controller_sriov' :
|
||||||
eswitch_vnic_type => $eswitch_vnic_type,
|
eswitch_vnic_type => $eswitch_vnic_type,
|
||||||
|
|
|
@ -44,12 +44,16 @@ function get_num_probe_vfs () {
|
||||||
}
|
}
|
||||||
|
|
||||||
function calculate_total_vfs () {
|
function calculate_total_vfs () {
|
||||||
# validate num of vfs is an integer, 0 <= num <= 64
|
max_card_vfs=$MAX_VFS
|
||||||
|
if [ $CX == "ConnectX-5" ]; then
|
||||||
|
max_card_vfs=$MAX_VFS_CX5
|
||||||
|
fi
|
||||||
|
# validate num of vfs is an integer, 0 <= num <= 96
|
||||||
if [ "${USER_NUM_OF_VFS}" -ne "${USER_NUM_OF_VFS}" ] 2>/dev/null ||
|
if [ "${USER_NUM_OF_VFS}" -ne "${USER_NUM_OF_VFS}" ] 2>/dev/null ||
|
||||||
[ "${USER_NUM_OF_VFS}" -gt ${MAX_VFS} ] ||
|
[ "${USER_NUM_OF_VFS}" -gt ${max_card_vfs} ] ||
|
||||||
[ "${USER_NUM_OF_VFS}" -lt ${MIN_VFS} ]; then
|
[ "${USER_NUM_OF_VFS}" -lt ${MIN_VFS} ]; then
|
||||||
logger_print error "Illegal number of VFs ${USER_NUM_OF_VFS}, value
|
logger_print error "Illegal number of VFs ${USER_NUM_OF_VFS}, value
|
||||||
should be an integer between ${MIN_VFS},${MAX_VFS}"
|
should be an integer between ${MIN_VFS},${max_card_vfs}"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
num_of_vfs=0
|
num_of_vfs=0
|
||||||
|
@ -177,7 +181,7 @@ function burn_vfs_in_fw () {
|
||||||
done
|
done
|
||||||
service mst stop &>/dev/null
|
service mst stop &>/dev/null
|
||||||
fi
|
fi
|
||||||
if [ $CX == 'ConnectX-4' ]; then
|
if [ $CX == 'ConnectX-4' ] || [ $CX == 'ConnectX-5' ]; then
|
||||||
# required for mlxconfig to discover mlnx devices
|
# required for mlxconfig to discover mlnx devices
|
||||||
service openibd start &>/dev/null
|
service openibd start &>/dev/null
|
||||||
service mst start &>/dev/null
|
service mst start &>/dev/null
|
||||||
|
@ -218,9 +222,9 @@ function configure_sriov () {
|
||||||
logger_print info "Detected: ConnectX-3 card"
|
logger_print info "Detected: ConnectX-3 card"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $CX == 'ConnectX-4' ]; then
|
if [ $CX == 'ConnectX-4' ] || [ $CX == 'ConnectX-5' ]; then
|
||||||
set_sriov $total_vfs &&
|
set_sriov $total_vfs &&
|
||||||
logger_print info "Detected: ConnectX-4 card"
|
logger_print info "Detected: $CX card"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
return $?
|
return $?
|
||||||
|
@ -266,7 +270,7 @@ function validate_sriov () {
|
||||||
set_modprobe_file $FALLBACK_NUM_VFS
|
set_modprobe_file $FALLBACK_NUM_VFS
|
||||||
service openibd restart &> /dev/null
|
service openibd restart &> /dev/null
|
||||||
fi
|
fi
|
||||||
if [ $CX == 'ConnectX-4' ]; then
|
if [ $CX == 'ConnectX-4' ] || [ $CX == 'ConnectX-5' ]; then
|
||||||
set_sriov $FALLBACK_NUM_VFS
|
set_sriov $FALLBACK_NUM_VFS
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,7 @@ old_debs="${PLUGIN_DIR}/repositories/ubuntu/*.deb"
|
||||||
deb_files="cirros-testvm-mellanox_0.3.2-ubuntu3_amd64.deb
|
deb_files="cirros-testvm-mellanox_0.3.2-ubuntu3_amd64.deb
|
||||||
cirros-testvm-mellanox-ib_0.3.2-9_amd64.deb
|
cirros-testvm-mellanox-ib_0.3.2-9_amd64.deb
|
||||||
eswitchd_1.0.0-18_amd64.deb
|
eswitchd_1.0.0-18_amd64.deb
|
||||||
mlnx-ofed-fuel_3.4-1.0.0.0_amd64.deb
|
mlnx-ofed-fuel_4.0-2.0.0.1_amd64.deb
|
||||||
lldpd_0.9.1-0_amd64.deb
|
lldpd_0.9.1-0_amd64.deb
|
||||||
python-networking-mlnx_7.0.0-1_all.deb"
|
python-networking-mlnx_7.0.0-1_all.deb"
|
||||||
get_packages "deb" "$old_debs" "$deb_files"
|
get_packages "deb" "$old_debs" "$deb_files"
|
||||||
|
|
Loading…
Reference in New Issue