diff options
Diffstat (limited to 'package/mac80211/files')
-rw-r--r-- | package/mac80211/files/lib/wifi/mac80211.sh | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/package/mac80211/files/lib/wifi/mac80211.sh b/package/mac80211/files/lib/wifi/mac80211.sh index ac1562fb2..386bda8e5 100644 --- a/package/mac80211/files/lib/wifi/mac80211.sh +++ b/package/mac80211/files/lib/wifi/mac80211.sh @@ -13,6 +13,8 @@ mac80211_hostapd_setup_base() { config_get country "$device" country config_get hwmode "$device" hwmode config_get channel "$device" channel + config_get beacon_int "$device" beacon_int + config_get basic_rate_list "$device" basic_rate config_get_bool noscan "$device" noscan [ -n "$channel" -a -z "$hwmode" ] && wifi_fixup_hwmode "$device" [ "$channel" = auto ] && channel= @@ -51,6 +53,16 @@ mac80211_hostapd_setup_base() { echo "$mac" >> $macfile done } + + local br brval brstr + [ -n "$basic_rate_list" ] && { + for br in $basic_rate_list; do + brval="$(($br / 100))" + [ -n "$brstr" ] && brstr="$brstr " + brstr="$brstr$brval" + done + } + cat >> "$cfgfile" <<EOF ctrl_interface=/var/run/hostapd-$phy driver=nl80211 @@ -92,8 +104,10 @@ tx_queue_data0_cwmax=7 tx_queue_data0_burst=1.5 ${hwmode:+hw_mode=$hwmode} ${channel:+channel=$channel} +${beacon_int:+beacon_int=$beacon_int} ${country:+country_code=$country} ${noscan:+noscan=$noscan} +${brstr:+basic_rates=$brstr} $base_cfg EOF @@ -127,6 +141,8 @@ mac80211_hostapd_setup_bss() { local macaddr hidden maxassoc wmm config_get macaddr "$vif" macaddr config_get maxassoc "$vif" maxassoc + config_get dtim_period "$vif" dtim_period + config_get max_listen_int "$vif" max_listen_int config_get_bool hidden "$vif" hidden 0 config_get_bool wmm "$vif" wmm 1 cat >> /var/run/hostapd-$phy.conf <<EOF @@ -134,6 +150,8 @@ $hostapd_cfg wmm_enabled=$wmm bssid=$macaddr ignore_broadcast_ssid=$hidden +${dtim_period:+dtim_period=$dtim_period} +${max_listen_int:+max_listen_interval=$max_listen_int} ${maxassoc:+max_num_sta=$maxassoc} EOF } @@ -390,8 +408,8 @@ enable_mac80211() { adhoc) config_get bssid "$vif" bssid config_get ssid "$vif" ssid - config_get bintval "$vif" bintval - config_get basicrates "$vif" basicrates + config_get beacon_int "$device" beacon_int + config_get basic_rate_list "$device" basic_rate config_get encryption "$vif" encryption config_get key "$vif" key 1 config_get mcast_rate "$vif" mcast_rate @@ -416,6 +434,17 @@ enable_mac80211() { esac } + local br brval brsub brstr + [ -n "$basic_rate_list" ] && { + for br in $basic_rate_list; do + brval="$(($br / 1000))" + brsub="$((($br / 100) % 10))" + [ "$brsub" -gt 0 ] && brval="$brval.$brsub" + [ -n "$brstr" ] && brstr="$brstr," + brstr="$brstr$brval" + done + } + local mcval="" [ -n "$mcast_rate" ] && { mcval="$(($mcast_rate / 1000))" @@ -425,8 +454,8 @@ enable_mac80211() { iw dev "$ifname" ibss join "$ssid" $freq \ ${fixed:+fixed-freq} $bssid \ - ${bintval:+beacon-interval $bintval} \ - ${basicrates:+basic-rates $basicrates} \ + ${beacon_int:+beacon-interval $beacon_int} \ + ${brstr:+basic-rates $brstr} \ ${mcval:+mcast-rate $mcval} \ ${keyspec:+keys $keyspec} ;; |