Message ID | 1449324423-99589-1-git-send-email-nbd@openwrt.org (mailing list archive) |
---|---|
State | RFC |
Delegated to: | Johannes Berg |
Headers | show |
On Sat, 2015-12-05 at 15:07 +0100, Felix Fietkau wrote: > In some cases a user might want to connect to a far away access > point, > which announces a low tx power limit. Using the AP's power limit can > make the connection significantly more unstable or even impossible, > and > mac80211 currently provides no way to disable this behavior. > > To fix this, use the currently unused distinction between limited and > fixed tx power to decide whether a remote AP's power limit should be > accepted. > This seems reasonable. Maybe we should document it though? johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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) {
In some cases a user might want to connect to a far away access point, which announces a low tx power limit. Using the AP's power limit can make the connection significantly more unstable or even impossible, and mac80211 currently provides no way to disable this behavior. To fix this, use the currently unused distinction between limited and fixed tx power to decide whether a remote AP's power limit should be accepted. Signed-off-by: Felix Fietkau <nbd@openwrt.org> --- net/mac80211/iface.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)