/*
 * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
 * Copyright (c) 2022-2023 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.
 */

#ifndef __CFG_POLICY_MGR
#define __CFG_POLICY_MGR
#include "qdf_types.h"

/*
 * <ini>
 * gWlanMccToSccSwitchMode - Control SAP channel.
 * @Min: 0
 * @Max: 5
 * @Default: 0
 *
 * This ini is used to override SAP channel.
 * If gWlanMccToSccSwitchMode = 0: disabled.
 * If gWlanMccToSccSwitchMode = 1: Enable switch.
 * If gWlainMccToSccSwitchMode = 2: Force switch with SAP restart.
 * If gWlainMccToSccSwitchMode = 3: Force switch without SAP restart.
 * If gWlainMccToSccSwitchMode = 4: Switch using
 *					fav channel(s)without SAP restart.
 * If gWlainMccToSccSwitchMode = 5: Force switch without SAP restart.MCC allowed
 *					in exceptional cases.
 * If gWlainMccToSccSwitchMode = 6: Force Switch without SAP restart only in
					user preferred band.
 * Related: None.
 *
 * Supported Feature: Concurrency
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_MCC_TO_SCC_SWITCH CFG_INI_UINT(\
					"gWlanMccToSccSwitchMode", \
					QDF_MCC_TO_SCC_SWITCH_DISABLE, \
					QDF_MCC_TO_SCC_SWITCH_MAX - 1, \
					QDF_MCC_TO_SCC_SWITCH_DISABLE, \
					CFG_VALUE_OR_DEFAULT, \
					"Provides MCC to SCC switch mode")
/*
 * <ini>
 * gSystemPref - Configure wlan system preference for PCL.
 * @Min: 0
 * @Max: 2
 * @Default: 0
 *
 * This ini is used to configure wlan system preference option to help
 * policy manager decide on Preferred Channel List for a new connection.
 * For possible values refer to enum hdd_conc_priority_mode
 *
 * Related: None.
 *
 * Supported Feature: DBS
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_CONC_SYS_PREF CFG_INI_UINT(\
					"gSystemPref", 0, 2, 0, \
					CFG_VALUE_OR_DEFAULT, \
					"System preference to predict PCL")
/*
 * <ini>
 * gMaxConcurrentActiveSessions - Maximum number of concurrent connections.
 * @Min: 1
 * @Max: 4
 * @Default: 3
 *
 * This ini is used to configure the maximum number of concurrent connections.
 *
 * Related: None.
 *
 * Supported Feature: Concurrency
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_MAX_CONC_CXNS CFG_INI_UINT(\
					"gMaxConcurrentActiveSessions", \
					1, 4, 3, \
					CFG_VALUE_OR_DEFAULT, \
					"Config max num allowed connections")

#define POLICY_MGR_CH_SELECT_POLICY_DEF         0x00000003

/*
 * <ini>
 * channel_select_logic_conc - Set channel selection logic
 * for different concurrency combinations to DBS or inter band
 * MCC. Default is DBS for STA+STA and STA+P2P.
 * @Min: 0x00000000
 * @Max: 0xFFFFFFFF
 * @Default: 0x00000000
 *
 * 0 - inter-band MCC
 * 1 - DBS
 *
 * BIT 0: STA+STA
 * BIT 1: STA+P2P
 * BIT 2-31: Reserved
 *
 * Supported Feature: STA+STA, STA+P2P
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_CHNL_SELECT_LOGIC_CONC CFG_INI_UINT(\
					"channel_select_logic_conc",\
					0x00000000, \
					0xFFFFFFFF, \
					POLICY_MGR_CH_SELECT_POLICY_DEF, \
					CFG_VALUE_OR_DEFAULT, \
					"Set channel selection policy for various concurrency")
/*
 * <ini>
 * dbs_selection_policy - Configure dbs selection policy.
 * @Min: 0
 * @Max: 3
 * @Default: 0
 *
 *  set band preference or Vdev preference.
 *      bit[0] = 0: 5G 2x2 preferred to select 2x2 5G + 1x1 2G DBS mode.
 *      bit[0] = 1: 2G 2x2 preferred to select 2x2 2G + 1x1 5G DBS mode.
 *      bit[1] = 1: vdev priority enabled. The INI "vdev_priority_list" will
 * specify the vdev priority.
 *      bit[1] = 0: vdev priority disabled.
 * This INI only take effect for Genoa dual DBS hw.
 *
 * Supported Feature: DBS
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_DBS_SELECTION_PLCY CFG_INI_UINT(\
					    "dbs_selection_policy", \
					    0, 3, 0, \
					    CFG_VALUE_OR_DEFAULT, \
					    "Configure dbs selection policy")
/*
 * <ini>
 * vdev_priority_list - Configure vdev priority list.
 * @Min: 0
 * @Max: 0x4444
 * @Default: 0x4321
 *
 * @vdev_priority_list: vdev priority list
 *      bit[0-3]: pri_id (policy_mgr_pri_id) of highest priority
 *      bit[4-7]: pri_id (policy_mgr_pri_id) of second priority
 *      bit[8-11]: pri_id (policy_mgr_pri_id) of third priority
 *      bit[12-15]: pri_id (policy_mgr_pri_id) of fourth priority
 *      example: 0x4321 - CLI < GO < SAP < STA
 *      vdev priority id mapping:
 *        PM_STA_PRI_ID = 1,
 *        PM_SAP_PRI_ID = 2,
 *        PM_P2P_GO_PRI_ID = 3,
 *        PM_P2P_CLI_PRI_ID = 4,
 * When the previous INI "dbs_selection_policy" bit[1]=1, which means
 * the vdev 2x2 prioritization enabled. Then this INI will be used to
 * specify the vdev type priority list. For example :
 * dbs_selection_policy=0x2
 * vdev_priority_list=0x4312
 * means: default preference 2x2 band is 5G, vdev 2x2 prioritization enabled.
 * And the priority list is CLI < GO < STA < SAP
 *
 * This INI only take effect for Genoa dual DBS hw.
 *
 * Supported Feature: DBS
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_VDEV_CUSTOM_PRIORITY_LIST CFG_INI_UINT(\
					"vdev_priority_list", \
					0, 0x4444, 0x4321, \
					CFG_VALUE_OR_DEFAULT, \
					"Configure vdev priority list")
/*
 * <ini>
 * gEnableCustomConcRule1 - Enable custom concurrency rule1.
 * @Min: 0
 * @Max: 1
 * @Default: 0
 *
 * This ini is used to enable/disable custom concurrency rule1.
 * If SAP comes up first and STA comes up later then SAP needs to follow STA's
 * channel.
 *
 * Related: None.
 *
 * Supported Feature: Concurrency
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_ENABLE_CONC_RULE1 CFG_INI_UINT(\
					"gEnableCustomConcRule1", \
					0, 1, 0, \
					CFG_VALUE_OR_DEFAULT, \
					"Enable custom concurrency rule 1")
/*
 * <ini>
 * gEnableCustomConcRule2 - Enable custom concurrency rule2.
 * @Min: 0
 * @Max: 1
 * @Default: 0
 *
 * This ini is used to enable/disable custom concurrency rule2.
 * If P2PGO comes up first and STA comes up later then P2PGO need to follow
 * STA's channel in 5Ghz. In following if condition we are just adding sanity
 * check to make sure that by this time P2PGO's channel is same as STA's
 * channel.
 *
 * Related: None.
 *
 * Supported Feature: Concurrency
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_ENABLE_CONC_RULE2 CFG_INI_UINT(\
					"gEnableCustomConcRule2", \
					0, 1, 0, \
					CFG_VALUE_OR_DEFAULT, \
					"Enable custom concurrency rule 2")
/*
 * <ini>
 * gEnableMCCAdaptiveScheduler - MCC Adaptive Scheduler feature.
 * @Min: 0
 * @Max: 1
 * @Default: 1
 *
 * This ini is used to enable/disable MCC Adaptive Scheduler feature.
 *
 * Related: None.
 *
 * Supported Feature: Concurrency
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_ENABLE_MCC_ADAPTIVE_SCH_ENABLED_NAME CFG_INI_BOOL(\
					"gEnableMCCAdaptiveScheduler", \
					true, \
					"Enable/Disable MCC Adaptive Scheduler")

/*
 * <ini>
 * gEnableStaConnectionIn5Ghz - To enable/disable STA connection in 5G
 * @Min: 0
 * @Max: 1
 * @Default: 1
 *
 * This ini is used to enable/disable STA connection in 5G band
 *
 * Related: STA
 *
 * Supported Feature: Concurrency
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_ENABLE_STA_CONNECTION_IN_5GHZ CFG_INI_UINT(\
					"gEnableStaConnectionIn5Ghz", \
					0, 1, 1, \
					CFG_VALUE_OR_DEFAULT, \
					"Enable/Disable STA connection in 5G")

/*
 * <ini>
 * gAllowMCCGODiffBI - Allow GO in MCC mode to accept different beacon interval
 * than STA's.
 * @Min: 0
 * @Max: 4
 * @Default: 4
 *
 * This ini is used to allow GO in MCC mode to accept different beacon interval
 * than STA's.
 * Added for Wi-Fi Cert. 5.1.12
 * If gAllowMCCGODiffBI = 1
 *	Set to 1 for WFA certification. GO Beacon interval is not changed.
 *	MCC GO doesn't work well in optimized way. In worst scenario, it may
 *	invite STA disconnection.
 * If gAllowMCCGODiffBI = 2
 *	If set to 2 workaround 1 disassoc all the clients and update beacon
 *	Interval.
 * If gAllowMCCGODiffBI = 3
 *	If set to 3 tear down the P2P link in auto/Non-autonomous -GO case.
 * If gAllowMCCGODiffBI = 4
 *	If set to 4 don't disconnect the P2P client in autonomous/Non-auto-
 *	nomous -GO case update the BI dynamically
 *
 * Related: None.
 *
 * Supported Feature: Concurrency
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_ALLOW_MCC_GO_DIFF_BI \
CFG_INI_UINT("gAllowMCCGODiffBI", 0, 4, 4, CFG_VALUE_OR_DEFAULT, \
	     "Allow GO in MCC mode to accept different BI than STA's")

/*
 *
 * <ini>
 * gDualMacFeatureDisable - Disable Dual MAC feature.
 * @Min: 0
 * @Max: 6
 * @Default: 6
 *
 * This ini is used to enable/disable dual MAC feature.
 * 0 - enable DBS
 * 1 - disable DBS
 * 2 - disable DBS for connection but keep DBS for scan
 * 3 - disable DBS for connection but keep DBS scan with async
 * scan policy disabled
 * 4 - enable DBS for connection as well as for scan with async
 * scan policy disabled
 * 5 - enable DBS for connection but disable DBS for scan.
 * 6 - enable DBS for connection but disable simultaneous scan
 * from upper layer (DBS scan remains enabled in FW).
 *
 * Note: INI item value should match 'enum dbs_support'
 *
 * Related: None.
 *
 * Supported Feature: DBS
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_DUAL_MAC_FEATURE_DISABLE \
CFG_INI_UINT("gDualMacFeatureDisable", 0, 6, 6, CFG_VALUE_OR_DEFAULT, \
	     "This INI is used to enable/disable Dual MAC feature")

/*
 *
 * <ini>
 * enable_sbs - Enable/Disable SBS.
 * @Min: 0
 * @Max: 1
 * @Default: 1
 *
 * This ini is used to enable/disable SBS feature.
 * 0 - disable SBS
 * 1 - enable SBS
 *
 *
 * Related: None.
 *
 * Supported Feature: SBS
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_ENABLE_SBS CFG_INI_BOOL(\
					"enable_sbs", \
					true, \
					"Enable/Disable SBS")

/*
 * <ini>
 * g_sta_sap_scc_on_dfs_chan - Allow STA+SAP SCC on DFS channel with master
 * mode support disabled.
 * @Min: 0
 * @Max: 2
 * @Default: 2
 *
 * This ini is used to allow STA+SAP SCC on DFS channel with master mode
 * support disabled, the value is defined by enum PM_AP_DFS_MASTER_MODE.
 * 0 - Disallow STA+SAP SCC on DFS channel
 * 1 - Allow STA+SAP SCC on DFS channel with master mode disabled
 *       This needs gEnableDFSMasterCap enabled to allow SAP SCC with
 *       STA on DFS but dfs master mode disabled. Single SAP is not allowed
 *       on DFS.
 * 2 - enhance "1" with below requirement
 *	 a. Allow single SAP (GO) start on DFS channel.
 *	 b. Allow CAC process on DFS channel in single SAP (GO) mode
 *	 c. Allow DFS radar event process in single SAP (GO) mode
 *	 d. Disallow CAC and radar event process in SAP (GO) + STA mode.
 *	 The value 2 of this ini requires master mode to be enabled so it is
 *	 mandatory to enable the dfs master mode ini gEnableDFSMasterCap
 *	 along with it.
 *
 * Related: None.
 *
 * Supported Feature: Non-DBS, DBS
 *
 * Usage: External
 *
 * </ini>
 */

