Blame scripts/ibstatus

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