如何防止内核限制 AP 所宣传的 TX 功率

如何防止内核限制 AP 所宣传的 TX 功率

我使用外部 23dBm 天线和带有 Atheros AR9285 芯片的 Ubiquiti SR71-E 在约 150 米的距离内连接到 eduroam。我的系统是 Debian Jessie 服务器 - 因此连接由 wpa_supplicant 管理。身份验证超时导致连接稳定性问题。迁移到反向移植内核 4.7.0 解决了这些问题。

但是现在内核正在降低 (Cisco) AP 所宣传的 tx-power。该函数可以在以下位置的“has_80211h_pwr”和“has_cisco_pwr”下找到:

http://lxr.free-electrons.com/source/net/mac80211/mlme.c

问题是 iwconfig wlan0 txpower XX iw dev wlan0 set txpower fixed XXXX 只允许将 txpower 设置在 0 和新限制之间。由于 AP 公布的限制为 8dbm,因此连接被强制转到 1 Mb/s,并且仍然有较高的“Tx 过度重试”和“无效杂项”计数。

答案1

这是一个补丁,当将 txpower 设置为“固定”时,它可以忽略来自 AP 的烦人的 802.11h 帧。

diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index d6a1a46..f3ee9ab 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -61,7 +61,8 @@  bool __ieee80211_recalc_txpower(struct ieee80211_sub_if_data *sdata)
    if (sdata->user_power_level != IEEE80211_UNSET_POWER_LEVEL)
        power = min(power, sdata->user_power_level);

-   if (sdata->ap_power_level != IEEE80211_UNSET_POWER_LEVEL)
+   if (sdata->ap_power_level != IEEE80211_UNSET_POWER_LEVEL &&
+       sdata->vif.bss_conf.txpower_type != NL80211_TX_POWER_FIXED)
        power = min(power, sdata->ap_power_level);

    if (power != sdata->vif.bss_conf.txpower) {

相关内容