#define CFG_STA_SAP_SCC_ON_DFS_CHAN \
CFG_INI_UINT("g_sta_sap_scc_on_dfs_chan", 0, 2, 2, CFG_VALUE_OR_DEFAULT, \
	     "Allow STA+SAP SCC on DFS channel with master mode disable")

/*
 * <ini>
 * sta_sap_scc_on_indoor_chan - Allow STA+SAP SCC on indoor channel
 * when STA is connected on indoor channel.
 * @Min: false
 * @Max: true
 * @Default: false
 *
 * This ini is used to allow STA+SAP SCC on indoor channel
 * 0 - Disallow STA+SAP SCC on Indoor only channel
 * 1 - Allow STA+SAP SCC on DFS channel. SAP will move to indoor channel
 * once STA is connected on indoor only channel.
 * When gindoor_channel_support=1, this ini will not be considered and
 * SAP can come up on indoor channel.
 *
 * Related: gindoor_channel_support.
 *
 * Supported Feature: Non-DBS, DBS
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_STA_SAP_SCC_ON_INDOOR_CHAN CFG_INI_BOOL(\
			"sta_sap_scc_on_indoor_chan", \
			false, \
			"Allow STA+SAP SCC on indoor channel")

/*
 * <ini>
 * gForce1x1Exception - force 1x1 when connecting to certain peer
 * @Min: 0
 * @Max: 2
 * @Default: 2
 *
 * This INI when enabled will force 1x1 connection with certain peer.
 * The implementation for this ini would be as follows:-
 * Value 0: Even if the AP is present in OUI, 1x1 will not be forced
 * Value 1: If antenna sharing supported, then only do 1x1.
 * Value 2: If AP present in OUI, force 1x1 connection.

 *
 * Related: None
 *
 * Supported Feature: connection
 *
 * Usage: External
 *
 * </ini>
 */

