Skip to content

Commit

Permalink
mac80211, hostapd: always explicitly set beacon interval
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
neocturne committed May 13, 2017
1 parent 5e48188 commit 1a16cb9
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 9 deletions.
2 changes: 1 addition & 1 deletion package/kernel/mac80211/Makefile
Expand Up @@ -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
Expand Down
10 changes: 6 additions & 4 deletions package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
Expand Up @@ -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" ] && \
Expand Down Expand Up @@ -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}
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 ..

Expand Down
2 changes: 1 addition & 1 deletion package/network/services/hostapd/Makefile
Expand Up @@ -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
Expand Down
5 changes: 2 additions & 3 deletions package/network/services/hostapd/files/hostapd.sh
Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 1a16cb9

Please sign in to comment.