[LEDE-DEV] [RFC] Disable 802.11b rates by default and set supported/basic rates appropriately for 2.4 GHz BSSes based on require_mode
Nick Lowe
nick.lowe at gmail.com
Mon Mar 13 08:45:35 PDT 2017
Disable 802.11b rates by default and set supported/basic rates
appropriately for 2.4 GHz BSSes based on require_mode.
The require_mode option can currently be configured to a value of g or
n for 2.4 GHz BSSes or n or ac for 5 GHz BSSes to set the minimum mode
that connecting clients need to support to be able to connect.
This patch introduces a new require_mode of b and defaults to a
require_mode of g where this is unspecified.
The rationale for this, which is 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 in 2017 strongly favors
disabling b support by default.
Issues previously in the hostapd.sh shell script for 2.4 GHz BSSes for
the require_mode were:
1) Where a require_mode of g was configured, the supported rates still
included b rates yet the basic rates would not include b rates.
2) Where a require_mode of g was configured, the basic rates would be
set to 60 120 240 that would override the configuration of the
basic_rate option rather than filtering to exclude b rates.
3) Where a require_mode of n was configured, the b rates were still
used as basic rates which is not airtime efficient. The g require_mode
achieved better airtime efficiency for broadcast/multicast traffic.
Only where the require_mode was set to g would the basic rates be set
to not include b rates.
Now:
1) Where a require_mode is not configured to b and the supported_rates
option has not been configured, this will be changed to OFDM rates
only:
60 90 120 180 240 360 480 540
2) Where a require_mode is not configured to b and the supported_rates
option has been configured, this will be filtered to include OFDM
rates only.
3) Where a require_mode is not configured to b and the basic_rate
option has not been configured, this will be changed to OFDM rates
only:
60 120 240
4) Where a require_mode is not configured to b and the basic_rate
option has been configured, this will now be filtered to include OFDM
rates only.
Signed-off-by: Nick Lowe <nick.lowe at gmail.com>
---
package/network/services/hostapd/files/hostapd.sh | 79 +++++++++++++++++++----
1 file changed, 68 insertions(+), 11 deletions(-)
diff --git a/package/network/services/hostapd/files/hostapd.sh
b/package/network/services/hostapd/files/hostapd.sh
index 988ebc7..654d64e 100644
--- a/package/network/services/hostapd/files/hostapd.sh
+++ b/package/network/services/hostapd/files/hostapd.sh
@@ -90,23 +90,80 @@ hostapd_prepare_device_config() {
}
[ -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
- 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
+ if [ "$require_mode" != "b" ]; then
+ case "$r" in
+ 1000)
+ continue
+ ;;
+ 2000)
+ continue
+ ;;
+ 5500)
+ continue
+ ;;
+ 11000)
+ continue
+ ;;
+ esac
+ fi
+
hostapd_add_rate rlist "$r"
done
+ local brlist= br
+ json_get_values basic_rate_list basic_rate
+ for br in $basic_rate_list; do
+ if [ "$require_mode" != "b" ]; then
+ case "$br" in
+ 1000)
+ continue
+ ;;
+ 2000)
+ continue
+ ;;
+ 5500)
+ continue
+ ;;
+ 11000)
+ continue
+ ;;
+ esac
+ fi
+
+ if [ -z $rate_list ]; then
+ hostapd_add_rate brlist "$br"
+ else
+ for r in $rate_list; do
+ if [ "$br" = "$r" ]; then
+ hostapd_add_rate brlist "$br"
+ break
+ fi
+ done
+ fi
+ done
+
+ if [ "$require_mode" != "b" ]; then
+ if [ -z "$rlist" ]; then
+ rlist="60 90 120 180 240 360 480 540"
+ fi
+
+ if [ -z "$brlist" ]; then
+ brlist="60 120 240"
+ fi
+
+ case "$require_mode" in
+ n)
+ append base_cfg "require_ht=1" "$N"
+ ;;
+ ac)
+ append base_cfg "require_vht=1" "$N"
+ ;;
+ esac
+ fi
+
[ -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"
--
2.10.2
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Disable-802.11b-rates-by-default-and-set-supported-b.patch
Type: application/octet-stream
Size: 4478 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/lede-dev/attachments/20170313/f603e6f8/attachment.obj>
More information about the Lede-dev
mailing list