diff options
author | Simon Wunderlich <simon.wunderlich@s2003.tu-chemnitz.de> | 2013-07-08 10:55:55 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-07-16 02:58:08 -0400 |
commit | 0430c883470d0c9a23661ea9f02c56b1d91cf93c (patch) | |
tree | 719ac23c82a3ed725ad3e0155cf223720be02e75 /include/net/cfg80211.h | |
parent | 74608aca4d82e2855b1a6a2cd60331d1a98f2d6a (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 'include/net/cfg80211.h')
-rw-r--r-- | include/net/cfg80211.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 88f15631701a..aeaf6dff6e05 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -461,6 +461,33 @@ ieee80211_chandef_rate_flags(struct cfg80211_chan_def *chandef) | |||
461 | } | 461 | } |
462 | 462 | ||
463 | /** | 463 | /** |
464 | * ieee80211_chandef_max_power - maximum transmission power for the chandef | ||
465 | * | ||
466 | * In some regulations, the transmit power may depend on the configured channel | ||
467 | * bandwidth which may be defined as dBm/MHz. This function returns the actual | ||
468 | * max_power for non-standard (20 MHz) channels. | ||
469 | * | ||
470 | * @chandef: channel definition for the channel | ||
471 | * | ||
472 | * Returns: maximum allowed transmission power in dBm for the chandef | ||
473 | */ | ||
474 | static inline int | ||
475 | ieee80211_chandef_max_power(struct cfg80211_chan_def *chandef) | ||
476 | { | ||
477 | switch (chandef->width) { | ||
478 | case NL80211_CHAN_WIDTH_5: | ||
479 | return min(chandef->chan->max_reg_power - 6, | ||
480 | chandef->chan->max_power); | ||
481 | case NL80211_CHAN_WIDTH_10: | ||
482 | return min(chandef->chan->max_reg_power - 3, | ||
483 | chandef->chan->max_power); | ||
484 | default: | ||
485 | break; | ||
486 | } | ||
487 | return chandef->chan->max_power; | ||
488 | } | ||
489 | |||
490 | /** | ||
464 | * enum survey_info_flags - survey information flags | 491 | * enum survey_info_flags - survey information flags |
465 | * | 492 | * |
466 | * @SURVEY_INFO_NOISE_DBM: noise (in dBm) was filled in | 493 | * @SURVEY_INFO_NOISE_DBM: noise (in dBm) was filled in |