cfg80211/mac80211: Update set_tx_power to use mBm instead of dBm units
In preparation for a TX power setting interface in the nl80211, change the .set_tx_power function to use mBm units instead of dBm for greater accuracy and smaller power levels. Also, already in advance move the tx_power_setting enumeration to nl80211. This change affects the .tx_set_power function prototype. As a result, the corresponding changes are needed to modules using it. These are mac80211, iwmc3200wifi and rndis_wlan. Cc: Samuel Ortiz <samuel.ortiz@intel.com> Cc: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com> Acked-by: Samuel Ortiz <samuel.ortiz@intel.com> Acked-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
a185045c8d
commit
fa61cf70a6
+11
-11
@@ -1329,28 +1329,28 @@ static int ieee80211_set_wiphy_params(struct wiphy *wiphy, u32 changed)
|
||||
}
|
||||
|
||||
static int ieee80211_set_tx_power(struct wiphy *wiphy,
|
||||
enum tx_power_setting type, int dbm)
|
||||
enum nl80211_tx_power_setting type, int mbm)
|
||||
{
|
||||
struct ieee80211_local *local = wiphy_priv(wiphy);
|
||||
struct ieee80211_channel *chan = local->hw.conf.channel;
|
||||
u32 changes = 0;
|
||||
|
||||
switch (type) {
|
||||
case TX_POWER_AUTOMATIC:
|
||||
case NL80211_TX_POWER_AUTOMATIC:
|
||||
local->user_power_level = -1;
|
||||
break;
|
||||
case TX_POWER_LIMITED:
|
||||
if (dbm < 0)
|
||||
return -EINVAL;
|
||||
local->user_power_level = dbm;
|
||||
case NL80211_TX_POWER_LIMITED:
|
||||
if (mbm < 0 || (mbm % 100))
|
||||
return -EOPNOTSUPP;
|
||||
local->user_power_level = MBM_TO_DBM(mbm);
|
||||
break;
|
||||
case TX_POWER_FIXED:
|
||||
if (dbm < 0)
|
||||
return -EINVAL;
|
||||
case NL80211_TX_POWER_FIXED:
|
||||
if (mbm < 0 || (mbm % 100))
|
||||
return -EOPNOTSUPP;
|
||||
/* TODO: move to cfg80211 when it knows the channel */
|
||||
if (dbm > chan->max_power)
|
||||
if (MBM_TO_DBM(mbm) > chan->max_power)
|
||||
return -EINVAL;
|
||||
local->user_power_level = dbm;
|
||||
local->user_power_level = MBM_TO_DBM(mbm);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user