mac80211: Handle concurrent AP/STA beaconing properly
authorFelix Fietkau <nbd@openwrt.org>
Tue, 6 Aug 2013 17:59:09 +0000 (17:59 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Tue, 6 Aug 2013 17:59:09 +0000 (17:59 +0000)
Use the "start_disabled" option in hostapd that was added
in the earlier patch.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
SVN-Revision: 37732

package/kernel/mac80211/files/lib/wifi/mac80211.sh

index fb6cd296764e994fffe3585c8b2c0c015f8db0b4..13afa813b0c95aa378bc9e66013aa32daec43231 100644 (file)
@@ -110,6 +110,7 @@ EOF
 mac80211_hostapd_setup_bss() {
        local phy="$1"
        local vif="$2"
+       local staidx="$3"
 
        hostapd_cfg=
        cfgfile="/var/run/hostapd-$phy.conf"
@@ -132,6 +133,8 @@ mac80211_hostapd_setup_bss() {
        config_get_bool wds "$vif" wds 0
        [ "$wds" -gt 0 ] && append hostapd_cfg "wds_sta=1" "$N"
 
+       [ "$staidx" -gt 0 ] && append hostapd_cfg "start_disabled=1" "$N"
+
        local macaddr hidden maxassoc wmm
        config_get macaddr "$vif" macaddr
        config_get maxassoc "$vif" maxassoc
@@ -318,6 +321,7 @@ enable_mac80211() {
        local i=0
        local macidx=0
        local apidx=0
+       local staidx=0
        fixed=""
        local hostapd_ctrl=""
 
@@ -383,6 +387,7 @@ enable_mac80211() {
                        ;;
                        sta)
                                local wdsflag
+                               staidx="$(($staidx + 1))"
                                config_get_bool wds "$vif" wds 0
                                [ "$wds" -gt 0 ] && wdsflag="4addr on"
                                iw phy "$phy" interface add "$ifname" type managed $wdsflag
@@ -433,7 +438,7 @@ enable_mac80211() {
                config_get mode "$vif" mode
                case "$mode" in
                        ap)
-                               mac80211_hostapd_setup_bss "$phy" "$vif"
+                               mac80211_hostapd_setup_bss "$phy" "$vif" "$staidx"
                                start_hostapd=1
                        ;;
                        mesh)