diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2016-03-15 05:04:29 -0400 |
---|---|---|
committer | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2016-03-30 09:21:23 -0400 |
commit | 11dee0b4946bc8b0b4adc804f2110361fed81f08 (patch) | |
tree | 35602c229a3920c000a8b8603eda97116b195e98 | |
parent | a2a57a3548b94222e36a01db893b8f4788501150 (diff) |
iwlwifi: make uapsd_disable module param a bitmap
This allows to disable uapsd for BSS only, or P2P client
separately. Remove the now unneeded
IWL_MVM_P2P_UAPSD_STANDALONE constant.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 10 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/iwl-modparams.h | 10 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/constants.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | 3 |
5 files changed, 18 insertions, 9 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c index f899666acb41..2cd9c3139a1c 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c +++ b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c | |||
@@ -1561,7 +1561,7 @@ struct iwl_mod_params iwlwifi_mod_params = { | |||
1561 | .d0i3_disable = true, | 1561 | .d0i3_disable = true, |
1562 | .d0i3_entry_delay = 1000, | 1562 | .d0i3_entry_delay = 1000, |
1563 | #ifndef CONFIG_IWLWIFI_UAPSD | 1563 | #ifndef CONFIG_IWLWIFI_UAPSD |
1564 | .uapsd_disable = true, | 1564 | .uapsd_disable = IWL_DISABLE_UAPSD_BSS | IWL_DISABLE_UAPSD_P2P_CLIENT, |
1565 | #endif /* CONFIG_IWLWIFI_UAPSD */ | 1565 | #endif /* CONFIG_IWLWIFI_UAPSD */ |
1566 | /* the rest are 0 by default */ | 1566 | /* the rest are 0 by default */ |
1567 | }; | 1567 | }; |
@@ -1681,11 +1681,13 @@ module_param_named(lar_disable, iwlwifi_mod_params.lar_disable, | |||
1681 | MODULE_PARM_DESC(lar_disable, "disable LAR functionality (default: N)"); | 1681 | MODULE_PARM_DESC(lar_disable, "disable LAR functionality (default: N)"); |
1682 | 1682 | ||
1683 | module_param_named(uapsd_disable, iwlwifi_mod_params.uapsd_disable, | 1683 | module_param_named(uapsd_disable, iwlwifi_mod_params.uapsd_disable, |
1684 | bool, S_IRUGO | S_IWUSR); | 1684 | uint, S_IRUGO | S_IWUSR); |
1685 | #ifdef CONFIG_IWLWIFI_UAPSD | 1685 | #ifdef CONFIG_IWLWIFI_UAPSD |
1686 | MODULE_PARM_DESC(uapsd_disable, "disable U-APSD functionality (default: N)"); | 1686 | MODULE_PARM_DESC(uapsd_disable, |
1687 | "disable U-APSD functionality bitmap 1: BSS 2: P2P Client (default: 0)"); | ||
1687 | #else | 1688 | #else |
1688 | MODULE_PARM_DESC(uapsd_disable, "disable U-APSD functionality (default: Y)"); | 1689 | MODULE_PARM_DESC(uapsd_disable, |
1690 | "disable U-APSD functionality bitmap 1: BSS 2: P2P Client (default: 3)"); | ||
1689 | #endif | 1691 | #endif |
1690 | 1692 | ||
1691 | /* | 1693 | /* |
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-modparams.h b/drivers/net/wireless/intel/iwlwifi/iwl-modparams.h index d1a5dd1602f5..6c5c2f9f73a2 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-modparams.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-modparams.h | |||
@@ -92,6 +92,11 @@ enum iwl_amsdu_size { | |||
92 | IWL_AMSDU_12K = 2, | 92 | IWL_AMSDU_12K = 2, |
93 | }; | 93 | }; |
94 | 94 | ||
95 | enum iwl_uapsd_disable { | ||
96 | IWL_DISABLE_UAPSD_BSS = BIT(0), | ||
97 | IWL_DISABLE_UAPSD_P2P_CLIENT = BIT(1), | ||
98 | }; | ||
99 | |||
95 | /** | 100 | /** |
96 | * struct iwl_mod_params | 101 | * struct iwl_mod_params |
97 | * | 102 | * |
@@ -109,7 +114,8 @@ enum iwl_amsdu_size { | |||
109 | * @debug_level: levels are IWL_DL_* | 114 | * @debug_level: levels are IWL_DL_* |
110 | * @ant_coupling: antenna coupling in dB, default = 0 | 115 | * @ant_coupling: antenna coupling in dB, default = 0 |
111 | * @nvm_file: specifies a external NVM file | 116 | * @nvm_file: specifies a external NVM file |
112 | * @uapsd_disable: disable U-APSD, default = 1 | 117 | * @uapsd_disable: disable U-APSD, see %enum iwl_uapsd_disable, default = |
118 | * IWL_DISABLE_UAPSD_BSS | IWL_DISABLE_UAPSD_P2P_CLIENT | ||
113 | * @d0i3_disable: disable d0i3, default = 1, | 119 | * @d0i3_disable: disable d0i3, default = 1, |
114 | * @d0i3_entry_delay: time to wait after no refs are taken before | 120 | * @d0i3_entry_delay: time to wait after no refs are taken before |
115 | * entering D0i3 (in msecs) | 121 | * entering D0i3 (in msecs) |
@@ -131,7 +137,7 @@ struct iwl_mod_params { | |||
131 | #endif | 137 | #endif |
132 | int ant_coupling; | 138 | int ant_coupling; |
133 | char *nvm_file; | 139 | char *nvm_file; |
134 | bool uapsd_disable; | 140 | u32 uapsd_disable; |
135 | bool d0i3_disable; | 141 | bool d0i3_disable; |
136 | unsigned int d0i3_entry_delay; | 142 | unsigned int d0i3_entry_delay; |
137 | bool lar_disable; | 143 | bool lar_disable; |
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/constants.h b/drivers/net/wireless/intel/iwlwifi/mvm/constants.h index 4b560e4417ee..b96b1c6a97fa 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/constants.h +++ b/drivers/net/wireless/intel/iwlwifi/mvm/constants.h | |||
@@ -75,7 +75,6 @@ | |||
75 | #define IWL_MVM_WOWLAN_PS_RX_DATA_TIMEOUT (10 * USEC_PER_MSEC) | 75 | #define IWL_MVM_WOWLAN_PS_RX_DATA_TIMEOUT (10 * USEC_PER_MSEC) |
76 | #define IWL_MVM_SHORT_PS_TX_DATA_TIMEOUT (2 * 1024) /* defined in TU */ | 76 | #define IWL_MVM_SHORT_PS_TX_DATA_TIMEOUT (2 * 1024) /* defined in TU */ |
77 | #define IWL_MVM_SHORT_PS_RX_DATA_TIMEOUT (40 * 1024) /* defined in TU */ | 77 | #define IWL_MVM_SHORT_PS_RX_DATA_TIMEOUT (40 * 1024) /* defined in TU */ |
78 | #define IWL_MVM_P2P_UAPSD_STANDALONE 0 | ||
79 | #define IWL_MVM_P2P_LOWLATENCY_PS_ENABLE 0 | 78 | #define IWL_MVM_P2P_LOWLATENCY_PS_ENABLE 0 |
80 | #define IWL_MVM_UAPSD_RX_DATA_TIMEOUT (50 * USEC_PER_MSEC) | 79 | #define IWL_MVM_UAPSD_RX_DATA_TIMEOUT (50 * USEC_PER_MSEC) |
81 | #define IWL_MVM_UAPSD_TX_DATA_TIMEOUT (50 * USEC_PER_MSEC) | 80 | #define IWL_MVM_UAPSD_TX_DATA_TIMEOUT (50 * USEC_PER_MSEC) |
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c index cff9c16e4920..1a3481ba1446 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | |||
@@ -2345,7 +2345,8 @@ static void iwl_mvm_check_uapsd(struct iwl_mvm *mvm, struct ieee80211_vif *vif, | |||
2345 | return; | 2345 | return; |
2346 | } | 2346 | } |
2347 | 2347 | ||
2348 | if (iwlwifi_mod_params.uapsd_disable) { | 2348 | if (!vif->p2p && |
2349 | (iwlwifi_mod_params.uapsd_disable & IWL_DISABLE_UAPSD_BSS)) { | ||
2349 | vif->driver_flags &= ~IEEE80211_VIF_SUPPORTS_UAPSD; | 2350 | vif->driver_flags &= ~IEEE80211_VIF_SUPPORTS_UAPSD; |
2350 | return; | 2351 | return; |
2351 | } | 2352 | } |
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h index 2e0a8824aaba..02ef1d91478c 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | |||
@@ -1072,7 +1072,8 @@ bool iwl_mvm_is_p2p_standalone_uapsd_supported(struct iwl_mvm *mvm) | |||
1072 | { | 1072 | { |
1073 | return fw_has_capa(&mvm->fw->ucode_capa, | 1073 | return fw_has_capa(&mvm->fw->ucode_capa, |
1074 | IWL_UCODE_TLV_CAPA_P2P_STANDALONE_UAPSD) && | 1074 | IWL_UCODE_TLV_CAPA_P2P_STANDALONE_UAPSD) && |
1075 | IWL_MVM_P2P_UAPSD_STANDALONE; | 1075 | !(iwlwifi_mod_params.uapsd_disable & |
1076 | IWL_DISABLE_UAPSD_P2P_CLIENT); | ||
1076 | } | 1077 | } |
1077 | 1078 | ||
1078 | static inline bool iwl_mvm_has_new_rx_api(struct iwl_mvm *mvm) | 1079 | static inline bool iwl_mvm_has_new_rx_api(struct iwl_mvm *mvm) |