diff options
author | Nick Lowe <nick.lowe@gmail.com> | 2017-03-27 10:50:23 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2017-05-03 13:58:23 +0200 |
commit | ed62d91f4b5296a4aa883ce975d76f590ef4e910 (patch) | |
tree | fef68ad213d45f53f8262d2e2045bfc2d98e68dd /package/network/services/hostapd | |
parent | 41feba8c4aa33ca3c6fa7c1a6c3224aae02440a7 (diff) | |
download | upstream-ed62d91f4b5296a4aa883ce975d76f590ef4e910.tar.gz upstream-ed62d91f4b5296a4aa883ce975d76f590ef4e910.tar.bz2 upstream-ed62d91f4b5296a4aa883ce975d76f590ef4e910.zip |
hostapd: add legacy_rates option to disable 802.11b data rates.
Setting legacy_rates to 0 disables 802.11b data rates.
Setting legacy_rates to 1 enables 802.11b data rates. (Default)
The basic_rate option and supported_rates option are filtered based on this.
The rationale for the change, stronger now than in 2014, can be found in:
https://mentor.ieee.org/802.11/dcn/14/11-14-0099-00-000m-renewing-2-4ghz-band.pptx
The balance of equities between compatibility with b clients and the
detriment to the 2.4 GHz ecosystem as a whole strongly favors disabling b
rates by default.
Signed-off-by: Nick Lowe <nick.lowe@gmail.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name> [cleanup, defaults change]
Diffstat (limited to 'package/network/services/hostapd')
-rw-r--r-- | package/network/services/hostapd/files/hostapd.sh | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh index 988ebc7757..6fb902e376 100644 --- a/package/network/services/hostapd/files/hostapd.sh +++ b/package/network/services/hostapd/files/hostapd.sh @@ -64,6 +64,7 @@ hostapd_common_add_device_config() { config_add_string country config_add_boolean country_ie doth config_add_string require_mode + config_add_boolean legacy_rates hostapd_add_log_config } @@ -75,12 +76,15 @@ hostapd_prepare_device_config() { local base="${config%%.conf}" local base_cfg= - json_get_vars country country_ie beacon_int doth require_mode + json_get_vars country country_ie beacon_int doth require_mode legacy_rates hostapd_set_log_options base_cfg set_default country_ie 1 set_default doth 1 + set_default legacy_rates 1 + + [ "$hwmode" = "b" ] && legacy_rates=1 [ -n "$country" ] && { append base_cfg "country_code=$country" "$N" @@ -88,25 +92,33 @@ hostapd_prepare_device_config() { [ "$country_ie" -gt 0 ] && append base_cfg "ieee80211d=1" "$N" [ "$hwmode" = "a" -a "$doth" -gt 0 ] && append base_cfg "ieee80211h=1" "$N" } - [ -n "$hwmode" ] && append base_cfg "hw_mode=$hwmode" "$N" local brlist= br json_get_values basic_rate_list basic_rate - for br in $basic_rate_list; do - hostapd_add_rate brlist "$br" - done + local rlist= r + json_get_values rate_list supported_rates + + [ -n "$hwmode" ] && append base_cfg "hw_mode=$hwmode" "$N" + [ "$legacy_rates" -eq 0 ] && set_default require_mode g + + [ "$hwmode" = "g" ] && { + [ "$legacy_rates" -eq 0 ] && set_default rate_list "6000 9000 12000 18000 24000 36000 48000 54000" + [ -n "$require_mode" ] && set_default basic_rate_list "6000 12000 24000" + } + case "$require_mode" in - g) brlist="60 120 240" ;; n) append base_cfg "require_ht=1" "$N";; ac) append base_cfg "require_vht=1" "$N";; esac - local rlist= r - json_get_values rate_list supported_rates for r in $rate_list; do hostapd_add_rate rlist "$r" done + for br in $basic_rate_list; do + hostapd_add_rate brlist "$br" + done + [ -n "$rlist" ] && append base_cfg "supported_rates=$rlist" "$N" [ -n "$brlist" ] && append base_cfg "basic_rates=$brlist" "$N" [ -n "$beacon_int" ] && append base_cfg "beacon_int=$beacon_int" "$N" |