Skip to content

Commit

Permalink
mac80211: Accept auto txpower setting
Browse files Browse the repository at this point in the history
This changes the SIWTXPOWER ioctl to also accept a txpower setting of
"automatic". Since mac80211 currently cannot tell drivers to automatically
adjust tx power, we select the tx power level of the current channel. While
this is kind of a hack, it certainly saves some iwconfig users from headaches.

Signed-off-by: Mattias Nissler <mattias.nissler@gmx.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Mattias Nissler authored and David S. Miller committed Jan 28, 2008
1 parent c7b6ea2 commit 6a43295
Showing 1 changed file with 17 additions and 4 deletions.
21 changes: 17 additions & 4 deletions net/mac80211/ieee80211_ioctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -634,22 +634,35 @@ static int ieee80211_ioctl_siwtxpower(struct net_device *dev,
{
struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
bool need_reconfig = 0;
u8 new_power_level;

if ((data->txpower.flags & IW_TXPOW_TYPE) != IW_TXPOW_DBM)
return -EINVAL;
if (data->txpower.flags & IW_TXPOW_RANGE)
return -EINVAL;
if (!data->txpower.fixed)
return -EINVAL;

if (local->hw.conf.power_level != data->txpower.value) {
local->hw.conf.power_level = data->txpower.value;
if (data->txpower.fixed) {
new_power_level = data->txpower.value;
} else {
/* Automatic power level. Get the px power from the current
* channel. */
struct ieee80211_channel* chan = local->oper_channel;
if (!chan)
return -EINVAL;

new_power_level = chan->power_level;
}

if (local->hw.conf.power_level != new_power_level) {
local->hw.conf.power_level = new_power_level;
need_reconfig = 1;
}

if (local->hw.conf.radio_enabled != !(data->txpower.disabled)) {
local->hw.conf.radio_enabled = !(data->txpower.disabled);
need_reconfig = 1;
}

if (need_reconfig) {
ieee80211_hw_config(local);
/* The return value of hw_config is not of big interest here,
Expand Down

0 comments on commit 6a43295

Please sign in to comment.