Wie kann ich verhindern, dass der Kernel die von AP angekündigte Sendeleistung begrenzt?

6

Ich verbinde mich mit eduroam über eine Distanz von ungefähr 150 m mit einer externen 23-dBm-Antenne und einem Ubiquiti SR71-E mit einem Atheros AR9285-Chip. Mein System ist Debian Jessie-Server - die Verbindung wird also von wpa_supplicant verwaltet. Zeitüberschreitungen bei der Authentifizierung führten zu Stabilitätsproblemen bei der Verbindung. Durch die Migration auf den Backports-Kernel 4.7.0 wurden diese Probleme behoben.

Aber jetzt reduziert der Kernel die Sendeleistung, wie vom (Cisco) AP angekündigt. Diese Funktion finden Sie unter "has_80211h_pwr" und "has_cisco_pwr" in

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

Das Problem ist, dass iwconfig wlan0 txpower XX iw dev wlan0 set txpower fixed XXXX nur die Einstellung der Sendeleistung zwischen 0 und dem neuen Grenzwert zulässig ist. Da der AP ein Limit von 8dbm ankündigt, wird die Verbindung gezwungen, auf 1 Mb / s zu gehen und weist immer noch eine hohe Anzahl von "Tx exzessiven Wiederholungsversuchen" und "Ungültiges Sonstiges" auf.

Felix
quelle

Antworten:

0

Hier ist ein Patch, der lästige 802.11h-Frames von APs ignorieren sollte, wenn txpower auf "fixed" gesetzt wird.

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) {
Andreas Søvik Nilsen
quelle