diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-drv.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/mac80211.c | 19 |
2 files changed, 16 insertions, 5 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-drv.c b/drivers/net/wireless/iwlwifi/iwl-drv.c index 0d3472679e4d..e3af724e0e0a 100644 --- a/drivers/net/wireless/iwlwifi/iwl-drv.c +++ b/drivers/net/wireless/iwlwifi/iwl-drv.c | |||
@@ -1490,7 +1490,7 @@ module_param_named(d0i3_disable, iwlwifi_mod_params.d0i3_disable, | |||
1490 | MODULE_PARM_DESC(d0i3_disable, "disable d0i3 functionality (default: Y)"); | 1490 | MODULE_PARM_DESC(d0i3_disable, "disable d0i3 functionality (default: Y)"); |
1491 | 1491 | ||
1492 | module_param_named(uapsd_disable, iwlwifi_mod_params.uapsd_disable, | 1492 | module_param_named(uapsd_disable, iwlwifi_mod_params.uapsd_disable, |
1493 | bool, S_IRUGO); | 1493 | bool, S_IRUGO | S_IWUSR); |
1494 | #ifdef CONFIG_IWLWIFI_UAPSD | 1494 | #ifdef CONFIG_IWLWIFI_UAPSD |
1495 | MODULE_PARM_DESC(uapsd_disable, "disable U-APSD functionality (default: N)"); | 1495 | MODULE_PARM_DESC(uapsd_disable, "disable U-APSD functionality (default: N)"); |
1496 | #else | 1496 | #else |
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c index 076a781ceeb0..d13903eff2ec 100644 --- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c | |||
@@ -1354,10 +1354,6 @@ static int iwl_mvm_mac_add_interface(struct ieee80211_hw *hw, | |||
1354 | mvm->bf_allowed_vif = mvmvif; | 1354 | mvm->bf_allowed_vif = mvmvif; |
1355 | vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER | | 1355 | vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER | |
1356 | IEEE80211_VIF_SUPPORTS_CQM_RSSI; | 1356 | IEEE80211_VIF_SUPPORTS_CQM_RSSI; |
1357 | if (mvm->fw->ucode_capa.flags & | ||
1358 | IWL_UCODE_TLV_FLAGS_UAPSD_SUPPORT && | ||
1359 | !iwlwifi_mod_params.uapsd_disable) | ||
1360 | vif->driver_flags |= IEEE80211_VIF_SUPPORTS_UAPSD; | ||
1361 | } | 1357 | } |
1362 | 1358 | ||
1363 | /* | 1359 | /* |
@@ -2305,6 +2301,20 @@ static void iwl_mvm_sta_pre_rcu_remove(struct ieee80211_hw *hw, | |||
2305 | mutex_unlock(&mvm->mutex); | 2301 | mutex_unlock(&mvm->mutex); |
2306 | } | 2302 | } |
2307 | 2303 | ||
2304 | static void iwl_mvm_check_uapsd(struct iwl_mvm *mvm, struct ieee80211_vif *vif, | ||
2305 | const u8 *bssid) | ||
2306 | { | ||
2307 | if (!(mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_UAPSD_SUPPORT)) | ||
2308 | return; | ||
2309 | |||
2310 | if (iwlwifi_mod_params.uapsd_disable) { | ||
2311 | vif->driver_flags &= ~IEEE80211_VIF_SUPPORTS_UAPSD; | ||
2312 | return; | ||
2313 | } | ||
2314 | |||
2315 | vif->driver_flags |= IEEE80211_VIF_SUPPORTS_UAPSD; | ||
2316 | } | ||
2317 | |||
2308 | static int iwl_mvm_mac_sta_state(struct ieee80211_hw *hw, | 2318 | static int iwl_mvm_mac_sta_state(struct ieee80211_hw *hw, |
2309 | struct ieee80211_vif *vif, | 2319 | struct ieee80211_vif *vif, |
2310 | struct ieee80211_sta *sta, | 2320 | struct ieee80211_sta *sta, |
@@ -2364,6 +2374,7 @@ static int iwl_mvm_mac_sta_state(struct ieee80211_hw *hw, | |||
2364 | * Reset EBS status here assuming environment has been changed. | 2374 | * Reset EBS status here assuming environment has been changed. |
2365 | */ | 2375 | */ |
2366 | mvm->last_ebs_successful = true; | 2376 | mvm->last_ebs_successful = true; |
2377 | iwl_mvm_check_uapsd(mvm, vif, sta->addr); | ||
2367 | ret = 0; | 2378 | ret = 0; |
2368 | } else if (old_state == IEEE80211_STA_AUTH && | 2379 | } else if (old_state == IEEE80211_STA_AUTH && |
2369 | new_state == IEEE80211_STA_ASSOC) { | 2380 | new_state == IEEE80211_STA_ASSOC) { |