scripts/rxe_cfg: Try to get status from all infiniband devices

Also, add some minor tweaks for the add|rm routines.

Signed-off-by: Michal Berger <michalx.berger@intel.com>
Change-Id: I39cdbec2c0aca12e7077d8db161e65fdce7ca19f
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6241
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Michal Berger 2021-02-03 15:59:41 +01:00 committed by Tomasz Zawadzki
parent 940cd3ae37
commit fc7d5d4e27

View File

@ -8,6 +8,7 @@ declare -r rdma_rxe_add=$rdma_rxe/parameters/add
declare -r rdma_rxe_rm=$rdma_rxe/parameters/remove
declare -r infiniband=/sys/class/infiniband
declare -r infiniband_verbs=/sys/class/infiniband_verbs
declare -r net=/sys/class/net
declare -A net_devices
@ -45,11 +46,16 @@ get_ipv4() {
get_rxe_mtu() {
local rxe=$1
local mtu
local uverb
[[ -c /dev/infiniband/uverbs${rxe/rxe/} ]] || return 0
for uverb in "$infiniband_verbs/uverbs"*; do
if [[ $(< "$uverb/ibdev") == "$rxe" ]] \
&& [[ -c /dev/infiniband/${uverb##*/} ]]; then
[[ $(ibv_devinfo -d "$rxe") =~ active_mtu:(.*\ \(.*\)) ]]
echo "${BASH_REMATCH[1]:-(?)}"
return 0
fi
done
}
start() {
@ -196,7 +202,7 @@ print_status() {
add_rxe() {
local dev net_devs
[[ -e $rdma_rxe/parameters ]] || return 1
[[ -e $rdma_rxe_add ]] || return 0
if [[ -z $1 || $1 == all ]]; then
net_devs=("${!net_devices[@]}")
@ -222,6 +228,8 @@ add_rxe() {
remove_rxe() {
local rxes rxe
[[ -e $rdma_rxe_rm ]] || return 0
rxes=("${!rxe_to_net[@]}")
if [[ -z $1 || $1 == all ]]; then
rxes=("${!rxe_to_net[@]}")
@ -234,7 +242,7 @@ remove_rxe() {
for rxe in "${rxes[@]}"; do
echo "$rxe" > "$rdma_rxe_rm"
done
done 2> /dev/null
}
link_up() {
@ -249,8 +257,8 @@ collect_devices() {
for net_dev in "$net/"!(bonding_masters); do
(($(< "$net_dev/type") != 1)) && continue
net_devices["${net_dev##*/}"]=$net_dev
for rxe_dev in "$infiniband/rxe"+([0-9]); do
if [[ $(< "$rxe_dev/parent") == "${net_dev##*/}" ]]; then
for rxe_dev in "$infiniband/"*; do
if [[ -e $rxe_dev/device/net/${net_dev##*/} ]]; then
net_to_rxe["${net_dev##*/}"]=${rxe_dev##*/}
rxe_to_net["${rxe_dev##*/}"]=${net_dev##*/}
continue 2