Commit 5b1dbfc3 authored by Alexander Bondar's avatar Alexander Bondar Committed by Johannes Berg

iwlwifi: mvm: Add number of DTIMs to skip

New host-device API provides the ability to set the number
of DTIMs to skip. Add this parameter to the command and set
it (to a sane default value.)
Signed-off-by: default avatarAlexander Bondar <alexander.bondar@intel.com>
Reviewed-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 4270b871
...@@ -101,19 +101,19 @@ enum iwl_power_flags { ...@@ -101,19 +101,19 @@ enum iwl_power_flags {
* @tx_data_timeout: Minimum time (usec) from last Tx packet for AM to * @tx_data_timeout: Minimum time (usec) from last Tx packet for AM to
* PSM transition - legacy PM * PSM transition - legacy PM
* @sleep_interval: not in use * @sleep_interval: not in use
* @keep_alive_beacons: not in use * @num_skip_dtim: Number of DTIMs to skip if Skip over DTIM flag is set
* @lprx_rssi_threshold: Signal strength up to which LP RX can be enabled. * @lprx_rssi_threshold: Signal strength up to which LP RX can be enabled.
* Default: 80dbm * Default: 80dbm
*/ */
struct iwl_powertable_cmd { struct iwl_powertable_cmd {
/* PM_POWER_TABLE_CMD_API_S_VER_5 */ /* PM_POWER_TABLE_CMD_API_S_VER_6 */
__le16 flags; __le16 flags;
u8 keep_alive_seconds; u8 keep_alive_seconds;
u8 debug_flags; u8 debug_flags;
__le32 rx_data_timeout; __le32 rx_data_timeout;
__le32 tx_data_timeout; __le32 tx_data_timeout;
__le32 sleep_interval[IWL_POWER_VEC_SIZE]; __le32 sleep_interval[IWL_POWER_VEC_SIZE];
__le32 keep_alive_beacons; __le32 num_skip_dtim;
__le32 lprx_rssi_threshold; __le32 lprx_rssi_threshold;
} __packed; } __packed;
......
...@@ -91,6 +91,9 @@ static void iwl_mvm_power_log(struct iwl_mvm *mvm, ...@@ -91,6 +91,9 @@ static void iwl_mvm_power_log(struct iwl_mvm *mvm,
le32_to_cpu(cmd->tx_data_timeout)); le32_to_cpu(cmd->tx_data_timeout));
IWL_DEBUG_POWER(mvm, "LP RX RSSI threshold = %u\n", IWL_DEBUG_POWER(mvm, "LP RX RSSI threshold = %u\n",
cmd->lprx_rssi_threshold); cmd->lprx_rssi_threshold);
if (cmd->flags & cpu_to_le16(POWER_FLAGS_SKIP_OVER_DTIM_MSK))
IWL_DEBUG_POWER(mvm, "DTIMs to skip = %u\n",
le32_to_cpu(cmd->num_skip_dtim));
} }
} }
...@@ -135,8 +138,10 @@ void iwl_mvm_power_build_cmd(struct iwl_mvm *mvm, struct ieee80211_vif *vif, ...@@ -135,8 +138,10 @@ void iwl_mvm_power_build_cmd(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
/* Check skip over DTIM conditions */ /* Check skip over DTIM conditions */
if (!radar_detect && (dtimper <= 10) && if (!radar_detect && (dtimper <= 10) &&
(iwlmvm_mod_params.power_scheme == IWL_POWER_SCHEME_LP)) (iwlmvm_mod_params.power_scheme == IWL_POWER_SCHEME_LP)) {
cmd->flags |= cpu_to_le16(POWER_FLAGS_SKIP_OVER_DTIM_MSK); cmd->flags |= cpu_to_le16(POWER_FLAGS_SKIP_OVER_DTIM_MSK);
cmd->num_skip_dtim = cpu_to_le32(2);
}
/* Check that keep alive period is at least 3 * DTIM */ /* Check that keep alive period is at least 3 * DTIM */
dtimper_msec = dtimper * vif->bss_conf.beacon_int; dtimper_msec = dtimper * vif->bss_conf.beacon_int;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment