0013-mac80211-hostapd-always-explicitly-set-beacon-interval.patch 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. From: Matthias Schiffer <mschiffer@universe-factory.net>
  2. Date: Sat, 13 May 2017 16:17:44 +0200
  3. Subject: mac80211, hostapd: always explicitly set beacon interval
  4. One of the latest mac80211 updates added sanity checks, requiring the
  5. beacon intervals of all VIFs of the same radio to match. This often broke
  6. AP+11s setups, as these modes use different default intervals, at least in
  7. some configurations (observed on ath9k).
  8. Instead of relying on driver or hostapd defaults, change the scripts to
  9. always explicitly set the beacon interval, defaulting to 100. This also
  10. applies the beacon interval to 11s interfaces, which had been forgotten
  11. before. VIF-specific beacon_int setting is removed from hostapd.sh.
  12. Fixes FS#619.
  13. Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
  14. diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile
  15. index 7d7065d4ecaa4bd9eec8fedfd8f16f27d826e8aa..a326965016f35d2a7fcc061eb5dc4fd2060a3261 100644
  16. --- a/package/kernel/mac80211/Makefile
  17. +++ b/package/kernel/mac80211/Makefile
  18. @@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
  19. PKG_NAME:=mac80211
  20. PKG_VERSION:=2017-01-31
  21. -PKG_RELEASE:=1
  22. +PKG_RELEASE:=2
  23. PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
  24. PKG_BACKPORT_VERSION:=
  25. PKG_HASH:=75e6d39e34cf156212a2509172a4a62b673b69eb4a1d9aaa565f7fa719fa2317
  26. diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
  27. index baa023ecf63ba3515e1458064e1b14bc5c74a8bc..82c374353ec98259e57c2568843ca9ef6b3a4ca2 100644
  28. --- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
  29. +++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
  30. @@ -268,7 +268,7 @@ mac80211_hostapd_setup_base() {
  31. vht_max_mpdu_hw=11454
  32. [ "$vht_max_mpdu_hw" != 3895 ] && \
  33. vht_capab="$vht_capab[MAX-MPDU-$vht_max_mpdu_hw]"
  34. -
  35. +
  36. # maximum A-MPDU length exponent
  37. vht_max_a_mpdu_len_exp_hw=0
  38. [ "$(($vht_cap & 58720256))" -ge 8388608 -a 1 -le "$vht_max_a_mpdu_len_exp" ] && \
  39. @@ -566,7 +566,7 @@ mac80211_setup_adhoc() {
  40. [ -n "$mcast_rate" ] && wpa_supplicant_add_rate mcval "$mcast_rate"
  41. iw dev "$ifname" ibss join "$ssid" $freq $ibss_htmode fixed-freq $bssid \
  42. - ${beacon_int:+beacon-interval $beacon_int} \
  43. + beacon-interval $beacon_int \
  44. ${brstr:+basic-rates $brstr} \
  45. ${mcval:+mcast-rate $mcval} \
  46. ${keyspec:+keys $keyspec}
  47. @@ -646,7 +646,9 @@ mac80211_setup_vif() {
  48. esac
  49. freq="$(get_freq "$phy" "$channel")"
  50. - iw dev "$ifname" mesh join "$mesh_id" freq $freq $mesh_htmode ${mcval:+mcast-rate $mcval}
  51. + iw dev "$ifname" mesh join "$mesh_id" freq $freq $mesh_htmode \
  52. + ${mcval:+mcast-rate $mcval} \
  53. + beacon-interval $beacon_int
  54. fi
  55. for var in $MP_CONFIG_INT $MP_CONFIG_BOOL $MP_CONFIG_STRING; do
  56. @@ -698,7 +700,7 @@ drv_mac80211_setup() {
  57. country chanbw distance \
  58. txpower antenna_gain \
  59. rxantenna txantenna \
  60. - frag rts beacon_int htmode
  61. + frag rts beacon_int:100 htmode
  62. json_get_values basic_rate_list basic_rate
  63. json_select ..
  64. diff --git a/package/network/services/hostapd/Makefile b/package/network/services/hostapd/Makefile
  65. index f3aa94b6eaf1d3370f69b21e8e4bd22dfc1f5931..b7cc6b9c34f67685b92c89de310aedbf8462cb62 100644
  66. --- a/package/network/services/hostapd/Makefile
  67. +++ b/package/network/services/hostapd/Makefile
  68. @@ -7,7 +7,7 @@
  69. include $(TOPDIR)/rules.mk
  70. PKG_NAME:=hostapd
  71. -PKG_RELEASE:=2
  72. +PKG_RELEASE:=3
  73. PKG_SOURCE_URL:=http://w1.fi/hostap.git
  74. PKG_SOURCE_PROTO:=git
  75. diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh
  76. index 195b6ec45ac4def6484b322703be04433b209c7b..a937baa4d8442acc292ced3c1a3c896dba2c813e 100644
  77. --- a/package/network/services/hostapd/files/hostapd.sh
  78. +++ b/package/network/services/hostapd/files/hostapd.sh
  79. @@ -75,7 +75,7 @@ hostapd_prepare_device_config() {
  80. local base="${config%%.conf}"
  81. local base_cfg=
  82. - json_get_vars country country_ie beacon_int doth require_mode
  83. + json_get_vars country country_ie beacon_int:100 doth require_mode
  84. hostapd_set_log_options base_cfg
  85. @@ -109,7 +109,7 @@ hostapd_prepare_device_config() {
  86. [ -n "$rlist" ] && append base_cfg "supported_rates=$rlist" "$N"
  87. [ -n "$brlist" ] && append base_cfg "basic_rates=$brlist" "$N"
  88. - [ -n "$beacon_int" ] && append base_cfg "beacon_int=$beacon_int" "$N"
  89. + append base_cfg "beacon_int=$beacon_int" "$N"
  90. cat > "$config" <<EOF
  91. driver=$driver
  92. @@ -697,7 +697,6 @@ wpa_supplicant_add_network() {
  93. esac
  94. }
  95. [ -n "$bssid" ] && append network_data "bssid=$bssid" "$N$T"
  96. - [ -n "$beacon_int" ] && append network_data "beacon_int=$beacon_int" "$N$T"
  97. local bssid_blacklist bssid_whitelist
  98. json_get_values bssid_blacklist bssid_blacklist