iwlwifi: make U-APSD default configurable at compile time
authorJohannes Berg <johannes.berg@intel.com>
Mon, 1 Sep 2014 09:28:11 +0000 (11:28 +0200)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Wed, 3 Sep 2014 19:33:16 +0000 (22:33 +0300)
With a significant number of deployed APs, enabling uAPSD leads to the
AP never using aggregation sessions (likely due to the complexities
involved in handling uAPSD in those.) This obviously results in a large
drop in throughput with such APs.

On the other hand, uAPSD can result in some power consumption benefits,
but for now just disable it to get performance with affected APs back
up.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
drivers/net/wireless/iwlwifi/Kconfig
drivers/net/wireless/iwlwifi/iwl-drv.c

index 6451d2b6abcff3c33f486c9d7eb90390647a1266..760e96f63bb02ed2bd19c1be6582a27a345207c0 100644 (file)
@@ -87,6 +87,16 @@ config IWLWIFI_BCAST_FILTERING
          If unsure, don't enable this option, as some programs might
          expect incoming broadcasts for their normal operations.
 
+config IWLWIFI_UAPSD
+       bool "enable U-APSD by default"
+       depends on IWLMVM
+       help
+         Say Y here to enable U-APSD by default. This may cause
+         interoperability problems with some APs, manifesting in lower than
+         expected throughput due to those APs not enabling aggregation
+
+         If unsure, say N.
+
 menu "Debugging Options"
 
 config IWLWIFI_DEBUG
index 77e3178040b2a80716ff97cb3c4771b356682897..283aee0e28a4ddc61f7a877c1fa50823322ffb25 100644 (file)
@@ -1254,7 +1254,9 @@ struct iwl_mod_params iwlwifi_mod_params = {
        .bt_coex_active = true,
        .power_level = IWL_POWER_INDEX_1,
        .wd_disable = true,
-       .uapsd_disable = false,
+#ifndef CONFIG_IWLWIFI_UAPSD
+       .uapsd_disable = true,
+#endif /* CONFIG_IWLWIFI_UAPSD */
        /* the rest are 0 by default */
 };
 IWL_EXPORT_SYMBOL(iwlwifi_mod_params);
@@ -1370,7 +1372,11 @@ MODULE_PARM_DESC(nvm_file, "NVM file name");
 
 module_param_named(uapsd_disable, iwlwifi_mod_params.uapsd_disable,
                   bool, S_IRUGO);
+#ifdef CONFIG_IWLWIFI_UAPSD
 MODULE_PARM_DESC(uapsd_disable, "disable U-APSD functionality (default: N)");
+#else
+MODULE_PARM_DESC(uapsd_disable, "disable U-APSD functionality (default: Y)");
+#endif
 
 /*
  * set bt_coex_active to true, uCode will do kill/defer