| #!/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 |