iwlwifi: mvm: remove vif argument from power_update_mac
authorArik Nemtsov <arik@wizery.com>
Thu, 15 May 2014 14:31:51 +0000 (17:31 +0300)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Thu, 22 May 2014 07:11:17 +0000 (10:11 +0300)
The power update function looks at all current vifs to determine the power
policy. It doesn't use the current vif. Instead the value was overwritten
and used internally.

Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
drivers/net/wireless/iwlwifi/mvm/d3.c
drivers/net/wireless/iwlwifi/mvm/debugfs-vif.c
drivers/net/wireless/iwlwifi/mvm/mac80211.c
drivers/net/wireless/iwlwifi/mvm/mvm.h
drivers/net/wireless/iwlwifi/mvm/power.c
drivers/net/wireless/iwlwifi/mvm/utils.c

index 48c192d85c4c6a047d35392f5d637655b47664f8..645b3cfc29a5e5c0bcb10f6c9eaded6a1827e5ed 100644 (file)
@@ -1028,7 +1028,7 @@ static int __iwl_mvm_suspend(struct ieee80211_hw *hw,
        if (ret)
                goto out;
 
-       ret = iwl_mvm_power_update_mac(mvm, vif);
+       ret = iwl_mvm_power_update_mac(mvm);
        if (ret)
                goto out;
 
index 44b19e6dd2528450fd4ba8955a9b1cfe5782d59a..2e90ff795c13212d6d8ca7be35df935a907d6b3c 100644 (file)
@@ -175,7 +175,7 @@ static ssize_t iwl_dbgfs_pm_params_write(struct ieee80211_vif *vif, char *buf,
 
        mutex_lock(&mvm->mutex);
        iwl_dbgfs_update_pm(mvm, vif, param, val);
-       ret = iwl_mvm_power_update_mac(mvm, vif);
+       ret = iwl_mvm_power_update_mac(mvm);
        mutex_unlock(&mvm->mutex);
 
        return ret ?: count;
index 1146cfbc72999ee09123b1782f8d121480b227bf..7215f59801863d3b7d72398de8c96c7b73c3902b 100644 (file)
@@ -832,7 +832,7 @@ static int iwl_mvm_mac_add_interface(struct ieee80211_hw *hw,
        if (ret)
                goto out_release;
 
-       ret = iwl_mvm_power_update_mac(mvm, vif);
+       ret = iwl_mvm_power_update_mac(mvm);
        if (ret)
                goto out_release;
 
@@ -983,7 +983,7 @@ static void iwl_mvm_mac_remove_interface(struct ieee80211_hw *hw,
        if (mvm->vif_count && vif->type != NL80211_IFTYPE_P2P_DEVICE)
                mvm->vif_count--;
 
-       iwl_mvm_power_update_mac(mvm, vif);
+       iwl_mvm_power_update_mac(mvm);
        iwl_mvm_mac_ctxt_remove(mvm, vif);
 
 out_release:
@@ -1354,7 +1354,7 @@ static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm,
                WARN_ON(iwl_mvm_enable_beacon_filter(mvm, vif, 0));
        } else if (changes & (BSS_CHANGED_PS | BSS_CHANGED_P2P_PS |
                              BSS_CHANGED_QOS)) {
-               ret = iwl_mvm_power_update_mac(mvm, vif);
+               ret = iwl_mvm_power_update_mac(mvm);
                if (ret)
                        IWL_ERR(mvm, "failed to update power mode\n");
        }
@@ -1423,7 +1423,7 @@ static int iwl_mvm_start_ap_ibss(struct ieee80211_hw *hw,
        mvmvif->ap_ibss_active = true;
 
        /* power updated needs to be done before quotas */
-       iwl_mvm_power_update_mac(mvm, vif);
+       iwl_mvm_power_update_mac(mvm);
 
        ret = iwl_mvm_update_quotas(mvm, vif);
        if (ret)
@@ -1441,7 +1441,7 @@ static int iwl_mvm_start_ap_ibss(struct ieee80211_hw *hw,
        return 0;
 
 out_quota_failed:
-       iwl_mvm_power_update_mac(mvm, vif);
+       iwl_mvm_power_update_mac(mvm);
        mvmvif->ap_ibss_active = false;
        iwl_mvm_send_rm_bcast_sta(mvm, &mvmvif->bcast_sta);
 out_unbind:
@@ -1477,7 +1477,7 @@ static void iwl_mvm_stop_ap_ibss(struct ieee80211_hw *hw,
        iwl_mvm_send_rm_bcast_sta(mvm, &mvmvif->bcast_sta);
        iwl_mvm_binding_remove_vif(mvm, vif);
 
-       iwl_mvm_power_update_mac(mvm, vif);
+       iwl_mvm_power_update_mac(mvm);
 
        iwl_mvm_mac_ctxt_remove(mvm, vif);
 
@@ -2239,7 +2239,7 @@ static int iwl_mvm_assign_vif_chanctx(struct ieee80211_hw *hw,
         * Power state must be updated before quotas,
         * otherwise fw will complain.
         */
-       iwl_mvm_power_update_mac(mvm, vif);
+       iwl_mvm_power_update_mac(mvm);
 
        /* Setting the quota at this stage is only required for monitor
         * interfaces. For the other types, the bss_info changed flow
@@ -2262,7 +2262,7 @@ static int iwl_mvm_assign_vif_chanctx(struct ieee80211_hw *hw,
 
  out_remove_binding:
        iwl_mvm_binding_remove_vif(mvm, vif);
-       iwl_mvm_power_update_mac(mvm, vif);
+       iwl_mvm_power_update_mac(mvm);
  out_unlock:
        mutex_unlock(&mvm->mutex);
        if (ret)
@@ -2304,7 +2304,7 @@ static void iwl_mvm_unassign_vif_chanctx(struct ieee80211_hw *hw,
 
 out_unlock:
        mvmvif->phy_ctxt = NULL;
-       iwl_mvm_power_update_mac(mvm, vif);
+       iwl_mvm_power_update_mac(mvm);
        mutex_unlock(&mvm->mutex);
 }
 
index 4b7461e4ac48a6f7603b3e9e4ec37f0b8ef3659d..fcc6c29482d0ef516bba48459b09230b9ead4007 100644 (file)
@@ -894,7 +894,7 @@ int rs_pretty_print_rate(char *buf, const u32 rate);
 
 /* power management */
 int iwl_mvm_power_update_device(struct iwl_mvm *mvm);
-int iwl_mvm_power_update_mac(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
+int iwl_mvm_power_update_mac(struct iwl_mvm *mvm);
 int iwl_mvm_power_mac_dbgfs_read(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
                                 char *buf, int bufsz);
 
index b0b8f5c2fe8baa560775394eddcaee070bc4a046..c182a8baf685857d3c2857443d53ae978e8646a8 100644 (file)
@@ -828,7 +828,7 @@ int iwl_mvm_disable_beacon_filter(struct iwl_mvm *mvm,
        return ret;
 }
 
-int iwl_mvm_power_update_mac(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
+int iwl_mvm_power_update_mac(struct iwl_mvm *mvm)
 {
        struct iwl_mvm_vif *mvmvif;
        struct iwl_power_vifs vifs = {};
@@ -868,11 +868,11 @@ int iwl_mvm_power_update_mac(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
        if (!vifs.bf_vif)
                return 0;
 
-       vif = vifs.bf_vif;
-       mvmvif = iwl_mvm_vif_from_mac80211(vif);
+       mvmvif = iwl_mvm_vif_from_mac80211(vifs.bf_vif);
 
        ba_enable = !(!mvmvif->pm_enabled || mvm->ps_disabled ||
-                     !vif->bss_conf.ps || iwl_mvm_vif_low_latency(mvmvif));
+                     !vifs.bf_vif->bss_conf.ps ||
+                     iwl_mvm_vif_low_latency(mvmvif));
 
        return iwl_mvm_update_beacon_abort(mvm, vifs.bf_vif, ba_enable);
 }
index 01ad73026bfa1f5321f67ebf59c4cf8cd6047039..aa9fc77e8413b607861e370169e0b55ba4b697d1 100644 (file)
@@ -702,7 +702,7 @@ int iwl_mvm_update_low_latency(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
 
        iwl_mvm_bt_coex_vif_change(mvm);
 
-       return iwl_mvm_power_update_mac(mvm, vif);
+       return iwl_mvm_power_update_mac(mvm);
 }
 
 static void iwl_mvm_ll_iter(void *_data, u8 *mac, struct ieee80211_vif *vif)