3d38fcc312
The stub application will ensure that each nvmf test does not need to reinitialized DPDK memory and NVMe devices. This drastically cuts down on the amount of time needed to run all of the nvmf tests. Change-Id: I6abad4e1298111884f18026e72e36f5d8b73c4b9 Signed-off-by: cunyinch <cunyin.chang@intel.com> Reviewed-on: https://review.gerrithub.io/362810 Reviewed-by: Jim Harris <james.r.harris@intel.com> Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
108 lines
2.0 KiB
Bash
Executable File
108 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
NVMF_PORT=4420
|
|
NVMF_IP_PREFIX="192.168.100"
|
|
NVMF_IP_LEAST_ADDR=8
|
|
NVMF_FIRST_TARGET_IP=$NVMF_IP_PREFIX.$NVMF_IP_LEAST_ADDR
|
|
RPC_PORT=5260
|
|
|
|
if [ -z "$NVMF_APP" ]; then
|
|
NVMF_APP=./app/nvmf_tgt/nvmf_tgt
|
|
fi
|
|
|
|
if [ -z "$NVMF_TEST_CORE_MASK" ]; then
|
|
NVMF_TEST_CORE_MASK=0xFFFF
|
|
fi
|
|
|
|
function load_ib_rdma_modules()
|
|
{
|
|
if [ `uname` != Linux ]; then
|
|
return 0
|
|
fi
|
|
|
|
modprobe ib_cm
|
|
modprobe ib_core
|
|
modprobe ib_ucm
|
|
modprobe ib_umad
|
|
modprobe ib_uverbs
|
|
modprobe iw_cm
|
|
modprobe rdma_cm
|
|
modprobe rdma_ucm
|
|
}
|
|
|
|
function detect_mellanox_nics()
|
|
{
|
|
if ! hash lspci; then
|
|
return 0
|
|
fi
|
|
|
|
nvmf_nic_bdfs=`lspci | grep Ethernet | grep Mellanox | awk -F ' ' '{print "0000:"$1}'`
|
|
mlx_core_driver="mlx4_core"
|
|
mlx_ib_driver="mlx4_ib"
|
|
mlx_en_driver="mlx4_en"
|
|
|
|
if [ -z "$nvmf_nic_bdfs" ]; then
|
|
return 0
|
|
fi
|
|
|
|
# for nvmf target loopback test, suppose we only have one type of card.
|
|
for nvmf_nic_bdf in $nvmf_nic_bdfs
|
|
do
|
|
result=`lspci -vvv -s $nvmf_nic_bdf | grep 'Kernel modules' | awk -F ' ' '{print $3}'`
|
|
if [ "$result" == "mlx5_core" ]; then
|
|
mlx_core_driver="mlx5_core"
|
|
mlx_ib_driver="mlx5_ib"
|
|
mlx_en_driver=""
|
|
fi
|
|
break;
|
|
done
|
|
|
|
modprobe $mlx_core_driver
|
|
modprobe $mlx_ib_driver
|
|
if [ -n "$mlx_en_driver" ]; then
|
|
modprobe $mlx_en_driver
|
|
fi
|
|
|
|
# The mlx4 driver takes an extra few seconds to load after modprobe returns,
|
|
# otherwise ifconfig operations will do nothing.
|
|
sleep 5
|
|
}
|
|
|
|
function detect_rdma_nics()
|
|
{
|
|
# could be add other nics, so wrap it
|
|
detect_mellanox_nics
|
|
}
|
|
|
|
function allocate_nic_ips()
|
|
{
|
|
let count=$NVMF_IP_LEAST_ADDR
|
|
for nic_type in `ls /sys/class/infiniband`; do
|
|
for nic_name in `ls /sys/class/infiniband/${nic_type}/device/net`; do
|
|
ifconfig $nic_name $NVMF_IP_PREFIX.$count netmask 255.255.255.0 up
|
|
|
|
# dump configuration for debug log
|
|
ifconfig $nic_name
|
|
let count=$count+1
|
|
done
|
|
done
|
|
}
|
|
|
|
function nvmfcleanup()
|
|
{
|
|
sync
|
|
rmmod nvme-rdma
|
|
}
|
|
|
|
function rdma_device_init()
|
|
{
|
|
load_ib_rdma_modules
|
|
detect_rdma_nics
|
|
allocate_nic_ips
|
|
}
|
|
|
|
function rdma_nic_available()
|
|
{
|
|
ifconfig | grep -q $NVMF_IP_PREFIX
|
|
}
|