iwlwifi: mvm: allow to disable beacon filtering for AP/GO interface
When in AP mode we need to filter in beacons from other APs to update HT operation mode. As a power optimization the beacons are filtered out when there are no associated stations. As a result, when there are no associated stations, we will not update the HT operation mode until a station connects. Add a debugfs parameter that allows to disable this optimization. Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
This commit is contained in:
parent
d56a7801b5
commit
c89e333d5e
@ -1548,6 +1548,9 @@ int iwl_mvm_dbgfs_register(struct iwl_mvm *mvm, struct dentry *dbgfs_dir)
|
|||||||
mvm->debugfs_dir,
|
mvm->debugfs_dir,
|
||||||
&mvm->scan_iter_notif_enabled))
|
&mvm->scan_iter_notif_enabled))
|
||||||
goto err;
|
goto err;
|
||||||
|
if (!debugfs_create_bool("drop_bcn_ap_mode", S_IRUSR | S_IWUSR,
|
||||||
|
mvm->debugfs_dir, &mvm->drop_bcn_ap_mode))
|
||||||
|
goto err;
|
||||||
|
|
||||||
#ifdef CONFIG_IWLWIFI_BCAST_FILTERING
|
#ifdef CONFIG_IWLWIFI_BCAST_FILTERING
|
||||||
if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_BCAST_FILTERING) {
|
if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_BCAST_FILTERING) {
|
||||||
|
@ -744,7 +744,7 @@ static void iwl_mvm_mac_ctxt_cmd_common(struct iwl_mvm *mvm,
|
|||||||
* wake-ups.
|
* wake-ups.
|
||||||
*/
|
*/
|
||||||
cmd->filter_flags |= cpu_to_le32(MAC_FILTER_IN_PROBE_REQUEST);
|
cmd->filter_flags |= cpu_to_le32(MAC_FILTER_IN_PROBE_REQUEST);
|
||||||
if (mvmvif->ap_assoc_sta_count) {
|
if (mvmvif->ap_assoc_sta_count || !mvm->drop_bcn_ap_mode) {
|
||||||
cmd->filter_flags |= cpu_to_le32(MAC_FILTER_IN_BEACON);
|
cmd->filter_flags |= cpu_to_le32(MAC_FILTER_IN_BEACON);
|
||||||
IWL_DEBUG_HC(mvm, "Asking FW to pass beacons\n");
|
IWL_DEBUG_HC(mvm, "Asking FW to pass beacons\n");
|
||||||
} else {
|
} else {
|
||||||
|
@ -859,6 +859,12 @@ struct iwl_mvm {
|
|||||||
|
|
||||||
u32 ciphers[6];
|
u32 ciphers[6];
|
||||||
struct iwl_mvm_tof_data tof_data;
|
struct iwl_mvm_tof_data tof_data;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Drop beacons from other APs in AP mode when there are no connected
|
||||||
|
* clients.
|
||||||
|
*/
|
||||||
|
bool drop_bcn_ap_mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Extract MVM priv from op_mode and _hw */
|
/* Extract MVM priv from op_mode and _hw */
|
||||||
|
@ -492,6 +492,7 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,
|
|||||||
}
|
}
|
||||||
mvm->sf_state = SF_UNINIT;
|
mvm->sf_state = SF_UNINIT;
|
||||||
mvm->cur_ucode = IWL_UCODE_INIT;
|
mvm->cur_ucode = IWL_UCODE_INIT;
|
||||||
|
mvm->drop_bcn_ap_mode = true;
|
||||||
|
|
||||||
mutex_init(&mvm->mutex);
|
mutex_init(&mvm->mutex);
|
||||||
mutex_init(&mvm->d0i3_suspend_mutex);
|
mutex_init(&mvm->d0i3_suspend_mutex);
|
||||||
|
Loading…
Reference in New Issue
Block a user