|
@@ -511,6 +511,27 @@ static int iwl_mvm_mac_add_interface(struct ieee80211_hw *hw,
|
|
|
if (ret)
|
|
|
goto out_unlock;
|
|
|
|
|
|
+ /*
|
|
|
+ * TODO: remove this temporary code.
|
|
|
+ * Currently MVM FW supports power management only on single MAC.
|
|
|
+ * If new interface added, disable PM on existing interface.
|
|
|
+ * P2P device is a special case, since it is handled by FW similary to
|
|
|
+ * scan. If P2P deviced is added, PM remains enabled on existing
|
|
|
+ * interface.
|
|
|
+ * Note: the method below does not count the new interface being added
|
|
|
+ * at this moment.
|
|
|
+ */
|
|
|
+ if (vif->type != NL80211_IFTYPE_P2P_DEVICE)
|
|
|
+ mvm->vif_count++;
|
|
|
+ if (mvm->vif_count > 1) {
|
|
|
+ IWL_DEBUG_MAC80211(mvm,
|
|
|
+ "Disable power on existing interfaces\n");
|
|
|
+ ieee80211_iterate_active_interfaces_atomic(
|
|
|
+ mvm->hw,
|
|
|
+ IEEE80211_IFACE_ITER_NORMAL,
|
|
|
+ iwl_mvm_pm_disable_iterator, mvm);
|
|
|
+ }
|
|
|
+
|
|
|
/*
|
|
|
* The AP binding flow can be done only after the beacon
|
|
|
* template is configured (which happens only in the mac80211
|
|
@@ -534,27 +555,6 @@ static int iwl_mvm_mac_add_interface(struct ieee80211_hw *hw,
|
|
|
goto out_unlock;
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
- * TODO: remove this temporary code.
|
|
|
- * Currently MVM FW supports power management only on single MAC.
|
|
|
- * If new interface added, disable PM on existing interface.
|
|
|
- * P2P device is a special case, since it is handled by FW similary to
|
|
|
- * scan. If P2P deviced is added, PM remains enabled on existing
|
|
|
- * interface.
|
|
|
- * Note: the method below does not count the new interface being added
|
|
|
- * at this moment.
|
|
|
- */
|
|
|
- if (vif->type != NL80211_IFTYPE_P2P_DEVICE)
|
|
|
- mvm->vif_count++;
|
|
|
- if (mvm->vif_count > 1) {
|
|
|
- IWL_DEBUG_MAC80211(mvm,
|
|
|
- "Disable power on existing interfaces\n");
|
|
|
- ieee80211_iterate_active_interfaces_atomic(
|
|
|
- mvm->hw,
|
|
|
- IEEE80211_IFACE_ITER_NORMAL,
|
|
|
- iwl_mvm_pm_disable_iterator, mvm);
|
|
|
- }
|
|
|
-
|
|
|
ret = iwl_mvm_mac_ctxt_add(mvm, vif);
|
|
|
if (ret)
|
|
|
goto out_release;
|