diff --git a/iopsys-brcm63xx-arm/base-files/lib/netifd/wireless/mac80211.sh b/iopsys-brcm63xx-arm/base-files/lib/netifd/wireless/mac80211.sh index a577f8d3522ba986084df9b33a6372b923e53245..e8baaa42dd74829e086342685533cc43e2a4ea0e 100755 --- a/iopsys-brcm63xx-arm/base-files/lib/netifd/wireless/mac80211.sh +++ b/iopsys-brcm63xx-arm/base-files/lib/netifd/wireless/mac80211.sh @@ -706,6 +706,11 @@ mac80211_interface_cleanup() { for wdev in $(list_phy_interfaces "$phy"); do ip link set dev "$wdev" down 2>/dev/null iw dev "$wdev" del + + type wlctl > /dev/null 2>&1 && { + wlctl -i ${wdev} down + } + done } @@ -715,6 +720,15 @@ mac80211_set_noscan() { drv_mac80211_cleanup() { hostapd_common_cleanup + + type wlctl > /dev/null 2>&1 && { + local phy="$1" + + phyidx=$(echo "$phy" | sed 's/\(phy\)\([0-9]*\)/\2/g') + phyiface=$(iw dev | grep phy#${phyidx} -A1 | grep Interface | cut -d' ' -f2) + #echo "Bring down ${phyiface}" > /dev/console + wlctl -i ${phyiface} down + } } drv_mac80211_setup() { @@ -745,6 +759,15 @@ drv_mac80211_setup() { iw reg set "$country" sleep 1 } + + type wlctl > /dev/null 2>&1 && { + phyidx=$(echo "$phy" | sed 's/\(phy\)\([0-9]*\)/\2/g') + phyiface=$(iw dev | grep phy#${phyidx} -A1 | grep Interface | cut -d' ' -f2) + wlctl -i ${phyiface} down + wlctl -i ${phyiface} country "$country" + sleep 1 + #wlctl -i ${phyiface} up + } } hostapd_conf_file="/var/run/hostapd-$phy.conf" @@ -791,14 +814,15 @@ drv_mac80211_setup() { [ -n "$hostapd_ctrl" ] && { /usr/sbin/hostapd -s -P /var/run/wifi-$phy.pid -B "$hostapd_conf_file" ret="$?" + sleep 3 wireless_add_process "$(cat /var/run/wifi-$phy.pid)" "/usr/sbin/hostapd" 1 [ "$ret" != 0 ] && { wireless_setup_failed HOSTAPD_START_FAILED return } } - - for_each_interface "ap sta adhoc mesh monitor" mac80211_setup_vif + + for_each_interface "sta adhoc mesh monitor" mac80211_setup_vif wireless_set_up } diff --git a/iopsys-brcm63xx-arm/base-files/lib/wifi/brcm_mac80211.sh b/iopsys-brcm63xx-arm/base-files/lib/wifi/brcm_mac80211.sh index b264bf6f6682636379c7e023ed4ab8377e1666d4..e5300a7cb29c6b4f1ddb2366d657f6f64cef91ad 100644 --- a/iopsys-brcm63xx-arm/base-files/lib/wifi/brcm_mac80211.sh +++ b/iopsys-brcm63xx-arm/base-files/lib/wifi/brcm_mac80211.sh @@ -17,6 +17,7 @@ detect_brcm_mac80211() { # Get factory WPA key. local WPAKEY=$(db -q get hw.board.wpa_key) WPAKEY=${WPAKEY:-1234567890} + [ "$WPAKEY" == "00000000" ] && WPAKEY="123456789" for _dev in /sys/class/ieee80211/*; do [ -e "$_dev" ] || continue @@ -61,6 +62,7 @@ detect_brcm_mac80211() { # fi dev_id="set wireless.${radioidx}.phy=${dev}" + rmac=$(iw dev ${radioidx} info | grep addr | cut -d ' ' -f 2) BMAC=$(db -q get hw.board.basemac) BMAC=${BMAC//:/} @@ -89,6 +91,7 @@ detect_brcm_mac80211() { set wireless.default_${radioidx}.ieee80211k=1 set wireless.default_${radioidx}.ieee80211v=1 set wireless.default_${radioidx}.bss_transition=1 + set wireless.default_${radioidx}.macaddr=${rmac} EOF uci -q commit wireless