#!/bin/sh

MODULE="ipw2200"
FILTER_PATH="/sys/bus/pci/drivers/${MODULE}/*/rtap_filter"
LEVEL=""

function get_level()
{
	if [ ! -e ${FILTER_PATH} ]; then
		LEVEL=""
	else
		LEVEL=`cat ${FILTER_PATH}`
	fi
}

function bit()
{
	VAL=1
	for ((i = 0; i < $2; i++)); do
		VAL=$((VAL*2))
	done
	SET="$((VAL & $3))"
	if [ "${SET}" = "0" ]; then
		SET=" "
	else
		SET="*"
	fi
	printf "%-20s\t\t0x%08X [%s] %d\n" $1 $VAL "$SET" $VAL
}

IFS="
"
LEVELS=$(sed -ne "s#.*IPW_PROM_\(.*\)[ \t]*=[ \t]*(1[ \t]*<<[ \t]*\(.*\)).*#\1 \2#p" ipw2200.h)
get_level

if [ ! -z ${LEVEL} ]; then
	LEV=$((LEVEL))
else
	LEV=0
fi
printf "%-20s\t\t%-10s Set Decimal\n" "Description" "Hex"
for i in $LEVELS; do
	IFS=" 
"
	bit $i ${LEV}
done

if [ ! -z ${LEVEL} ]; then
	printf "rtap_filter = ${LEVEL} (* = enabled)\n"
else
	printf "${MODULE} not currently loaded.  rtap_filter not set.\n"
fi
cat << EOF
Example usage:
  \$((0x1 + 0x2 + 0x4 ...)) > /sys/bus/pci/drivers/ipw2200/*/rtap_filter
EOF

