|
Packit |
db064d |
#!/bin/sh
|
|
Packit |
db064d |
|
|
Packit |
db064d |
# Usage ibstatus [devname[:port]]
|
|
Packit |
db064d |
|
|
Packit |
db064d |
infiniband_base="/sys/class/infiniband"
|
|
Packit |
db064d |
def_ibdev="mthca0"
|
|
Packit |
db064d |
|
|
Packit |
db064d |
usage() {
|
|
Packit |
db064d |
prog=`basename $0`
|
|
Packit |
db064d |
echo "Usage: " $prog " [-h] [devname[:portnum]]"
|
|
Packit |
db064d |
echo " -h: this help screen"
|
|
Packit |
db064d |
echo " Examples:"
|
|
Packit |
db064d |
echo " $prog mthca1 # shows status of all ports of 'mthca1'"
|
|
Packit |
db064d |
echo " $prog mthca0:2 # shows status port number 2 of 'mthca0'"
|
|
Packit |
db064d |
echo " $prog # default: shows status of all '$def_ibdev' ports"
|
|
Packit |
db064d |
exit -1
|
|
Packit |
db064d |
}
|
|
Packit |
db064d |
|
|
Packit |
db064d |
fatal() {
|
|
Packit |
db064d |
echo "Fatal error: " $*
|
|
Packit |
db064d |
exit -1
|
|
Packit |
db064d |
}
|
|
Packit |
db064d |
|
|
Packit |
db064d |
|
|
Packit |
db064d |
port_status() {
|
|
Packit |
db064d |
port_dir="$infiniband_base/$1/ports/$2"
|
|
Packit |
db064d |
echo "Infiniband device '$1' port $2 status:"
|
|
Packit |
db064d |
echo " default gid: " `[ -r $port_dir/gids/0 ] && cat $port_dir/gids/0 || echo unknown`
|
|
Packit |
db064d |
echo " base lid: " `[ -r $port_dir/lid ] && cat $port_dir/lid || echo unknown`
|
|
Packit |
db064d |
echo " sm lid: " `[ -r $port_dir/sm_lid ] && cat $port_dir/sm_lid || echo unknown`
|
|
Packit |
db064d |
echo " state: " `[ -r $port_dir/state ] && cat $port_dir/state || echo unknown`
|
|
Packit |
db064d |
echo " phys state: " `[ -r $port_dir/phys_state ] && cat $port_dir/phys_state || echo unknown`
|
|
Packit |
db064d |
echo " rate: " `[ -r $port_dir/rate ] && cat $port_dir/rate || echo unknown`
|
|
Packit |
db064d |
echo " link_layer: " `[ -r $port_dir/link_layer ] && cat $port_dir/link_layer || echo IB`
|
|
Packit |
db064d |
echo
|
|
Packit |
db064d |
}
|
|
Packit |
db064d |
|
|
Packit |
db064d |
ib_status() {
|
|
Packit |
db064d |
ports_dir="$infiniband_base/$1/ports"
|
|
Packit |
db064d |
|
|
Packit |
db064d |
if ! [ -d "$ports_dir" ]; then
|
|
Packit |
db064d |
fatal "device '$1': sys files not found ($ports_dir)"
|
|
Packit |
db064d |
fi
|
|
Packit |
db064d |
|
|
Packit |
db064d |
if [ "$2" = "+" ]; then
|
|
Packit |
db064d |
ports=`(cd "$infiniband_base/$1/ports" 2>/dev/null || fatal No devices; echo *)`
|
|
Packit |
db064d |
else
|
|
Packit |
db064d |
ports=$2
|
|
Packit |
db064d |
fi
|
|
Packit |
db064d |
|
|
Packit |
db064d |
for i in $ports; do
|
|
Packit |
db064d |
port_status $1 $i
|
|
Packit |
db064d |
done
|
|
Packit |
db064d |
}
|
|
Packit |
db064d |
|
|
Packit |
db064d |
if [ "$1" = "-h" ]; then
|
|
Packit |
db064d |
usage
|
|
Packit |
db064d |
fi
|
|
Packit |
db064d |
|
|
Packit |
db064d |
if [ -z "$1" ]; then
|
|
Packit |
db064d |
cd $infiniband_base 2>/dev/null || fatal No devices
|
|
Packit |
db064d |
for dev in *; do
|
|
Packit |
db064d |
ib_status $dev "+";
|
|
Packit |
db064d |
done
|
|
Packit |
db064d |
exit 0
|
|
Packit |
db064d |
fi
|
|
Packit |
db064d |
|
|
Packit |
db064d |
while [ "$1" ]; do
|
|
Packit |
db064d |
dev=`echo $1 | sed 's/:.*$//'`
|
|
Packit |
db064d |
port=`echo $1 | sed 's/^.*://'`
|
|
Packit |
db064d |
|
|
Packit |
db064d |
if [ "$port" = "$dev" ]; then
|
|
Packit |
db064d |
port="+"
|
|
Packit |
db064d |
fi
|
|
Packit |
db064d |
|
|
Packit |
db064d |
ib_status $dev $port
|
|
Packit |
db064d |
shift
|
|
Packit |
db064d |
done
|