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>
master
Matthias Schiffer 8 years ago
parent 5e481881d7
commit 1a16cb9c67
No known key found for this signature in database
GPG Key ID: 16EF3F64CB201D9C
  1. 2
      package/kernel/mac80211/Makefile
  2. 10
      package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
  3. 2
      package/network/services/hostapd/Makefile
  4. 5
      package/network/services/hostapd/files/hostapd.sh

@ -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

@ -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" ] && \
@ -588,7 +588,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}
@ -668,7 +668,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
@ -720,7 +722,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 ..

@ -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

@ -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
@ -709,7 +709,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

Loading…
Cancel
Save