diff --git a/iopsys-brcm63xx-arm/disc/base-files/etc/init.d/wifi_bringup b/iopsys-brcm63xx-arm/disc/base-files/etc/init.d/wifi_bringup new file mode 100755 index 0000000000000000000000000000000000000000..ea56ca70f1413166f804cb361c59feba1d113e18 --- /dev/null +++ b/iopsys-brcm63xx-arm/disc/base-files/etc/init.d/wifi_bringup @@ -0,0 +1,38 @@ +#!/bin/sh /etc/rc.common +# +# Load broadcom wifi drivers + + +START=18 + +# wl.ko taskset thread pid workaround (wl.ko thread gets pid 0 ???) +taskset_hack() { + [ -h /usr/bin/taskset ] && { + # since disc uses ro fs, we do an overlay workaround for the workaround for now... + mkdir -p /tmp/overlay/bin /tmp/overlay/sbin /tmp/overlay/work + mount -t overlay overlay -o lowerdir=/usr/bin,upperdir=/tmp/overlay/bin,workdir=/tmp/overlay/work /usr/bin + mount -t overlay overlay -o lowerdir=/usr/sbin,upperdir=/tmp/overlay/sbin,workdir=/tmp/overlay/work /usr/sbin + + mv /usr/bin/taskset /usr/sbin/taskset + cat << 'EOT' >> /tmp/overlay/bin/taskset +#!/bin/sh + +[ "$3" -eq "0" ] && set -- "$1" "$2" "$(pgrep -n kthrd)" +/usr/sbin/taskset $@ || echo "failed to set affinity. rc: $? pid: $(pgrep -n kthrd)" +return 0 +EOT + chmod +x /tmp/overlay/bin/taskset + } +} + +boot() { + taskset_hack + + # always use the data partition as data + mountpoint -q /data || mount -t ubifs ubi:data /data + + /etc/init.d/hndnvram.sh start && \ + [ -s /data/.kernel_nvram.setting ] && \ + /etc/init.d/bcm-wlan-drivers.sh start || \ + echo "Failed to bring up wifi - fix and load wifi drivers manually" +}