qcacld-3.0: Add ini configs related to SAR safety feature

As part of new requirement add ini configurations
gSarsafetyTimeout, gSarSafetyUnsolicitedTimeout,
gSarSafetyReqResTimeout, gSarSafetyReqResRetry,
gSarSafetyIndex, gSarSafetySleepIndex,
gEnableSarSafety, gConfigSarSafetySleepIndex.

Change-Id: I18df23896b52aa1bbf8e071e27703d4e9e1738f1
CRs-Fixed: 2612843
This commit is contained in:
Ashish Kumar Dhanotiya
2020-01-07 20:38:57 +05:30
committed by nshrivas
父節點 a27dd7907b
當前提交 d2fef2cda4
共有 4 個文件被更改,包括 304 次插入1 次删除

查看文件

@@ -23,6 +23,8 @@
#ifndef __HDD_CONFIG_H
#define __HDD_CONFIG_H
#include "hdd_sar_safety_config.h"
#if defined(CONFIG_HL_SUPPORT)
#include "wlan_tgt_def_config_hl.h"
#else
@@ -1509,5 +1511,6 @@ enum host_log_level {
CFG(CFG_ENABLE_DISABLE_CHANNEL) \
CFG(CFG_SAR_CONVERSION) \
CFG(CFG_WOW_DISABLE) \
CFG(CFG_ENABLE_HOST_MODULE_LOG_LEVEL)
CFG(CFG_ENABLE_HOST_MODULE_LOG_LEVEL) \
SAR_SAFETY_FEATURE_ALL
#endif

查看文件

@@ -0,0 +1,261 @@
/*
* Copyright (c) 2020 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: This file contains centralized definitions of converged configuration.
*/
#ifndef __HDD_SAR_SAFETY_CONFIG_H
#define __HDD_SAR_SAFETY_CONFIG_H
#ifdef SAR_SAFETY_FEATURE
/*
* <ini>
* gSarSafetyTimeout - Specify SAR safety timeout value in milliseconds
*
* @Min: 120000
* @Max: 600000
* Default: 300000
*
* This ini is used to define SAR safety timeout value in milliseconds.
* This timer is started when the QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS
* is received first time.
* SAR safety timer will wait for the gSarSafetyTimeout for
* QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS vendor command and if
* SAR safety timer timeouts host will configure the gSarSafetyIndex
* to the FW.
*
* Usage: External
*
* </ini>
*/
#define CFG_SAR_SAFETY_TIMEOUT CFG_INI_UINT( \
"gSarSafetyTimeout", \
120000, \
600000, \
300000, \
CFG_VALUE_OR_DEFAULT, \
"Timeout value for SAR safety timer")
/*
* <ini>
* gSarSafetyUnsolicitedTimeout - Specify SAR safety unsolicited timeout value
* in milliseconds
*
* @Min: 5000
* @Max: 30000
* Default: 15000
*
* This ini is used to define SAR safety unsolicited timeout value in
* milliseconds. This timer is started on first data tx.
* SAR unsolicited timer will wait for the
* gSarSafetyUnsolicitedTimeout for QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS
* vendor command and if SAR unsolicited timer timeouts host will indicate
* user space with QCA_NL80211_VENDOR_SUBCMD_REQUEST_SAR_LIMITS_EVENT to send
* QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS vendor command.
*
* Usage: External
*
* </ini>
*/
#define CFG_SAR_SAFETY_UNSOLICITED_TIMEOUT CFG_INI_UINT( \
"gSarSafetyUnsolicitedTimeout", \
5000, \
30000, \
15000, \
CFG_VALUE_OR_DEFAULT, \
"Timeout value for SAR Unsolicited timer")
/*
* <ini>
* gSarSafetyReqRespTimeout - Specify SAR safety request response timeout value
* in milliseconds
*
* @Min: 500
* @Max: 3000
* Default: 1000
*
* This ini is used to define SAR request-response timeout value
* in milliseconds. SAR request-response timer will wait for the
* gSarSafetyReqRespTimeout for QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS
* vendor command and if SAR request-response timer timeouts host will
* indicate user space with QCA_NL80211_VENDOR_SUBCMD_REQUEST_SAR_LIMITS_EVENT
* for gSarSafetyReqRespRetry number of times to send
* QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS vendor command and still if host
* does not get QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS vendor command, host
* will configure the gSarSafetyIndex to the FW.
*
* Usage: External
*
* </ini>
*/
#define CFG_SAR_SAFETY_REQ_RESP_TIMEOUT CFG_INI_UINT( \
"gSarSafetyReqRespTimeout", \
500, \
3000, \
1000, \
CFG_VALUE_OR_DEFAULT, \
"Timeout value for SAR safety request response timer")
/*
* <ini>
* gSarSafetyReqRespRetry - Specify SAR request response retries value
*
* @Min: 1
* @Max: 10
* Default: 5
*
* This ini is used to define SAR request-response retries value.
* SAR request-response timer will wait for the gSarReqRespTimeout for
* QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS vendor command and if
* SAR request-response timer timeouts host will indicate user space
* for gSarSafetyReqRespRetry number of times to send
* QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS vendor command and still if
* host does not get QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS vendor
* command, host will configure the gSarSafetyIndex to the FW.
*
* Usage: External
*
* </ini>
*/
#define CFG_SAR_SAFETY_REQ_RESP_RETRIES CFG_INI_UINT( \
"gSarSafetyReqRespRetry", \
1, \
10, \
5, \
CFG_VALUE_OR_DEFAULT, \
"Max Number of SAR Request Response Retries")
/*
* <ini>
* gSarSafetyIndex - Specify SAR safety index
*
* @Min: 0
* @Max: 11
* Default: 11
*
* This ini is used to define SAR safety index, when sar safety timer
* timeouts or sar request response timer timeouts for gSarSafetyReqRespRetry
* number of times, host will configure gSarSafetyIndex value to the FW.
*
* Usage: External
*
* </ini>
*/
#define CFG_SAR_SAFETY_INDEX CFG_INI_UINT( \
"gSarSafetyIndex", \
0, \
11, \
11, \
CFG_VALUE_OR_DEFAULT, \
"SAR safety index value")
/*
* <ini>
* gSarSafetySleepIndex - Specify SAR Safety sleep index
*
* @Min: 0
* @Max: 11
* Default: 11
*
* This ini is used to define SAR sleep index, when device goes into the
* sleep mode, before going into the sleep mode host configures
* gSarSafetySleepIndex value to the FW.
*
* Usage: External
*
* </ini>
*/
#define CFG_SAR_SAFETY_SLEEP_INDEX CFG_INI_UINT( \
"gSarSafetySleepIndex", \
0, \
11, \
11, \
CFG_VALUE_OR_DEFAULT, \
"SAR safety sleep index value")
/*
* <ini>
* gEnableSarSafety - Enable/Disable SAR safety feature
*
* @Min: 0
* @Max: 1
* Default: 0
*
* This ini is used to enable/disable SAR safety feature
* Value 1 of this ini enables SAR safety feature and
* value 0 of this ini disables SAR safety feature
*
* Usage: External
*
* </ini>
*/
#define CFG_ENABLE_SAR_SAFETY_FEATURE CFG_INI_BOOL( \
"gEnableSarSafety", \
0, \
"Enable/Disable SAR safety feature")
/*
* <ini>
* gConfigSarSafetySleepIndex - Enable/Disable SAR Safety sleep index
*
* @Min: 0
* @Max: 1
* Default: 0
*
* This Configuration is to decide that before going to
* sleep mode whether to maintain high RF power
* (SAR disable) or to configure SAR sleep mode index
*
* Value 0 for this ini indicates to maintain high
* RF power (SAR disable)
* Value 1 for this ini indicates to configure SAR
* sleep mode index.
*
* Usage: External
*
* </ini>
*/
#define CFG_CONFIG_SAR_SAFETY_SLEEP_MODE_INDEX CFG_INI_BOOL( \
"gConfigSarSafetySleepIndex", \
0, \
"Config SAR sleep Index")
#define SAR_SAFETY_FEATURE_ALL \
CFG(CFG_SAR_SAFETY_TIMEOUT) \
CFG(CFG_SAR_SAFETY_UNSOLICITED_TIMEOUT) \
CFG(CFG_SAR_SAFETY_REQ_RESP_TIMEOUT) \
CFG(CFG_SAR_SAFETY_REQ_RESP_RETRIES) \
CFG(CFG_SAR_SAFETY_INDEX) \
CFG(CFG_SAR_SAFETY_SLEEP_INDEX) \
CFG(CFG_ENABLE_SAR_SAFETY_FEATURE) \
CFG(CFG_CONFIG_SAR_SAFETY_SLEEP_MODE_INDEX) \
#else
#define SAR_SAFETY_FEATURE_ALL
#endif
#endif

