mac80211: fix basic rate list processing in ad-hoc mode
[openwrt.git] / package / kernel / mac80211 / files / lib / netifd / wireless / mac80211.sh
index eefe1fe..c98807f 100644 (file)
@@ -20,7 +20,7 @@ drv_mac80211_init_device_config() {
        config_add_string path phy macaddr
        config_add_string hwmode
        config_add_int beacon_int chanbw frag rts
        config_add_string path phy macaddr
        config_add_string hwmode
        config_add_int beacon_int chanbw frag rts
-       config_add_int rxantenna txantenna antenna_gain txpower
+       config_add_int rxantenna txantenna antenna_gain txpower distance
        config_add_boolean noscan
        config_add_array ht_capab
 }
        config_add_boolean noscan
        config_add_array ht_capab
 }
@@ -28,7 +28,7 @@ drv_mac80211_init_device_config() {
 drv_mac80211_init_iface_config() {
        hostapd_common_add_bss_config
 
 drv_mac80211_init_iface_config() {
        hostapd_common_add_bss_config
 
-       config_add_string macaddr
+       config_add_string macaddr ifname
 
        config_add_boolean wds powersave
        config_add_int maxassoc
 
        config_add_boolean wds powersave
        config_add_int maxassoc
@@ -85,6 +85,8 @@ mac80211_hostapd_setup_bss() {
        hostapd_set_bss_options hostapd_cfg "$vif" || return 1
        json_get_vars wds dtim_period max_listen_int
 
        hostapd_set_bss_options hostapd_cfg "$vif" || return 1
        json_get_vars wds dtim_period max_listen_int
 
+       set_default wds 0
+
        [ "$wds" -gt 0 ] && append hostapd_cfg "wds_sta=1" "$N"
        [ "$staidx" -gt 0 ] && append hostapd_cfg "start_disabled=1" "$N"
 
        [ "$wds" -gt 0 ] && append hostapd_cfg "wds_sta=1" "$N"
        [ "$staidx" -gt 0 ] && append hostapd_cfg "start_disabled=1" "$N"
 
@@ -239,7 +241,7 @@ mac80211_setup_supplicant() {
 }
 
 mac80211_setup_adhoc() {
 }
 
 mac80211_setup_adhoc() {
-       json_get_vars bssid ssid basic_rate key
+       json_get_vars bssid ssid key mcast_rate
 
        keyspec=
        [ "$auth_type" == "wep" ] && {
 
        keyspec=
        [ "$auth_type" == "wep" ] && {
@@ -264,15 +266,14 @@ mac80211_setup_adhoc() {
        }
 
        brstr=
        }
 
        brstr=
-       for br in $basic_rate; do
+       for br in $basic_rate_list; do
                hostapd_add_rate brstr "$br"
        done
 
        mcval=
        [ -n "$mcast_rate" ] && hostapd_add_rate mcval "$mcast_rate"
 
                hostapd_add_rate brstr "$br"
        done
 
        mcval=
        [ -n "$mcast_rate" ] && hostapd_add_rate mcval "$mcast_rate"
 
-       iw dev "$ifname" ibss join "$ssid" $freq $htmode \
-               ${fixed:+fixed-freq} $bssid \
+       iw dev "$ifname" ibss join "$ssid" $freq $htmode fixed-freq $bssid \
                ${beacon_int:+beacon-interval $beacon_int} \
                ${brstr:+basic-rates $brstr} \
                ${mcval:+mcast-rate $mcval} \
                ${beacon_int:+beacon-interval $beacon_int} \
                ${brstr:+basic-rates $brstr} \
                ${mcval:+mcast-rate $mcval} \
@@ -309,7 +310,7 @@ mac80211_setup_vif() {
                ;;
                adhoc)
                        wireless_vif_parse_encryption
                ;;
                adhoc)
                        wireless_vif_parse_encryption
-                       if [ "$wpa" -gt 0 ]; then
+                       if [ "$wpa" -gt 0 -o "$auto_channel" -gt 0 ]; then
                                mac80211_setup_supplicant || failed=1
                        else
                                mac80211_setup_adhoc
                                mac80211_setup_supplicant || failed=1
                        else
                                mac80211_setup_adhoc
@@ -351,6 +352,7 @@ drv_mac80211_setup() {
                txpower antenna_gain \
                rxantenna txantenna \
                frag rts beacon_int
                txpower antenna_gain \
                rxantenna txantenna \
                frag rts beacon_int
+       json_get_values basic_rate_list basic_rate
        json_select ..
 
        find_phy || {
        json_select ..
 
        find_phy || {