aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2016-04-13 08:24:22 -0400
committerLuca Coelho <luciano.coelho@intel.com>2016-10-19 05:46:32 -0400
commit65e254821cee1a63f3f6d23270e90b33432b2bef (patch)
tree8d68b8a394094354bae156ddda2a75aa31d54871 /drivers/net/wireless/intel/iwlwifi/mvm/ops.c
parentad5de73734031c07eb8c7cdb7c7d63d3630bb202 (diff)
iwlwifi: mvm: use firmware station PM notification for AP_LINK_PS
When using RSS on 9000 series devices, we can't rely on processing the received frames for station powersave handling, since they could be processed on different CPUs and out of order. In order to still manage the powersave of stations, the firmware sends a notification on sleep->wake, wake->sleep and - for U-APSD - frames received with PM while already sleeping (with the TID.) With this, the driver can set AP_LINK_PS, which is required for real parallel RX. In addition, this requires checking for PS-Poll frames and calling ieee80211_sta_pspoll() appropriately. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/mvm/ops.c')
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/ops.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
index 05fe6dd1a2c8..e86986f5c40d 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
@@ -306,6 +306,8 @@ static const struct iwl_rx_handlers iwl_mvm_rx_handlers[] = {
306 iwl_mvm_rx_stored_beacon_notif, RX_HANDLER_SYNC), 306 iwl_mvm_rx_stored_beacon_notif, RX_HANDLER_SYNC),
307 RX_HANDLER_GRP(DATA_PATH_GROUP, MU_GROUP_MGMT_NOTIF, 307 RX_HANDLER_GRP(DATA_PATH_GROUP, MU_GROUP_MGMT_NOTIF,
308 iwl_mvm_mu_mimo_grp_notif, RX_HANDLER_SYNC), 308 iwl_mvm_mu_mimo_grp_notif, RX_HANDLER_SYNC),
309 RX_HANDLER_GRP(DATA_PATH_GROUP, STA_PM_NOTIF,
310 iwl_mvm_sta_pm_notif, RX_HANDLER_SYNC),
309}; 311};
310#undef RX_HANDLER 312#undef RX_HANDLER
311#undef RX_HANDLER_GRP 313#undef RX_HANDLER_GRP
@@ -452,6 +454,7 @@ static const struct iwl_hcmd_names iwl_mvm_phy_names[] = {
452static const struct iwl_hcmd_names iwl_mvm_data_path_names[] = { 454static const struct iwl_hcmd_names iwl_mvm_data_path_names[] = {
453 HCMD_NAME(UPDATE_MU_GROUPS_CMD), 455 HCMD_NAME(UPDATE_MU_GROUPS_CMD),
454 HCMD_NAME(TRIGGER_RX_QUEUES_NOTIF_CMD), 456 HCMD_NAME(TRIGGER_RX_QUEUES_NOTIF_CMD),
457 HCMD_NAME(STA_PM_NOTIF),
455 HCMD_NAME(MU_GROUP_MGMT_NOTIF), 458 HCMD_NAME(MU_GROUP_MGMT_NOTIF),
456 HCMD_NAME(RX_QUEUES_NOTIFICATION), 459 HCMD_NAME(RX_QUEUES_NOTIFICATION),
457}; 460};