#define CFG_FORCE_1X1_FEATURE \
CFG_INI_UINT("gForce1x1Exception", 0, 2, 1, CFG_VALUE_OR_DEFAULT, \
	     "force 1x1 when connecting to certain peer")

/*
 * <ini>
 * gEnableSAPManadatoryChanList - Enable SAP Mandatory channel list
 * Options.
 * @Min: 0
 * @Max: 1
 * @Default: 0
 *
 * This ini is used to enable/disable the SAP manadatory chan list
 * 0 - Disable SAP mandatory chan list
 * 1 - Enable SAP mandatory chan list
 *
 * Supported Feature: SAP
 *
 *
 * Usage: External
 *
 * </ini>
 */

#define CFG_ENABLE_SAP_MANDATORY_CHAN_LIST \
CFG_INI_UINT("gEnableSAPManadatoryChanList", 0, 1, 0, CFG_VALUE_OR_DEFAULT, \
	     "Enable SAP Mandatory channel list")

/*
 * <ini>
 * g_nan_sap_scc_on_lte_coex_chan - Allow NAN+SAP SCC on LTE coex channel
 * @Min: 0
 * @Max: 1
 * @Default: 1
 *
 * This ini is used to allow NAN+SAP SCC on LTE coex channel
 * 0 - Disallow NAN+SAP SCC on LTE coex channel
 * 1 - Allow NAN+SAP SCC on LTE coex channel
 *
 * Related: Depends on gWlanMccToSccSwitchMode config.
 *
 * Supported Feature: Non-DBS, DBS
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_NAN_SAP_SCC_ON_LTE_COEX_CHAN \
CFG_INI_BOOL("g_nan_sap_scc_on_lte_coex_chan", 1, \
	     "Allow NAN+SAP SCC on LTE coex channel")

/*
 * <ini>
 * g_sta_sap_scc_on_lte_coex_chan - Allow STA+SAP SCC on LTE coex channel
 * @Min: 0
 * @Max: 1
 * @Default: 1
 *
 * This ini is used to allow STA+SAP SCC on LTE coex channel
 * 0 - Disallow STA+SAP SCC on LTE coex channel
 * 1 - Allow STA+SAP SCC on LTE coex channel
 *
 * Related: None.
 *
 * Supported Feature: Non-DBS, DBS
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_STA_SAP_SCC_ON_LTE_COEX_CHAN \
CFG_INI_UINT("g_sta_sap_scc_on_lte_coex_chan", 0, 1, 1, CFG_VALUE_OR_DEFAULT, \
	     "Allow STA+SAP SCC on LTE coex channel")

/*
 * <ini>
 * g_mark_sap_indoor_as_disable - Enable/Disable Indoor channel
 * @Min: 0
 * @Max: 1
 * @Default: 0
 *
 * This ini is used to mark the Indoor channel as
 * disable when SAP start and revert it on SAP stop,
 * so SAP will not turn on indoor channel and
 * sta will not scan/associate and roam on indoor
 * channels.
 *
 * Related: If g_mark_sap_indoor_as_disable set, turn the
 * indoor channels to disable and update Wiphy & fw.
 *
 * Supported Feature: SAP/STA
 *
 * Usage: External
 *
 * </ini>
 */

