diff options
author | Matti Gottlieb <matti.gottlieb@intel.com> | 2013-07-09 08:25:46 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-07-31 05:04:59 -0400 |
commit | 88f2fd7300da1b671255ef26469627206fe20a8e (patch) | |
tree | 2055e7df43ee07e0cb13e85e7e83aed19d628ccd /drivers/net/wireless/iwlwifi/mvm/mac80211.c | |
parent | ac1ed4163b5a523728fa0e8c27c1ff4d182f40fd (diff) |
iwlwifi: mvm: Enable user set TX power
Support Tx power limitations. These limitations can come from
mac80211 for various reasons.
Signed-off-by: Matti Gottlieb <matti.gottlieb@intel.com>
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/mac80211.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/mac80211.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c index 30319e069f45..fbb8c2dc66e0 100644 --- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c | |||
@@ -714,6 +714,20 @@ out_release: | |||
714 | mutex_unlock(&mvm->mutex); | 714 | mutex_unlock(&mvm->mutex); |
715 | } | 715 | } |
716 | 716 | ||
717 | static int iwl_mvm_set_tx_power(struct iwl_mvm *mvm, struct ieee80211_vif *vif, | ||
718 | s8 tx_power) | ||
719 | { | ||
720 | /* FW is in charge of regulatory enforcement */ | ||
721 | struct iwl_reduce_tx_power_cmd reduce_txpwr_cmd = { | ||
722 | .mac_context_id = iwl_mvm_vif_from_mac80211(vif)->id, | ||
723 | .pwr_restriction = cpu_to_le16(tx_power), | ||
724 | }; | ||
725 | |||
726 | return iwl_mvm_send_cmd_pdu(mvm, REDUCE_TX_POWER_CMD, CMD_SYNC, | ||
727 | sizeof(reduce_txpwr_cmd), | ||
728 | &reduce_txpwr_cmd); | ||
729 | } | ||
730 | |||
717 | static int iwl_mvm_mac_config(struct ieee80211_hw *hw, u32 changed) | 731 | static int iwl_mvm_mac_config(struct ieee80211_hw *hw, u32 changed) |
718 | { | 732 | { |
719 | return 0; | 733 | return 0; |
@@ -794,6 +808,11 @@ static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm, | |||
794 | if (ret) | 808 | if (ret) |
795 | IWL_ERR(mvm, "failed to update power mode\n"); | 809 | IWL_ERR(mvm, "failed to update power mode\n"); |
796 | } | 810 | } |
811 | if (changes & BSS_CHANGED_TXPOWER) { | ||
812 | IWL_DEBUG_CALIB(mvm, "Changing TX Power to %d\n", | ||
813 | bss_conf->txpower); | ||
814 | iwl_mvm_set_tx_power(mvm, vif, bss_conf->txpower); | ||
815 | } | ||
797 | } | 816 | } |
798 | 817 | ||
799 | static int iwl_mvm_start_ap(struct ieee80211_hw *hw, struct ieee80211_vif *vif) | 818 | static int iwl_mvm_start_ap(struct ieee80211_hw *hw, struct ieee80211_vif *vif) |