1 /*
2  * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for
6  * any purpose with or without fee is hereby granted, provided that the
7  * above copyright notice and this permission notice appear in all
8  * copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 /**
21  * DOC: cds_config.h
22  *
23  * Defines the configuration Information for various modules. Default values
24  * are read from the INI file and saved into cds_config_info which are passed
25  * to various modules for the initialization.
26  */
27 
28 #if !defined(__CDS_CONFIG_H)
29 #define __CDS_CONFIG_H
30 
31 #include "osdep.h"
32 #include "cdp_txrx_mob_def.h"
33 #include "wlan_cmn.h"
34 #include "wlan_cmn_ieee80211.h"
35 #include "wlan_pmo_common_public_struct.h"
36 #include "qca_vendor.h"
37 #include "wmi_unified_param.h"
38 
39 /**
40  * enum cfg_sub_20_channel_width: ini values for su 20 MHz channel width
41  * @WLAN_SUB_20_CH_WIDTH_NONE: No sub-20 MHz channel width
42  * @WLAN_SUB_20_CH_WIDTH_5: Use 5 MHz channel width
43  * @WLAN_SUB_20_CH_WIDTH_10: Use 10 MHz channel width
44  */
45 enum cfg_sub_20_channel_width {
46 	WLAN_SUB_20_CH_WIDTH_NONE = 0,
47 	WLAN_SUB_20_CH_WIDTH_5 = 1,
48 	WLAN_SUB_20_CH_WIDTH_10 = 2,
49 };
50 
51 #ifdef FEATURE_SET
52 /**
53  * struct wlan_cds_feature_set - CDS feature set struct
54  * @wifi_standard: Supported wifi standard
55  * @sap_5g_supported: 5GHz SAP supported or not
56  * @sap_6g_supported: 6GHz SAP supported or no
57  * @band_capability: Supported band capability bitmap;
58  */
59 struct wlan_cds_feature_set {
60 	WMI_HOST_WIFI_STANDARD wifi_standard;
61 	bool sap_5g_supported;
62 	bool sap_6g_supported;
63 	uint32_t band_capability;
64 };
65 #endif
66 
67 /**
68  * struct cds_config_info - Place Holder for cds configuration
69  * @max_station: Max station supported
70  * @max_bssid: Max Bssid Supported
71  * @sta_maxlimod_dtim: station max listen interval
72  * @sta_maxlimod_dtim_ms: station max listen interval ms
73  * @driver_type: Enumeration of Driver Type whether FTM or Mission mode
74  * currently rest of bits are not used
75  * Indicates whether support is enabled or not
76  * @ap_disable_intrabss_fwd: pass intra-bss-fwd info to txrx module
77  * @ap_maxoffload_peers: max offload peer
78  * @ap_maxoffload_reorderbuffs: max offload reorder buffs
79  * @is_ra_ratelimit_enabled: Indicate RA rate limit enabled or not
80  * @reorder_offload: is RX re-ordering offloaded to the fw
81  * @dfs_pri_multiplier: dfs radar pri multiplier
82  * @uc_offload_enabled: IPA Micro controller data path offload enable flag
83  * @enable_rxthread: Rx processing in thread from TXRX
84  * @tx_flow_stop_queue_th: Threshold to stop queue in percentage
85  * @tx_flow_start_queue_offset: Start queue offset in percentage
86  * @enable_dp_rx_threads: enable dp rx threads
87  * @is_lpass_enabled: Indicate whether LPASS is enabled or not
88  * @tx_chain_mask_cck: Tx chain mask enabled or not
89  * @sub_20_channel_width: Sub 20 MHz ch width, ini intersected with fw cap
90  * @max_msdus_per_rxinorderind:
91  * @self_recovery_enabled:
92  * @fw_timeout_crash: Indicate whether crash host when fw timesout or not
93  * @ac_specs:
94  * @ito_repeat_count: Indicates ito repeated count
95  * @force_target_assert_enabled: Indicate whether target assert enabled or not
96  * @bandcapability: Configured band by user
97  * @rps_enabled: RPS enabled in SAP mode
98  * Structure for holding cds ini parameters.
99  * @num_vdevs: Configured max number of VDEVs can be supported in the stack.
100  * @enable_tx_compl_tsf64:
101  * @cds_feature_set: CDS feature set structure.
102  * @get_wifi_features: Get wifi features from fw
103  * @exclude_selftx_from_cca_busy: Exclude selx tx time from cca busy time
104  */
105 
106 struct cds_config_info {
107 	uint16_t max_station;
108 	uint16_t max_bssid;
109 	uint8_t sta_maxlimod_dtim;
110 	uint16_t sta_maxlimod_dtim_ms;
111 	enum qdf_driver_type driver_type;
112 	uint8_t ap_maxoffload_peers;
113 	uint8_t ap_maxoffload_reorderbuffs;
114 	uint8_t reorder_offload;
115 	uint8_t uc_offload_enabled;
116 	bool enable_rxthread;
117 #if defined(QCA_LL_TX_FLOW_CONTROL_V2) || defined(QCA_LL_PDEV_TX_FLOW_CONTROL)
118 	uint32_t tx_flow_stop_queue_th;
119 	uint32_t tx_flow_start_queue_offset;
120 #endif
121 	uint8_t enable_dp_rx_threads;
122 #ifdef WLAN_FEATURE_LPSS
123 	bool is_lpass_enabled;
124 #endif
125 	enum cfg_sub_20_channel_width sub_20_channel_width;
126 	uint8_t max_msdus_per_rxinorderind;
127 	bool self_recovery_enabled;
128 	bool fw_timeout_crash;
129 	struct ol_tx_sched_wrr_ac_specs_t ac_specs[QCA_WLAN_AC_ALL];
130 	uint8_t ito_repeat_count;
131 	bool force_target_assert_enabled;
132 	uint8_t bandcapability;
133 	bool rps_enabled;
134 	uint32_t num_vdevs;
135 	bool enable_tx_compl_tsf64;
136 #ifdef FEATURE_SET
137 	struct wlan_cds_feature_set cds_feature_set;
138 	bool get_wifi_features;
139 #endif
140 	bool exclude_selftx_from_cca_busy;
141 };
142 #endif /* !defined( __CDS_CONFIG_H ) */
143