#define CFG_MARK_INDOOR_AS_DISABLE_FEATURE \
CFG_INI_UINT("g_mark_sap_indoor_as_disable", 0, 1, 0, CFG_VALUE_OR_DEFAULT, \
	     "Enable/Disable Indoor channel")

/*
 * <ini>
 * g_enable_go_force_scc - Enable/Disable force SCC on P2P GO
 * @Min: 0
 * @Max: 2
 * @Default: 0
 *
 * This ini and along with "gWlanMccToSccSwitchMode" is used to enable
 * force SCC on P2P GO interface.
 *
 * GO_FORCE_SCC_DISABLED (value 0): GO force scc disabled and GO can come up
 * in MCC mode
 * GO_FORCE_SCC_STRICT (value 1): New GO will be forced to form on existing
 * GO/STA/GC channel in start bss itself.
 * GO_FORCE_SCC_LIBERAL (value 2): After SET KEY is done, do force SCC for the
 * first GO to move to new GO channel.
 *
 * Supported Feature: P2P GO
 *
 * Usage: External
 *
 * </ini>
 */

#define CFG_P2P_GO_ENABLE_FORCE_SCC \
CFG_INI_UINT("g_enable_go_force_scc", 0, 2, 0, CFG_VALUE_OR_DEFAULT, \
	     "Enable/Disable P2P GO force SCC")

