aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/mvm/mac80211.c
diff options
context:
space:
mode:
authorMatti Gottlieb <matti.gottlieb@intel.com>2013-07-09 08:25:46 -0400
committerJohannes Berg <johannes.berg@intel.com>2013-07-31 05:04:59 -0400
commit88f2fd7300da1b671255ef26469627206fe20a8e (patch)
tree2055e7df43ee07e0cb13e85e7e83aed19d628ccd /drivers/net/wireless/iwlwifi/mvm/mac80211.c
parentac1ed4163b5a523728fa0e8c27c1ff4d182f40fd (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.c19
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
717static 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
717static int iwl_mvm_mac_config(struct ieee80211_hw *hw, u32 changed) 731static 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
799static int iwl_mvm_start_ap(struct ieee80211_hw *hw, struct ieee80211_vif *vif) 818static int iwl_mvm_start_ap(struct ieee80211_hw *hw, struct ieee80211_vif *vif)