iwlwifi: mvm: fix PS-Poll enablement
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Wed, 26 Oct 2016 11:21:27 +0000 (14:21 +0300)
committerLuca Coelho <luciano.coelho@intel.com>
Fri, 3 Feb 2017 14:26:37 +0000 (16:26 +0200)
We added the uAPSD enabled ACs and that made the
firmware choose to pull frames with uAPSD trigger
frames instead of PS-Poll.
Fix that.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/power.c

index af6d10c23e5aa1d8264d609376373dadeec29693..3a8e9379da2f92c23bb0318bad237ddb8004b87f 100644 (file)
@@ -174,6 +174,14 @@ static void iwl_mvm_power_configure_uapsd(struct iwl_mvm *mvm,
        enum ieee80211_ac_numbers ac;
        bool tid_found = false;
 
+#ifdef CONFIG_IWLWIFI_DEBUGFS
+       /* set advanced pm flag with no uapsd ACs to enable ps-poll */
+       if (mvmvif->dbgfs_pm.use_ps_poll) {
+               cmd->flags |= cpu_to_le16(POWER_FLAGS_ADVANCE_PM_ENA_MSK);
+               return;
+       }
+#endif
+
        for (ac = IEEE80211_AC_VO; ac <= IEEE80211_AC_BK; ac++) {
                if (!mvmvif->queue_params[ac].uapsd)
                        continue;
@@ -204,16 +212,6 @@ static void iwl_mvm_power_configure_uapsd(struct iwl_mvm *mvm,
                }
        }
 
-       if (!(cmd->flags & cpu_to_le16(POWER_FLAGS_ADVANCE_PM_ENA_MSK))) {
-#ifdef CONFIG_IWLWIFI_DEBUGFS
-               /* set advanced pm flag with no uapsd ACs to enable ps-poll */
-               if (mvmvif->dbgfs_pm.use_ps_poll)
-                       cmd->flags |=
-                               cpu_to_le16(POWER_FLAGS_ADVANCE_PM_ENA_MSK);
-#endif
-               return;
-       }
-
        cmd->flags |= cpu_to_le16(POWER_FLAGS_UAPSD_MISBEHAVING_ENA_MSK);
 
        if (cmd->uapsd_ac_flags == (BIT(IEEE80211_AC_VO) |