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