#!/bin/sh # Copyright 2006 Kel Modderman # # 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