d_stop() {
if `grep -q wl1251 /proc/modules` ; then
- rmmod wl1251_sdio
- rmmod wl1251
- rmmod board-omap3pandora-wifi
+ ifconfig wlan0 down
+ rmmod board_omap3pandora_wifi wl1251_sdio wl1251 2> /dev/null
fi
}
d_start() {
- 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")
- insmod $(busybox find /lib/modules/$(uname -r)/updates -name "wl1251.ko")
- insmod $(busybox find /lib/modules/$(uname -r)/updates -name "wl1251_sdio.ko")
- insmod $(busybox find /lib/modules/$(uname -r) -name "board-omap3pandora-wifi.ko")
+ 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 phyX related LED triggers (they come from mac80211.ko)
- sleep 0.5
+ # 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}')
+ 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 "$trigger" > "$led/trigger"
+ echo "phy${phy_idx}$trigger" > "$led/trigger"
fi
done
fi