/*
 * <ini>
 * g_pcl_band_priority - Set 5G/6G Channel order
 * Options.
 * @Min: 0
 * @Max: 1
 * @Default: 0
 *
 * This ini is used to set preference between 5G and 6G channels during
 * PCL population.
 * 0 - Prefer 5G channels, 5G channels will be placed before the 6G channels
 *	in PCL.
 * 1 - Prefer 6G channels, 6G channels will be placed before the 5G channels
 *	in PCL.
 *
 * Supported Feature: STA, SAP
 *
 *
 * Usage: External
 *
 * </ini>
 */

#define CFG_PCL_BAND_PRIORITY \
CFG_INI_UINT("g_pcl_band_priority", 0, 1, 0, CFG_VALUE_OR_DEFAULT, \
	     "Set 5G and 6G Channel order")

/*
 * <ini>
 * g_multi_sap_allowed_on_same_band - Allow multi sap started on same band
 * @Min: 0
 * @Max: 1
 * @Default: 1
 *
 * This ini is used to allow multi sap started on same band or not.
 * 0 - Disallow multi sap started on same band
 * 1 - Allow multi sap started on same band
 *
 * Supported Feature: SAP
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_MULTI_SAP_ALLOWED_ON_SAME_BAND \
CFG_INI_BOOL("g_multi_sap_allowed_on_same_band", 1, \
	     "Allow multi SAP started on same band")

#ifdef WLAN_FEATURE_SR
/*
 * <ini>
 * g_enable_sr_in_same_mac_conc - Enable/Disable SR in same MAC concurrency
 * @Min: 0
 * @Max: 1
 * @Default: 1
 *
 * This ini is used to enable/disable SR in same MAC concurrency scenarios.
 * 0 - disable SR in same mac concurrency
 * 1 - enable SR in same mac concurrency
 *
 * Ex- If 1st connection STA operating on MAC0 has enabled Spatial Reuse
 * already. Then if user tries to bring-up 2nd connection SAP on MAC0
 * (STA + SAP (SCC)).
 * Now if this INI is not set to 1, then Spatial Reuse gets disabled for
 * all the interfaces running on MAC0. Once 2nd connection or concurrency
 * interface is disabled, Spatial Reuse gets enabled again.
 *
 * Related: None.
 *
 * Supported Feature: Spatial Reuse
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_ENABLE_SR_IN_SAME_MAC_CONC \
CFG_INI_BOOL("g_enable_sr_in_same_mac_conc", 1, \
	     "Enable/Disable SR in Same MAC concurrency")

#define CFG_SPATIAL_REUSE CFG(CFG_ENABLE_SR_IN_SAME_MAC_CONC)
#else
#define CFG_SPATIAL_REUSE
#endif

/*
 * <ini>
 * g_use_original_bw_for_sap_restart - Set sap default BW when do restart
 * @Min: 0
 * @Max: 1
 * @Default: 0
 *
 * This ini is used to set sap default BW when do restart.
 * 0 - Use maximum BW as default BW
 * 1 - Use sap original BW as default BW
 *
 * Supported Feature: SAP
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_SAP_DEFAULT_BW_FOR_RESTART \
CFG_INI_BOOL("g_use_original_bw_for_sap_restart", 0, \
	     "Use SAP original bandwidth when do restart")

/*
 * <ini>
 * g_move_sap_go_1st_on_dfs_sta_csa - Move SAP / GO first to enforce scc
 * @Min: 0
 * @Max: 1
 * @Default: 0
 *
 * This ini moves SAP / GO first to enforce scc in STA+SAP (GO) DFS SCC
 * 0 - Keep default MCC to SCC enforcement movement
 * 1 - Move SAP / GO first before STA's movement to non-DFS channel
 *
 * In STA+SAP / GO concurrency, SCC is enforced by moving SAP / GO
 * to STA's operating channel. STA side, if there is a CSA
 * then SCC will be enforced only after STA moves to new channel.
 *
 * In usecase of STA + GO SCC on DFS channel, CSA is sent with no-TX
 * and STA's movement will only happen once CSA count becomes 0.
 * This will block data transmission till then, which will have bad
 * user experience in case of XR where, it needs to have periodic data
 * transmission in every 1 second with GO interface.
 *
 * To resolve this, it is better to move GO / SAP first to allow 1
 * second periodic transmissions. And once the STA moves to new channel,
 * existing logic will be triggered to enforce SCC.
 *
 * This INI is added to change the behavior only in this specific case.
 * If this INI is set, then move SAP / GO first upon receiving very first
 * CSA from AP to a non-DFS channel. Current MCC to SCC rules will be applied
 * once STA moves to new channel after CSA count becomes 0.
 *
 * Dependency: g_sta_sap_scc_on_dfs_chan, g_enable_go_force_scc
 *
 * Supported Feature: SAP / P2P-GO
 *
 * Usage: External
 *
 * </ini>
 */
