mac80211, hostapd: always explicitly set beacon interval
authorMatthias Schiffer <mschiffer@universe-factory.net>
Sat, 13 May 2017 14:17:44 +0000 (16:17 +0200)
committerJo-Philipp Wich <jo@mein.io>
Sat, 27 May 2017 12:24:13 +0000 (14:24 +0200)
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>
package/kernel/mac80211/Makefile
package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
package/network/services/hostapd/Makefile
package/network/services/hostapd/files/hostapd.sh

index 47f4aa270ff69e879ecc99e3c4bd2ac79c138155..8ec05a343a4df23ef43411b5074ea1b4fe10d5f5 100644 (file)
@@ -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
index baa023ecf63ba3515e1458064e1b14bc5c74a8bc..82c374353ec98259e57c2568843ca9ef6b3a4ca2 100644 (file)
@@ -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 ..
 
index f3aa94b6eaf1d3370f69b21e8e4bd22dfc1f5931..b7cc6b9c34f67685b92c89de310aedbf8462cb62 100644 (file)
@@ -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
index 6fb902e3765c50a7b9b2b553b9945ac60011ad80..32c09c647b3ab00cb5bc01bc4a9618bb506df565 100644 (file)
@@ -76,7 +76,7 @@ hostapd_prepare_device_config() {
        local base="${config%%.conf}"
        local base_cfg=
 
-       json_get_vars country country_ie beacon_int doth require_mode legacy_rates
+       json_get_vars country country_ie beacon_int:100 doth require_mode legacy_rates
 
        hostapd_set_log_options base_cfg
 
@@ -121,7 +121,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
@@ -710,7 +710,6 @@ wpa_supplicant_add_network() {
        }
        local beacon_int brates mrate
        [ -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