查看文件

@@ -233,6 +233,18 @@ struct hdd_config {
uint16_t pkt_bundle_size;
#endif
uint32_t dp_proto_event_bitmap;
#ifdef SAR_SAFETY_FEATURE
uint32_t sar_safety_timeout;
uint32_t sar_safety_unsolicited_timeout;
uint32_t sar_safety_req_resp_timeout;
uint32_t sar_safety_req_resp_retry;
uint32_t sar_safety_index;
uint32_t sar_safety_sleep_index;
bool enable_sar_safety;
bool config_sar_safety_sleep_index;
#endif
};
/**

查看文件

@@ -10444,6 +10444,32 @@ hdd_init_dhcp_server_ip(struct hdd_context *hdd_ctx)
}
#endif
#ifdef SAR_SAFETY_FEATURE
static void hdd_sar_cfg_update(struct hdd_config *config,
struct wlan_objmgr_psoc *psoc)
{
config->sar_safety_timeout = cfg_get(psoc, CFG_SAR_SAFETY_TIMEOUT);
config->sar_safety_unsolicited_timeout =
cfg_get(psoc, CFG_SAR_SAFETY_UNSOLICITED_TIMEOUT);
config->sar_safety_req_resp_timeout =
cfg_get(psoc, CFG_SAR_SAFETY_REQ_RESP_TIMEOUT);
config->sar_safety_req_resp_retry =
cfg_get(psoc, CFG_SAR_SAFETY_REQ_RESP_RETRIES);
config->sar_safety_index = cfg_get(psoc, CFG_SAR_SAFETY_INDEX);
config->sar_safety_sleep_index =
cfg_get(psoc, CFG_SAR_SAFETY_SLEEP_INDEX);
config->enable_sar_safety =
cfg_get(psoc, CFG_ENABLE_SAR_SAFETY_FEATURE);
config->config_sar_safety_sleep_index =
cfg_get(psoc, CFG_CONFIG_SAR_SAFETY_SLEEP_MODE_INDEX);
}
#else
static void hdd_sar_cfg_update(struct hdd_config *config,
struct wlan_objmgr_psoc *psoc)
{
}
#endif
/**
* hdd_cfg_params_init() - Initialize hdd params in hdd_config strucuture
* @hdd_ctx - Pointer to HDD context
@@ -10542,6 +10568,7 @@ static void hdd_cfg_params_init(struct hdd_context *hdd_ctx)
hdd_init_mtrace_log(config, psoc);
hdd_init_dhcp_server_ip(hdd_ctx);
hdd_dp_cfg_update(psoc, hdd_ctx);
hdd_sar_cfg_update(config, psoc);
}
struct hdd_context *hdd_context_create(struct device *dev)