diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/power.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/power.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/power.c b/drivers/net/wireless/iwlwifi/mvm/power.c index 3760a33ca3a4..e7ca965a89b8 100644 --- a/drivers/net/wireless/iwlwifi/mvm/power.c +++ b/drivers/net/wireless/iwlwifi/mvm/power.c | |||
@@ -137,11 +137,12 @@ static void iwl_mvm_power_log(struct iwl_mvm *mvm, | |||
137 | le32_to_cpu(cmd->rx_data_timeout)); | 137 | le32_to_cpu(cmd->rx_data_timeout)); |
138 | IWL_DEBUG_POWER(mvm, "Tx timeout = %u usec\n", | 138 | IWL_DEBUG_POWER(mvm, "Tx timeout = %u usec\n", |
139 | le32_to_cpu(cmd->tx_data_timeout)); | 139 | le32_to_cpu(cmd->tx_data_timeout)); |
140 | IWL_DEBUG_POWER(mvm, "LP RX RSSI threshold = %u\n", | ||
141 | cmd->lprx_rssi_threshold); | ||
142 | if (cmd->flags & cpu_to_le16(POWER_FLAGS_SKIP_OVER_DTIM_MSK)) | 140 | if (cmd->flags & cpu_to_le16(POWER_FLAGS_SKIP_OVER_DTIM_MSK)) |
143 | IWL_DEBUG_POWER(mvm, "DTIM periods to skip = %u\n", | 141 | IWL_DEBUG_POWER(mvm, "DTIM periods to skip = %u\n", |
144 | le32_to_cpu(cmd->skip_dtim_periods)); | 142 | le32_to_cpu(cmd->skip_dtim_periods)); |
143 | if (cmd->flags & cpu_to_le16(POWER_FLAGS_LPRX_ENA_MSK)) | ||
144 | IWL_DEBUG_POWER(mvm, "LP RX RSSI threshold = %u\n", | ||
145 | le32_to_cpu(cmd->lprx_rssi_threshold)); | ||
145 | } | 146 | } |
146 | } | 147 | } |
147 | 148 | ||
@@ -181,6 +182,14 @@ void iwl_mvm_power_build_cmd(struct iwl_mvm *mvm, struct ieee80211_vif *vif, | |||
181 | 182 | ||
182 | cmd->flags |= cpu_to_le16(POWER_FLAGS_POWER_MANAGEMENT_ENA_MSK); | 183 | cmd->flags |= cpu_to_le16(POWER_FLAGS_POWER_MANAGEMENT_ENA_MSK); |
183 | 184 | ||
185 | if (vif->bss_conf.beacon_rate && | ||
186 | (vif->bss_conf.beacon_rate->bitrate == 10 || | ||
187 | vif->bss_conf.beacon_rate->bitrate == 60)) { | ||
188 | cmd->flags |= cpu_to_le16(POWER_FLAGS_LPRX_ENA_MSK); | ||
189 | cmd->lprx_rssi_threshold = | ||
190 | cpu_to_le32(POWER_LPRX_RSSI_THRESHOLD); | ||
191 | } | ||
192 | |||
184 | dtimper = hw->conf.ps_dtim_period ?: 1; | 193 | dtimper = hw->conf.ps_dtim_period ?: 1; |
185 | 194 | ||
186 | /* Check if radar detection is required on current channel */ | 195 | /* Check if radar detection is required on current channel */ |
@@ -236,6 +245,15 @@ void iwl_mvm_power_build_cmd(struct iwl_mvm *mvm, struct ieee80211_vif *vif, | |||
236 | if (mvmvif->dbgfs_pm.mask & MVM_DEBUGFS_PM_SKIP_DTIM_PERIODS) | 245 | if (mvmvif->dbgfs_pm.mask & MVM_DEBUGFS_PM_SKIP_DTIM_PERIODS) |
237 | cmd->skip_dtim_periods = | 246 | cmd->skip_dtim_periods = |
238 | cpu_to_le32(mvmvif->dbgfs_pm.skip_dtim_periods); | 247 | cpu_to_le32(mvmvif->dbgfs_pm.skip_dtim_periods); |
248 | if (mvmvif->dbgfs_pm.mask & MVM_DEBUGFS_PM_LPRX_ENA) { | ||
249 | if (mvmvif->dbgfs_pm.lprx_ena) | ||
250 | cmd->flags |= cpu_to_le16(POWER_FLAGS_LPRX_ENA_MSK); | ||
251 | else | ||
252 | cmd->flags &= cpu_to_le16(~POWER_FLAGS_LPRX_ENA_MSK); | ||
253 | } | ||
254 | if (mvmvif->dbgfs_pm.mask & MVM_DEBUGFS_PM_LPRX_RSSI_THRESHOLD) | ||
255 | cmd->lprx_rssi_threshold = | ||
256 | cpu_to_le32(mvmvif->dbgfs_pm.lprx_rssi_threshold); | ||
239 | #endif /* CONFIG_IWLWIFI_DEBUGFS */ | 257 | #endif /* CONFIG_IWLWIFI_DEBUGFS */ |
240 | } | 258 | } |
241 | 259 | ||