#define CFG_MOVE_SAP_GO_1ST_ON_DFS_STA_CSA \
CFG_INI_BOOL("g_move_sap_go_1st_on_dfs_sta_csa", 0, \
	     "Move SAP / GO first to enforce scc on dfs sta csa")

#define CFG_POLICY_MGR_ALL \
		CFG(CFG_MCC_TO_SCC_SWITCH) \
		CFG(CFG_CONC_SYS_PREF) \
		CFG(CFG_MAX_CONC_CXNS) \
		CFG(CFG_DBS_SELECTION_PLCY) \
		CFG(CFG_VDEV_CUSTOM_PRIORITY_LIST) \
		CFG(CFG_CHNL_SELECT_LOGIC_CONC) \
		CFG(CFG_ENABLE_CONC_RULE1) \
		CFG(CFG_ENABLE_CONC_RULE2) \
		CFG(CFG_ENABLE_MCC_ADAPTIVE_SCH_ENABLED_NAME)\
		CFG(CFG_ENABLE_STA_CONNECTION_IN_5GHZ)\
		CFG(CFG_DUAL_MAC_FEATURE_DISABLE)\
		CFG(CFG_ENABLE_SBS)\
		CFG(CFG_STA_SAP_SCC_ON_DFS_CHAN)\
		CFG(CFG_STA_SAP_SCC_ON_INDOOR_CHAN)\
		CFG(CFG_FORCE_1X1_FEATURE)\
		CFG(CFG_ENABLE_SAP_MANDATORY_CHAN_LIST)\
		CFG(CFG_STA_SAP_SCC_ON_LTE_COEX_CHAN)\
		CFG(CFG_NAN_SAP_SCC_ON_LTE_COEX_CHAN) \
		CFG(CFG_MARK_INDOOR_AS_DISABLE_FEATURE)\
		CFG(CFG_ALLOW_MCC_GO_DIFF_BI) \
		CFG(CFG_P2P_GO_ENABLE_FORCE_SCC) \
		CFG(CFG_PCL_BAND_PRIORITY) \
		CFG(CFG_MULTI_SAP_ALLOWED_ON_SAME_BAND) \
		CFG_SPATIAL_REUSE \
		CFG(CFG_SAP_DEFAULT_BW_FOR_RESTART) \
		CFG(CFG_MOVE_SAP_GO_1ST_ON_DFS_STA_CSA)
#endif
