aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorSimon Wunderlich <simon.wunderlich@s2003.tu-chemnitz.de>2013-07-08 10:55:55 -0400
committerJohannes Berg <johannes.berg@intel.com>2013-07-16 02:58:08 -0400
commit0430c883470d0c9a23661ea9f02c56b1d91cf93c (patch)
tree719ac23c82a3ed725ad3e0155cf223720be02e75 /net
parent74608aca4d82e2855b1a6a2cd60331d1a98f2d6a (diff)
cfg80211/mac80211: use reduced txpower for 5 and 10 MHz
Some regulations (like germany, but also FCC) express their transmission power limit in dBm/MHz or mW/MHz. To cope with that and be on the safe side, reduce the maximum power to half (10 MHz) or quarter (5 MHz) when operating on these reduced bandwidth channels. Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> Signed-off-by: Mathias Kretschmer <mathias.kretschmer@fokus.fraunhofer.de> Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Diffstat (limited to 'net')
-rw-r--r--net/mac80211/iface.c2
-rw-r--r--net/mac80211/main.c2
-rw-r--r--net/mac80211/mlme.c3
3 files changed, 4 insertions, 3 deletions
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index cc117591f678..4c41c11958c8 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -54,7 +54,7 @@ bool __ieee80211_recalc_txpower(struct ieee80211_sub_if_data *sdata)
54 return false; 54 return false;
55 } 55 }
56 56
57 power = chanctx_conf->def.chan->max_power; 57 power = ieee80211_chandef_max_power(&chanctx_conf->def);
58 rcu_read_unlock(); 58 rcu_read_unlock();
59 59
60 if (sdata->user_power_level != IEEE80211_UNSET_POWER_LEVEL) 60 if (sdata->user_power_level != IEEE80211_UNSET_POWER_LEVEL)
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index 091088ac7890..6da98c77496b 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -151,7 +151,7 @@ static u32 ieee80211_hw_conf_chan(struct ieee80211_local *local)
151 changed |= IEEE80211_CONF_CHANGE_SMPS; 151 changed |= IEEE80211_CONF_CHANGE_SMPS;
152 } 152 }
153 153
154 power = chandef.chan->max_power; 154 power = ieee80211_chandef_max_power(&chandef);
155 155
156 rcu_read_lock(); 156 rcu_read_lock();
157 list_for_each_entry_rcu(sdata, &local->interfaces, list) { 157 list_for_each_entry_rcu(sdata, &local->interfaces, list) {
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index f7552c2b74eb..211246b46819 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -747,7 +747,8 @@ static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata)
747 *pos++ = WLAN_EID_PWR_CAPABILITY; 747 *pos++ = WLAN_EID_PWR_CAPABILITY;
748 *pos++ = 2; 748 *pos++ = 2;
749 *pos++ = 0; /* min tx power */ 749 *pos++ = 0; /* min tx power */
750 *pos++ = chan->max_power; /* max tx power */ 750 /* max tx power */
751 *pos++ = ieee80211_chandef_max_power(&chanctx_conf->def);
751 752
752 /* 2. supported channels */ 753 /* 2. supported channels */
753 /* TODO: get this in reg domain format */ 754 /* TODO: get this in reg domain format */