+#!/bin/sh
+
+NETWORK="$1"
+WIRELESS="$2"
+
+if [ -z "$NETWORK" ]; then
+ NETWORK="homewlan";
+fi;
+
+if [ -z "$WIRELESS" ]; then
+ WIRELESS="wireless";
+fi;
+
+# First try a minor cycle
+
+ESSID=$(/sbin/iwconfig "$WIRELESS" 2>/dev/null |grep ESSID |perl -ne 'm/\"([^\"]+)\"/ && print $1,qq(\n)')
+
+if [ -n "$ESSID" ]; then
+ sudo iwconfig "$WIRELESS" essid "$ESSID"
+ sleep 1s;
+ if /sbin/iwconfig "$WIRELESS" 2>/dev/null | grep 'Bit Rate'|grep -qv '=1 Mb/s'; then
+ exit 0
+ fi;
+fi;
+
+# Failure, so major cycle
+sudo ifdown wireless;
+if [ "$WIRELESS" == "wireless" ]; then
+ sudo modprobe -r bcm43xx;
+ sudo modprobe bcm43xx;
+fi;
+sudo ifup "wireless=${NETWORK}";