123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- From: Matthias Schiffer <mschiffer@universe-factory.net>
- Date: Sat, 13 May 2017 16:17:44 +0200
- Subject: mac80211, hostapd: always explicitly set beacon interval
- One of the latest mac80211 updates added sanity checks, requiring the
- beacon intervals of all VIFs of the same radio to match. This often broke
- AP+11s setups, as these modes use different default intervals, at least in
- some configurations (observed on ath9k).
- Instead of relying on driver or hostapd defaults, change the scripts to
- always explicitly set the beacon interval, defaulting to 100. This also
- applies the beacon interval to 11s interfaces, which had been forgotten
- before. VIF-specific beacon_int setting is removed from hostapd.sh.
- Fixes FS#619.
- Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
- diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile
- index 7d7065d4ecaa4bd9eec8fedfd8f16f27d826e8aa..a326965016f35d2a7fcc061eb5dc4fd2060a3261 100644
- --- a/package/kernel/mac80211/Makefile
- +++ b/package/kernel/mac80211/Makefile
- @@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
- PKG_NAME:=mac80211
-
- PKG_VERSION:=2017-01-31
- -PKG_RELEASE:=1
- +PKG_RELEASE:=2
- PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
- PKG_BACKPORT_VERSION:=
- PKG_HASH:=75e6d39e34cf156212a2509172a4a62b673b69eb4a1d9aaa565f7fa719fa2317
- diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
- index baa023ecf63ba3515e1458064e1b14bc5c74a8bc..82c374353ec98259e57c2568843ca9ef6b3a4ca2 100644
- --- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
- +++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
- @@ -268,7 +268,7 @@ mac80211_hostapd_setup_base() {
- vht_max_mpdu_hw=11454
- [ "$vht_max_mpdu_hw" != 3895 ] && \
- vht_capab="$vht_capab[MAX-MPDU-$vht_max_mpdu_hw]"
- -
- +
- # maximum A-MPDU length exponent
- vht_max_a_mpdu_len_exp_hw=0
- [ "$(($vht_cap & 58720256))" -ge 8388608 -a 1 -le "$vht_max_a_mpdu_len_exp" ] && \
- @@ -566,7 +566,7 @@ mac80211_setup_adhoc() {
- [ -n "$mcast_rate" ] && wpa_supplicant_add_rate mcval "$mcast_rate"
-
- iw dev "$ifname" ibss join "$ssid" $freq $ibss_htmode fixed-freq $bssid \
- - ${beacon_int:+beacon-interval $beacon_int} \
- + beacon-interval $beacon_int \
- ${brstr:+basic-rates $brstr} \
- ${mcval:+mcast-rate $mcval} \
- ${keyspec:+keys $keyspec}
- @@ -646,7 +646,9 @@ mac80211_setup_vif() {
- esac
-
- freq="$(get_freq "$phy" "$channel")"
- - iw dev "$ifname" mesh join "$mesh_id" freq $freq $mesh_htmode ${mcval:+mcast-rate $mcval}
- + iw dev "$ifname" mesh join "$mesh_id" freq $freq $mesh_htmode \
- + ${mcval:+mcast-rate $mcval} \
- + beacon-interval $beacon_int
- fi
-
- for var in $MP_CONFIG_INT $MP_CONFIG_BOOL $MP_CONFIG_STRING; do
- @@ -698,7 +700,7 @@ drv_mac80211_setup() {
- country chanbw distance \
- txpower antenna_gain \
- rxantenna txantenna \
- - frag rts beacon_int htmode
- + frag rts beacon_int:100 htmode
- json_get_values basic_rate_list basic_rate
- json_select ..
-
- diff --git a/package/network/services/hostapd/Makefile b/package/network/services/hostapd/Makefile
- index f3aa94b6eaf1d3370f69b21e8e4bd22dfc1f5931..b7cc6b9c34f67685b92c89de310aedbf8462cb62 100644
- --- a/package/network/services/hostapd/Makefile
- +++ b/package/network/services/hostapd/Makefile
- @@ -7,7 +7,7 @@
- include $(TOPDIR)/rules.mk
-
- PKG_NAME:=hostapd
- -PKG_RELEASE:=2
- +PKG_RELEASE:=3
-
- PKG_SOURCE_URL:=http://w1.fi/hostap.git
- PKG_SOURCE_PROTO:=git
- diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh
- index 195b6ec45ac4def6484b322703be04433b209c7b..a937baa4d8442acc292ced3c1a3c896dba2c813e 100644
- --- a/package/network/services/hostapd/files/hostapd.sh
- +++ b/package/network/services/hostapd/files/hostapd.sh
- @@ -75,7 +75,7 @@ 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:100 doth require_mode
-
- hostapd_set_log_options base_cfg
-
- @@ -109,7 +109,7 @@ hostapd_prepare_device_config() {
-
- [ -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"
- + append base_cfg "beacon_int=$beacon_int" "$N"
-
- cat > "$config" <<EOF
- driver=$driver
- @@ -697,7 +697,6 @@ wpa_supplicant_add_network() {
- esac
- }
- [ -n "$bssid" ] && append network_data "bssid=$bssid" "$N$T"
- - [ -n "$beacon_int" ] && append network_data "beacon_int=$beacon_int" "$N$T"
-
- local bssid_blacklist bssid_whitelist
- json_get_values bssid_blacklist bssid_blacklist
|