mac80211: make netifd script create AP interface directly
[openwrt/svn-archive/archive.git] / package / kernel / mac80211 / files / lib / netifd / wireless / mac80211.sh
index 1a85d15ed62d8ffe544adb453e7f8563a5324df5..4f680a41f5132d882c55964c5b56fc51dc5ca050 100644 (file)
@@ -42,6 +42,7 @@ drv_mac80211_init_device_config() {
                greenfield \
                short_gi_20 \
                short_gi_40 \
+               max_amsdu \
                dsss_cck_40
 }
 
@@ -54,6 +55,7 @@ drv_mac80211_init_iface_config() {
        config_add_int maxassoc
        config_add_int max_listen_int
        config_add_int dtim_period
+       config_add_int start_disabled
 
        # mesh
        config_add_string mesh_id
@@ -132,6 +134,7 @@ mac80211_hostapd_setup_base() {
                        short_gi_40:1 \
                        tx_stbc:1 \
                        rx_stbc:3 \
+                       max_amsdu:1 \
                        dsss_cck_40:1
 
                ht_cap_mask=0
@@ -152,6 +155,7 @@ mac80211_hostapd_setup_base() {
                        RX-STBC1:0x300:0x100:1 \
                        RX-STBC12:0x300:0x200:1 \
                        RX-STBC123:0x300:0x300:1 \
+                       MAX-AMSDU-7935:0x800::$max_amsdu \
                        DSSS_CCK-40:0x1000::$dsss_cck_40
 
                ht_capab="$ht_capab$ht_capab_flags"
@@ -311,12 +315,13 @@ mac80211_hostapd_setup_bss() {
        append hostapd_cfg "$type=$ifname" "$N"
 
        hostapd_set_bss_options hostapd_cfg "$vif" || return 1
-       json_get_vars wds dtim_period max_listen_int
+       json_get_vars wds dtim_period max_listen_int start_disabled
 
        set_default wds 0
+       set_default start_disabled 0
 
        [ "$wds" -gt 0 ] && append hostapd_cfg "wds_sta=1" "$N"
-       [ "$staidx" -gt 0 ] && append hostapd_cfg "start_disabled=1" "$N"
+       [ "$staidx" -gt 0 -o "$start_disabled" -eq 1 ] && append hostapd_cfg "start_disabled=1" "$N"
 
        cat >> /var/run/hostapd-$phy.conf <<EOF
 $hostapd_cfg
@@ -442,7 +447,7 @@ mac80211_prepare_vif() {
                        mac80211_hostapd_setup_bss "$phy" "$ifname" "$macaddr" "$type" || return
 
                        [ -n "$hostapd_ctrl" ] || {
-                               iw phy "$phy" interface add "$ifname" type managed
+                               iw phy "$phy" interface add "$ifname" type __ap
                                hostapd_ctrl="${hostapd_ctrl:-/var/run/hostapd/$ifname}"
                        }
                ;;
@@ -585,23 +590,22 @@ mac80211_setup_vif() {
 
        case "$mode" in
                mesh)
-                       for var in $MP_CONFIG_INT $MP_CONFIG_BOOL $MP_CONFIG_STRING; do
-                               json_get_var mp_val "$var"
-                               [ -n "$mp_val" ] && iw dev "$ifname" set mesh_param "$var" "$mp_val"
-                       done
-
-                       # authsae
+                       # authsae or wpa_supplicant
                        json_get_vars key
                        if [ -n "$key" ]; then
                                if [ -e "/lib/wifi/authsae.sh" ]; then
                                        . /lib/wifi/authsae.sh
                                        authsae_start_interface || failed=1
                                else
-                                       wireless_setup_vif_failed AUTHSAE_NOT_INSTALLED
-                                       json_select ..
-                                       return
+                                       wireless_vif_parse_encryption
+                                       mac80211_setup_supplicant || failed=1
                                fi
                        fi
+
+                       for var in $MP_CONFIG_INT $MP_CONFIG_BOOL $MP_CONFIG_STRING; do
+                               json_get_var mp_val "$var"
+                               [ -n "$mp_val" ] && iw dev "$ifname" set mesh_param "$var" "$mp_val"
+                       done
                ;;
                adhoc)
                        wireless_vif_parse_encryption