blob: 0cde2865f3c2c3de22297157c32e64e29888f9b4 [file] [log] [blame]
#!/bin/sh
# Copyright 2006 Kel Modderman <kelrin@tpg.com.au>
#
# Taken from madwifi scripts. This unloads madwifi
: ${PATTERN='\(ath_.*\|wlan_.*\|wlan\)$'}
: ${MAX_TRIES=10}
test "`id -u`" = 0 || {
echo "ERROR: You must be root to run this script" >&2
exit 1
}
test -r /proc/modules || {
echo "ERROR: Cannot read /proc/modules" >&2
exit 1
}
tries="$MAX_TRIES"
while test "$tries" != "0"; do
skipped=0
IFS='
'
for line in `cat /proc/modules`; do
IFS=' '
set x $line
name="$2"
size="$3"
use_count="$4"
use_name="$5"
state="$6"
expr "$name" : "$PATTERN" >/dev/null || continue
# Compatibility for Linux 2.4.x
test -z "$state" && { use_name="-"; state="Live"; }
if test "$state" != "Live" || test "$use_count" != "0" || \
test "$use_name" != "-"; then
# Don't skip unload in the last run
if test "$tries" != "1"; then
skipped=1
continue
fi
fi
echo "Unloading \"$name\""
sync # to be safe
/sbin/rmmod "$name" || {
echo "ERROR: cannot unload module \"$name\"" >&2
exit 1
}
sync # to be even safer
done
test "$skipped" = "0" && break
tries=$(($tries - 1))
done
exit 0