/*
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. 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 configuration definitions for MLME REG.
*/
#ifndef CFG_MLME_REG_H__
#define CFG_MLME_REG_H__
/*
*
* gSelfGenFrmPwr - self-generated frame power in tx chain mask
* for CCK rates
* @Min: 0
* @Max: 0xffff
* @Default: 0
*
* gSelfGenFrmPwr is to set self-generated frame power in tx chain mask
* for CCK rates
*
* Related: None
*
* Supported Feature: STA
*
* Usage: Internal/External
*
*
*/
#define CFG_SELF_GEN_FRM_PWR CFG_INI_UINT( \
"gSelfGenFrmPwr", \
0, \
0xffff, \
0, \
CFG_VALUE_OR_DEFAULT, \
"set the self gen power value")
/*
*
* enable_11d_in_world_mode - enable 11d in world mode
* @Min: 0
* @Max: 1
* @Default: 0
*
* This ini enables 11d in world mode, irrespective of value of
* g11dSupportEnabled
*
* Usage: External
*
*
*/
#define CFG_ENABLE_11D_IN_WORLD_MODE CFG_INI_BOOL( \
"enable_11d_in_world_mode", \
0, \
"enable 11d in world mode")
/*
*
* etsi_srd_chan_in_master_mode - Enable/disable ETSI SRD channels in
* master mode PCL and ACS functionality
* @Min: 0
* @Max: 0xFF
* @Default: 6
*
* etsi_srd_chan_in_master_mode is to enable/disable ETSI SRD channels in
* master mode PCL and ACS functionality
* Bit map for enabling the SRD mode in various modes are as follows:-
* BIT 0:- Enable/Disable SRD channels for SAP.
* BIT 1:- Enable/Disable SRD channels for P2P-GO.
* BIT 2:- Enable/Disable SRD channels for NAN.
* Rest of the bits are currently reserved for future SRD channel support for
* other vdevs.
*
* Related: None
*
* Supported Feature: SAP/P2P-GO
*
* Usage: Internal/External
*
*
*/
#define CFG_ETSI_SRD_CHAN_IN_MASTER_MODE CFG_INI_UINT( \
"etsi13_srd_chan_in_master_mode", \
0, \
0xff, \
6, \
CFG_VALUE_OR_DEFAULT, \
"enable/disable ETSI SRD channels in master mode")
/*
*
* enable_nan_indoor_channel - Enable Indoor channels for NAN
* @Min: 0
* @Max: 1
* @Default: 0
*
* This ini is used to support to indoor channels for NAN interface
* Customer can config this item to enable/disable NAN in indoor channel
*
* Related: None
*
* Supported Feature: NAN
*
* Usage: External
*
*
*/
#define CFG_INDOOR_CHANNEL_SUPPORT_FOR_NAN CFG_INI_BOOL( \
"enable_nan_indoor_channel", \
0, \
"enable/disable indoor channels for NAN")
/*
*
* fcc_5dot9_ghz_chan_in_master_mode - Enable/disable 5.9 GHz channels in
* master mode for US
* @Min: 0
* @Max: 1
* @Default: 0
*
* fcc_5dot9_ghz_chan_in_master_mode is to enable/disable 5.9 GHz channels
* in master mode for FCC reg domain
*
* Related: None
*
* Supported Feature: SAP/P2P-GO
*
* Usage: Internal/External
*
*
*/
#define CFG_FCC_5DOT9_GHZ_CHAN_IN_MASTER_MODE CFG_INI_BOOL( \
"fcc_5dot9_ghz_chan_in_master_mode", \
0, \
"enable/disable FCC 5.9 GHz channels in master mode")
#ifdef SAP_AVOID_ACS_FREQ_LIST
#define SAP_AVOID_ACS_FREQ_LIST_DEFAULT ""
/*
*
* sap_avoid_acs_freq_list - Avoid configured frequencies from acs
* @Default: No frequencies are configured, it means consider all
* the frequencies for acs
*
* This ini is to configure the frequencies which needs to be
* avoided during acs and sap will not come up on these channels
* Ex: sap_avoid_acs_freq_list=2412,2417,2422,2427,2467,2472
*
* Related: Feature flag SAP_AVOID_ACS_FREQ_LIST
*
* Supported Feature: SAP
*
* Usage: External
*
*
*/
#define CFG_SAP_AVOID_ACS_FREQ_LIST CFG_INI_STRING( \
"sap_avoid_acs_freq_list", \
0, \
CFG_VALID_CHANNEL_LIST_STRING_LEN, \
SAP_AVOID_ACS_FREQ_LIST_DEFAULT, \
"Avoid configured frequencies during acs")
#define CFG_SAP_AVOID_ACS_FREQ_LIST_ALL CFG(CFG_SAP_AVOID_ACS_FREQ_LIST)
#else
#define CFG_SAP_AVOID_ACS_FREQ_LIST_ALL
#endif
/*
*
* restart_beaconing_on_chan_avoid_event - control the beaconing entity to move
* away from active LTE channels
* @Min: 0
* @Max: 2
* @Default: 1
*
* This ini is used to control the beaconing entity (SAP/GO) to move away from
* active LTE channels when channel avoidance event is received
* restart_beaconing_on_chan_avoid_event=0: Don't allow beaconing entity move
* from active LTE channels
* restart_beaconing_on_chan_avoid_event=1: Allow beaconing entity move from
* active LTE channels
* restart_beaconing_on_chan_avoid_event=2: Allow beaconing entity move from
* 2.4G active LTE channels only
*
* Related: None
*
* Supported Feature: channel avoidance
*
* Usage: Internal/External
*
*
*/
#define CFG_RESTART_BEACONING_ON_CH_AVOID CFG_INI_UINT( \
"restart_beaconing_on_chan_avoid_event", \
0, \
2, \
1, \
CFG_VALUE_OR_DEFAULT, \
"control the beaconing entity to move away from active LTE channels")
/*
*
* gindoor_channel_support - support to start sap in indoor channel
* @Min: 0
* @Max: 1
* @Default: 0
*
* This ini is to support to start sap in indoor channel.
* Customer can config this item to enable/disable sap in indoor channel
*
* Related: None
*
* Supported Feature: SAP
*
* Usage: External
*
*
*/
#define CFG_INDOOR_CHANNEL_SUPPORT CFG_INI_BOOL( \
"gindoor_channel_support", \
0, \
"enable/disable sap in indoor channel")
/*
*
* scan_11d_interval - 11d scan interval in ms
* @Min: 1 sec
* @Max: 10 hr
* @Default: 1 hr
*
* This ini sets the 11d scan interval in FW
*
* Related: None
*
* Supported Feature: STA
*
* Usage: External
*
*
*/
#define CFG_SCAN_11D_INTERVAL CFG_INI_UINT( \
"scan_11d_interval", \
1000, \
36000000, \
3600000, \
CFG_VALUE_OR_DEFAULT, \
"set the 11d scan interval in FW")
/*
*
* ignore_fw_reg_offload_ind - If set, Ignore the FW offload indication
* @Min: 0
* @Max: 1
* @Default: 0
*
* This ini is used to ignore regdb offload indication from FW and
* regulatory will be treated as non offload.
*
* Related: None
*
* Supported Feature: STA/AP
*
* Usage: External
*
*
*/
#define CFG_IGNORE_FW_REG_OFFLOAD_IND CFG_INI_BOOL( \
"ignore_fw_reg_offload_ind", \
0, \
"Ignore Regulatory offloads Indication from FW")
/*
*
* enable_pending_list_req - Sets Pending channel List Req.
* @Min: 0
* @Max: 1
* @Default: 1
*
* This option enables/disables SCAN_CHAN_LIST_CMDID channel list command to FW
* till the current scan is complete.
*
* Related: None
*
* Supported Feature: STA
*
* Usage: External
*
*
*/
#define CFG_ENABLE_PENDING_CHAN_LIST_REQ CFG_INI_BOOL( \
"enable_pending_list_req", \
1, \
"Enable Pending list req")
#if defined(CONFIG_BAND_6GHZ) && defined(CONFIG_AFC_SUPPORT)
/*
* afc_reg_no_action - Whether action to AFC response
* @Min: 0
* @Max: 1
* @Default: 0
*
* This cfg is used to control whether action to AFC response.
*
* Related: None
*
* Supported Feature: SAP
*
*/
#define CFG_AFC_REG_NO_ACTION CFG_BOOL( \
"afc_reg_no_action", false, \
"driver/user space action needed for afc resp")
/*
* enable_6ghz_sp_pwrmode_supp - Enable 6Ghz SP power mode
* @Min: 0
* @Max: 1
* @Default: 0
*
* This cfg is used to control support of 6Ghz SP power mode.
*
* Related: None
*
* Supported Feature: SAP
*
*/
#define CFG_6GHZ_SP_POWER_MODE_SUPP CFG_INI_BOOL( \
"enable_6ghz_sp_pwrmode_supp", false, \
"Enable support for SP Power mode in 6GHz")
/*
* afc_disable_timer_check - Disable AFC timer check
* @Min: 0
* @Max: 1
* @Default: 0
*
* This cfg is used to control whether disable AFC timer check.
*
* Related: None
*
* Supported Feature: SAP
*
*/
#define CFG_AFC_TIMER_CHECK_DIS CFG_BOOL( \
"afc_disable_timer_check", false, \
"Disable the AFC request timer in FW")
/*
* afc_disable_request_id_check - Disable AFC request id check
* @Min: 0
* @Max: 1
* @Default: 0
*
* This ini is used to control whether disable AFC request id check.
*
* Related: None
*
* Supported Feature: SAP
*
*/
#define CFG_AFC_REQ_ID_CHECK_DIS CFG_BOOL( \
"afc_disable_request_id_check", false, \
"Disable the AFC request ID check in FW")
#define CFG_AFC_REG_ALL \
CFG(CFG_AFC_REG_NO_ACTION) \
CFG(CFG_6GHZ_SP_POWER_MODE_SUPP) \
CFG(CFG_AFC_TIMER_CHECK_DIS) \
CFG(CFG_AFC_REQ_ID_CHECK_DIS)
#else
#define CFG_AFC_REG_ALL
#endif
/*
*
* retain_nol_across_regdmn - Retain NOL across reg domain
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to set if NOL needs to be retained
* on the reg domain change.
*
* Related: None
*
* Supported Feature: SAP
*
* Usage: External
*
*
*/
#define CFG_RETAIN_NOL_ACROSS_REG_DOMAIN CFG_INI_BOOL( \
"retain_nol_across_regdmn", \
1, \
"Retain NOL even if the regdomain changes")
#ifdef FEATURE_WLAN_CH_AVOID_EXT
/**
* enum ignore_fw_coex_info_modes - Represents modes
* @IGNORE_FW_COEX_INFO_ON_SAP_MODE: Set this bit to ignore fw coex info on
* SAP mode
* @IGNORE_FW_COEX_INFO_ON_P2P_GO_MODE: Set this bit to ignore fw coex info
* on P2P-GO mode
*/
enum ignore_fw_coex_info_modes {
IGNORE_FW_COEX_INFO_ON_SAP_MODE = 1 << 0,
IGNORE_FW_COEX_INFO_ON_P2P_GO_MODE = 1 << 1
};
/*
*
* coex_unsafe_chan_nb_user_prefer- Used to handle coex unsafe freq
* event
*
* @Min: 0
* @Max: 0xFF
* @Default: 0
*
* Bit map of the modes to consider/ignore firmware provided coex/unsafe
* channels.
* Firmware provided coex/unsafe channel info is ignored if the corresponding
* bit is set to 1.
* Firmware provided coex/unsafe channel info is honored if the corresponding
* bit is set to 0.
*
* BIT 0: Don't honor firmware coex info for SAP mode
* BIT 1: Don't honor firmware coex info for P2P-GO mode
* Rest of the bits are currently reserved
*
* This ini is used to handle coex unsafe freq event
* Usage: External
*
*
*/
#define CFG_COEX_UNSAFE_CHAN_NB_USER_PREFER CFG_INI_UINT( \
"coex_unsafe_chan_nb_user_prefer", \
0, \
0xff, \
0, \
CFG_VALUE_OR_DEFAULT, \
"Honor coex unsafe freq event from firmware")
/*
*
* coex_unsafe_chan_reg_disable - Used to disable reg channels
* for coex unsafe freq event
*
* @Min: 0 (Don't disable reg channels for coex unsafe chan event)
* @Max: 1 (Disable reg channels for coex unsafe chan event)
* Default: 0
*
* This ini is used to disable reg channels for coex unsafe chan
* event
* Usage: External
*
*
*/
#define CFG_COEX_UNSAFE_CHAN_REG_DISABLE CFG_INI_BOOL( \
"coex_unsafe_chan_reg_disable", \
0, \
"Disable reg channels for coex unsafe chan event")
#define CFG_COEX_UNSAFE_CHAN_ALL \
CFG(CFG_COEX_UNSAFE_CHAN_NB_USER_PREFER) \
CFG(CFG_COEX_UNSAFE_CHAN_REG_DISABLE)
#else
#define CFG_COEX_UNSAFE_CHAN_ALL
#endif
#define CFG_REG_ALL \
CFG_COEX_UNSAFE_CHAN_ALL \
CFG(CFG_SELF_GEN_FRM_PWR) \
CFG(CFG_ENABLE_PENDING_CHAN_LIST_REQ) \
CFG(CFG_ENABLE_11D_IN_WORLD_MODE) \
CFG(CFG_ETSI_SRD_CHAN_IN_MASTER_MODE) \
CFG(CFG_INDOOR_CHANNEL_SUPPORT_FOR_NAN) \
CFG(CFG_FCC_5DOT9_GHZ_CHAN_IN_MASTER_MODE) \
CFG(CFG_RESTART_BEACONING_ON_CH_AVOID) \
CFG(CFG_INDOOR_CHANNEL_SUPPORT) \
CFG(CFG_SCAN_11D_INTERVAL) \
CFG(CFG_IGNORE_FW_REG_OFFLOAD_IND) \
CFG_AFC_REG_ALL \
CFG(CFG_RETAIN_NOL_ACROSS_REG_DOMAIN) \
CFG_SAP_AVOID_ACS_FREQ_LIST_ALL
#endif /* CFG_MLME_REG_H__ */