/* * 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. */ /** * DOC: This file contains centralized definitions of converged configuration. */ #ifndef __CFG_MLME_ACS_H #define __CFG_MLME_ACS_H /* * * acs_with_more_param- Enable acs calculation with more param. * @Min: 0 * @Max: 1 * @Default: 1 * * This ini is used to enable acs calculation with more param. * * Related: NA * * Supported Feature: ACS * * Usage: External * * */ #define CFG_ACS_WITH_MORE_PARAM CFG_INI_BOOL( \ "acs_with_more_param", \ 1, \ "Enable ACS with more param") /* * * AutoChannelSelectWeight - ACS channel weight * @Min: 0 * @Max: 0xFFFFFFFF * @Default: 0x00fafafa * * This ini is used to adjust weight of factors in * acs algorithm. * * Supported Feature: ACS * * Usage: External * * bits 0-3: rssi weight * bits 4-7: bss count weight * bits 8-11: noise floor weight * bits 12-15: channel free weight * bits 16-19: tx power range weight * bits 20-23: tx power throughput weight * bits 24-31: reserved * * */ #define CFG_AUTO_CHANNEL_SELECT_WEIGHT CFG_INI_UINT( \ "AutoChannelSelectWeight", \ 0, \ 0xFFFFFFFF, \ 0x00fafafa, \ CFG_VALUE_OR_DEFAULT, \ "Adjust weight factor in ACS") /* * * gvendor_acs_support - vendor based channel selection manager * @Min: 0 * @Max: 1 * @Default: 0 * * Enabling this parameter will force driver to use user application based * channel selection algo instead of driver based auto channel selection * logic. * * Supported Feature: ACS * * Usage: External * * */ #define CFG_USER_AUTO_CHANNEL_SELECTION CFG_INI_BOOL( \ "gvendor_acs_support", \ 0, \ "Vendor channel selection manager") /* * * gacs_support_for_dfs_lte_coex - acs support for lte coex and dfs event * @Min: 0 * @Max: 1 * @Default: 0 * * Enabling this parameter will force driver to use user application based * channel selection algo for channel selection in case of dfs and lte * coex event. * * Supported Feature: ACS * * Usage: Internal * * */ #define CFG_USER_ACS_DFS_LTE CFG_INI_BOOL( \ "gacs_support_for_dfs_lte_coex", \ 0, \ "Acs support for lte coex and dfs") /* * * acs_policy - External ACS policy control * @Min: 0 * @Max: 1 * @Default: 1 * * Values are per enum hdd_external_acs_policy. * * This ini is used to control the external ACS policy. * * 0 -Preferable for ACS to select a * channel with non-zero pcl weight. * 1 -Mandatory for ACS to select a * channel with non-zero pcl weight. * * Related: None * * Supported Feature: ACS * * Usage: External * * */ #define CFG_EXTERNAL_ACS_POLICY CFG_INI_BOOL( \ "acs_policy", \ 1, \ "External ACS Policy Control") #define ACS_WEIGHT_MAX_STR_LEN 500 /* * * normalize_acs_weight - Used to control the ACS channel weightage. * * This ini is used to specify the weight percentage of the channel. Channel * weights can be controlled by user to prioritize or de-prioritize channels. * * Related: ACS * * Supported Feature: ACS * * Usage: External * * */ #define CFG_NORMALIZE_ACS_WEIGHT CFG_INI_STRING( \ "normalize_acs_weight", \ 0, \ ACS_WEIGHT_MAX_STR_LEN, \ "2407-5875=40, 5945-7125=90, 5975=100, 6055=100, 6135=100, 6215=100, 6295=100, 6375=100, 6615=100, 6695=100, 6775=100, 6855=100", \ "Used to specify the channel weights") /* * * force_start_sap- Enable the SAP even if no channel is suitable for SAP * @Min: 0 * @Max: 1 * @Default: 0 * * This ini is used to enable the SAP even if no channel is found suitable * for SAP by ACS. * * Related: NA * * Supported Feature: ACS * * Usage: Internal * * */ #define CFG_ACS_FORCE_START_SAP CFG_INI_BOOL( \ "force_start_sap", \ 0, \ "Force start SAP") /* * * acs_prefer_6ghz_psc - Select 6 GHz PSC channel as priority * @Min: 0 * @Max: 1 * @Default: 1 * * This config is used to configure ACS logic to select PSC channel as * perefered result. "normalize_acs_weight" INI can make the PSC * channel priority higher than NON PSC, but it is for a single channel's * weight, for bw 160 or bw 80 combined channel weight, it has less * help. * * Related: None * * Supported Feature: ACS * * Usage: Internal * * */ #define CFG_ACS_PREFER_6GHZ_PSC CFG_BOOL( \ "acs_prefer_6ghz_psc", \ 1, \ "Select 6 GHz PSC channel as priority") /* * * np_chan_weight - chan weightage for non preferred channels * @Min: 0x00000000 * @Max: 0x64646464 * @Default: 0x00000000 * * This INI give percentage value of weights to be considered in the ACS algo * for the non preferred channels. the distribution of the channel type is:- * Example:- If the percentage of lets say DFS channels is set to 50%, and * the weight comes out to be x, then we would increase the weight of DFS * channels by 50% ( 100 - y% set in INI), so that it gets de-prioritized in * the ACS sorted channel list, the lesser the weight, the better the channel. * So the channel with more weight is less likely to be selected. So by default * the np chan weightage for DFS is set to 0, that is it will be assigned max * weightage, so no probality of getting selected, as for standlaone, DFS is not * recommended (it takes 60 sec/10min to start depending upon channel type). * * Indexes are defined in this way. * 0 Index (BITS 0-7): DFS - Def 1% * 1 Index (BITS 8-15): Reserved * 2 Index (BITS 16-23): Reserved * 3 Index (BITS 24-31): Reserved * These percentage values are stored in HEX. Max can be 0x64 * Supported Feature: ACS * * Usage: External * * */ #define CFG_ACS_NP_CHAN_WEIGHT CFG_INI_UINT( \ "np_chan_weight", \ 0x00000000, \ 0x64646464, \ 0x00000001, \ CFG_VALUE_OR_DEFAULT, \ "np chan weight") #define CFG_ACS_ALL \ CFG(CFG_ACS_WITH_MORE_PARAM) \ CFG(CFG_AUTO_CHANNEL_SELECT_WEIGHT) \ CFG(CFG_USER_AUTO_CHANNEL_SELECTION) \ CFG(CFG_USER_ACS_DFS_LTE) \ CFG(CFG_EXTERNAL_ACS_POLICY) \ CFG(CFG_NORMALIZE_ACS_WEIGHT) \ CFG(CFG_ACS_PREFER_6GHZ_PSC) \ CFG(CFG_ACS_FORCE_START_SAP) \ CFG(CFG_ACS_NP_CHAN_WEIGHT) #endif /* __CFG_MLME_ACS_H */