mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-05 06:08:22 +00:00
iwlwifi: mvm: support absolute thresholds in bf configuration
Update iwl_beacon_filter_cmd to support BEACON_FILTER_CONFIG_API_S_VER_4. Currently driver configs them to be zero (i.e. disable them, so no change is applied). Signed-off-by: Avigail Grinstein <avigail.grinstein@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
parent
3619b088a8
commit
537ea3bb74
3 changed files with 32 additions and 2 deletions
|
@ -470,6 +470,13 @@ struct iwl_geo_tx_power_profiles_resp {
|
|||
* @ba_escape_timer: Fully receive and parse beacon if no beacons were passed
|
||||
* for a longer period of time then this escape-timeout. Units: Beacons.
|
||||
* @ba_enable_beacon_abort: 1, beacon abort is enabled; 0, disabled.
|
||||
* @bf_threshold_absolute_low: See below.
|
||||
* @bf_threshold_absolute_high: Send Beacon to driver if Energy value calculated
|
||||
* for this beacon crossed this absolute threshold. For the 'Increase'
|
||||
* direction the bf_energy_absolute_low[i] is used. For the 'Decrease'
|
||||
* direction the bf_energy_absolute_high[i] is used. Zero value means
|
||||
* that this specific threshold is ignored for beacon filtering, and
|
||||
* beacon will not be forced to be sent to driver due to this setting.
|
||||
*/
|
||||
struct iwl_beacon_filter_cmd {
|
||||
__le32 bf_energy_delta;
|
||||
|
@ -483,7 +490,9 @@ struct iwl_beacon_filter_cmd {
|
|||
__le32 bf_escape_timer;
|
||||
__le32 ba_escape_timer;
|
||||
__le32 ba_enable_beacon_abort;
|
||||
} __packed;
|
||||
__le32 bf_threshold_absolute_low[2];
|
||||
__le32 bf_threshold_absolute_high[2];
|
||||
} __packed; /* BEACON_FILTER_CONFIG_API_S_VER_4 */
|
||||
|
||||
/* Beacon filtering and beacon abort */
|
||||
#define IWL_BF_ENERGY_DELTA_DEFAULT 5
|
||||
|
|
|
@ -265,6 +265,8 @@ typedef unsigned int __bitwise iwl_ucode_tlv_api_t;
|
|||
* the REDUCE_TX_POWER_CMD.
|
||||
* @IWL_UCODE_TLV_API_SHORT_BEACON_NOTIF: This ucode supports the short
|
||||
* version of the beacon notification.
|
||||
* @IWL_UCODE_TLV_API_BEACON_FILTER_V4: This ucode supports v4 of
|
||||
* BEACON_FILTER_CONFIG_API_S_VER_4.
|
||||
*
|
||||
* @NUM_IWL_UCODE_TLV_API: number of bits used
|
||||
*/
|
||||
|
@ -290,6 +292,7 @@ enum iwl_ucode_tlv_api {
|
|||
IWL_UCODE_TLV_API_FRAG_EBS = (__force iwl_ucode_tlv_api_t)44,
|
||||
IWL_UCODE_TLV_API_REDUCE_TX_POWER = (__force iwl_ucode_tlv_api_t)45,
|
||||
IWL_UCODE_TLV_API_SHORT_BEACON_NOTIF = (__force iwl_ucode_tlv_api_t)46,
|
||||
IWL_UCODE_TLV_API_BEACON_FILTER_V4 = (__force iwl_ucode_tlv_api_t)47,
|
||||
|
||||
NUM_IWL_UCODE_TLV_API
|
||||
#ifdef __CHECKER__
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
* Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.
|
||||
* Copyright(c) 2013 - 2014 Intel Mobile Communications GmbH
|
||||
* Copyright(c) 2015 - 2017 Intel Deutschland GmbH
|
||||
* Copyright (C) 2018 Intel Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of version 2 of the GNU General Public License as
|
||||
|
@ -30,6 +31,7 @@
|
|||
* Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.
|
||||
* Copyright(c) 2013 - 2014 Intel Mobile Communications GmbH
|
||||
* Copyright(c) 2015 - 2017 Intel Deutschland GmbH
|
||||
* Copyright (C) 2018 Intel Corporation
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -79,6 +81,8 @@ int iwl_mvm_beacon_filter_send_cmd(struct iwl_mvm *mvm,
|
|||
struct iwl_beacon_filter_cmd *cmd,
|
||||
u32 flags)
|
||||
{
|
||||
u16 len;
|
||||
|
||||
IWL_DEBUG_POWER(mvm, "ba_enable_beacon_abort is: %d\n",
|
||||
le32_to_cpu(cmd->ba_enable_beacon_abort));
|
||||
IWL_DEBUG_POWER(mvm, "ba_escape_timer is: %d\n",
|
||||
|
@ -101,9 +105,23 @@ int iwl_mvm_beacon_filter_send_cmd(struct iwl_mvm *mvm,
|
|||
le32_to_cpu(cmd->bf_temp_fast_filter));
|
||||
IWL_DEBUG_POWER(mvm, "bf_temp_slow_filter is: %d\n",
|
||||
le32_to_cpu(cmd->bf_temp_slow_filter));
|
||||
IWL_DEBUG_POWER(mvm, "bf_threshold_absolute_low is: %d, %d\n",
|
||||
le32_to_cpu(cmd->bf_threshold_absolute_low[0]),
|
||||
le32_to_cpu(cmd->bf_threshold_absolute_low[1]));
|
||||
|
||||
IWL_DEBUG_POWER(mvm, "bf_threshold_absolute_high is: %d, %d\n",
|
||||
le32_to_cpu(cmd->bf_threshold_absolute_high[0]),
|
||||
le32_to_cpu(cmd->bf_threshold_absolute_high[1]));
|
||||
|
||||
if (fw_has_api(&mvm->fw->ucode_capa,
|
||||
IWL_UCODE_TLV_API_BEACON_FILTER_V4))
|
||||
len = sizeof(struct iwl_beacon_filter_cmd);
|
||||
else
|
||||
len = offsetof(struct iwl_beacon_filter_cmd,
|
||||
bf_threshold_absolute_low);
|
||||
|
||||
return iwl_mvm_send_cmd_pdu(mvm, REPLY_BEACON_FILTERING_CMD, flags,
|
||||
sizeof(struct iwl_beacon_filter_cmd), cmd);
|
||||
len, cmd);
|
||||
}
|
||||
|
||||
static
|
||||
|
|
Loading…
Add table
Reference in a new issue