#!/bin/sh DESC="WL1251 MAC80211 Wireless LAN driver" NAME="wl1251" d_stop() { if `grep -q wl1251 /proc/modules` ; then ifconfig wlan0 down rmmod board_omap3pandora_wifi wl1251_sdio wl1251 2> /dev/null fi } d_start() { if ! lsmod | grep -q mac80211 ; then insmod $(busybox find /lib/modules/$(uname -r)/updates -name "rfkill_backport.ko") insmod $(busybox find /lib/modules/$(uname -r)/updates -name "compat.ko") insmod $(busybox find /lib/modules/$(uname -r)/updates -name "cfg80211.ko") insmod $(busybox find /lib/modules/$(uname -r)/updates -name "mac80211.ko") insmod $(busybox find /lib/modules/$(uname -r)/updates -name "compat_firmware_class.ko") insmod $(busybox find /lib/modules/$(uname -r) -name "ecb.ko") insmod $(busybox find /lib/modules/$(uname -r) -name "pcbc.ko") insmod $(busybox find /lib/modules/$(uname -r) -name "arc4.ko") insmod $(busybox find /lib/modules/$(uname -r)/updates -name "lib80211.ko") insmod $(busybox find /lib/modules/$(uname -r)/updates -name "lib80211_crypt_tkip.ko") insmod $(busybox find /lib/modules/$(uname -r)/updates -name "lib80211_crypt_wep.ko") insmod $(busybox find /lib/modules/$(uname -r)/updates -name "lib80211_crypt_ccmp.ko") fi modprobe wl1251 modprobe wl1251_sdio # this does not exist on newer kernels modprobe board-omap3pandora-wifi 2> /dev/null # find our phy index, they change every time driver module is reinserted # assume our interface is wlan0 phy_idx=0 for a in `seq 20` ; do if [ -e /sys/class/net/wlan0 ] ; then phy_idx=$(cat /sys/class/net/wlan0/phy80211/index) break else sleep 0.2 fi done # restore phy related LED triggers (they come from mac80211.ko) if [ -e /sys/class/leds/ ] ; then for led in /sys/class/leds/* ; do trigger=$(grep "$(basename $led)" /etc/default/leds | grep phy | \ awk '{print $2}' | sed -e 's/.*phy[0-9]*\(.*\)/\1/') if [ "x$trigger" != "x" ] ; then echo "phy${phy_idx}$trigger" > "$led/trigger" fi done fi } case "$1" in start) echo -n "Starting $DESC: $NAME" d_start & echo "." ;; stop) echo -n "Stopping $DESC: $NAME" d_stop echo "." ;; restart|force-reload) echo -n "Restarting $DESC: $NAME" d_stop sleep 1 d_start echo "." ;; *) echo "Usage: $0 {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0