xref: /wlan-driver/qcacld-3.0/core/hdd/inc/wlan_hdd_cfg.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
6*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name  * above copyright notice and this permission notice appear in all
8*5113495bSYour Name  * copies.
9*5113495bSYour Name  *
10*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name  */
19*5113495bSYour Name 
20*5113495bSYour Name #if !defined(HDD_CONFIG_H__)
21*5113495bSYour Name #define HDD_CONFIG_H__
22*5113495bSYour Name 
23*5113495bSYour Name /**
24*5113495bSYour Name  * DOC: wlan_hdd_config.h
25*5113495bSYour Name  *
26*5113495bSYour Name  * WLAN Adapter Configuration functions
27*5113495bSYour Name  */
28*5113495bSYour Name 
29*5113495bSYour Name /* $HEADER$ */
30*5113495bSYour Name 
31*5113495bSYour Name /* Include files */
32*5113495bSYour Name #include <wlan_hdd_includes.h>
33*5113495bSYour Name #include <wlan_hdd_wmm.h>
34*5113495bSYour Name #include <qdf_types.h>
35*5113495bSYour Name #include <csr_api.h>
36*5113495bSYour Name #include <sap_api.h>
37*5113495bSYour Name #include <sir_mac_prot_def.h>
38*5113495bSYour Name #include "osapi_linux.h"
39*5113495bSYour Name #include <wmi_unified.h>
40*5113495bSYour Name #include "wlan_pmo_hw_filter_public_struct.h"
41*5113495bSYour Name #include "wlan_action_oui_public_struct.h"
42*5113495bSYour Name #include "hdd_config.h"
43*5113495bSYour Name 
44*5113495bSYour Name struct hdd_context;
45*5113495bSYour Name 
46*5113495bSYour Name #define CFG_DP_RPS_RX_QUEUE_CPU_MAP_LIST_LEN 30
47*5113495bSYour Name 
48*5113495bSYour Name #define FW_MODULE_LOG_LEVEL_STRING_LENGTH  (512)
49*5113495bSYour Name #define TX_SCHED_WRR_PARAMS_NUM            (5)
50*5113495bSYour Name 
51*5113495bSYour Name /* Defines for all of the things we read from the configuration (registry). */
52*5113495bSYour Name 
53*5113495bSYour Name #ifdef CONFIG_DP_TRACE
54*5113495bSYour Name /* Max length of gDptraceConfig string. e.g.- "1, 6, 1, 62" */
55*5113495bSYour Name #define DP_TRACE_CONFIG_STRING_LENGTH		(20)
56*5113495bSYour Name 
57*5113495bSYour Name /* At max 4 DP Trace config parameters are allowed. Refer - gDptraceConfig */
58*5113495bSYour Name #define DP_TRACE_CONFIG_NUM_PARAMS		(4)
59*5113495bSYour Name 
60*5113495bSYour Name /*
61*5113495bSYour Name  * Default value of live mode in case it cannot be determined from cfg string
62*5113495bSYour Name  * gDptraceConfig
63*5113495bSYour Name  */
64*5113495bSYour Name #define DP_TRACE_CONFIG_DEFAULT_LIVE_MODE	(1)
65*5113495bSYour Name 
66*5113495bSYour Name /*
67*5113495bSYour Name  * Default value of thresh (packets/second) beyond which DP Trace is disabled.
68*5113495bSYour Name  * Use this default in case the value cannot be determined from cfg string
69*5113495bSYour Name  * gDptraceConfig
70*5113495bSYour Name  */
71*5113495bSYour Name #define DP_TRACE_CONFIG_DEFAULT_THRESH		(6)
72*5113495bSYour Name 
73*5113495bSYour Name /*
74*5113495bSYour Name  * Number of intervals of BW timer to wait before enabling/disabling DP Trace.
75*5113495bSYour Name  * Since throughput threshold to disable live logging for DP Trace is very low,
76*5113495bSYour Name  * we calculate throughput based on # packets received in a second.
77*5113495bSYour Name  * For example assuming bandwidth timer interval is 100ms, and if more than 6
78*5113495bSYour Name  * prints are received in 10 * 100 ms interval, we want to disable DP Trace
79*5113495bSYour Name  * live logging. DP_TRACE_CONFIG_DEFAULT_THRESH_TIME_LIMIT is the default
80*5113495bSYour Name  * value, to be used in case the real value cannot be derived from
81*5113495bSYour Name  * bw timer interval
82*5113495bSYour Name  */
83*5113495bSYour Name #define DP_TRACE_CONFIG_DEFAULT_THRESH_TIME_LIMIT (10)
84*5113495bSYour Name 
85*5113495bSYour Name /* Default proto bitmap in case its missing in gDptraceConfig string */
86*5113495bSYour Name #define DP_TRACE_CONFIG_DEFAULT_BITMAP \
87*5113495bSYour Name 			(QDF_NBUF_PKT_TRAC_TYPE_EAPOL |\
88*5113495bSYour Name 			QDF_NBUF_PKT_TRAC_TYPE_DHCP |\
89*5113495bSYour Name 			QDF_NBUF_PKT_TRAC_TYPE_MGMT_ACTION |\
90*5113495bSYour Name 			QDF_NBUF_PKT_TRAC_TYPE_ARP |\
91*5113495bSYour Name 			QDF_NBUF_PKT_TRAC_TYPE_ICMP |\
92*5113495bSYour Name 			QDF_NBUF_PKT_TRAC_TYPE_ICMPv6)\
93*5113495bSYour Name 
94*5113495bSYour Name /* Default verbosity, in case its missing in gDptraceConfig string*/
95*5113495bSYour Name #define DP_TRACE_CONFIG_DEFAULT_VERBOSTY QDF_DP_TRACE_VERBOSITY_LOW
96*5113495bSYour Name 
97*5113495bSYour Name #endif
98*5113495bSYour Name 
99*5113495bSYour Name /*
100*5113495bSYour Name  * Type declarations
101*5113495bSYour Name  */
102*5113495bSYour Name 
103*5113495bSYour Name struct hdd_config {
104*5113495bSYour Name 	/* Config parameters */
105*5113495bSYour Name 	enum hdd_dot11_mode dot11Mode;
106*5113495bSYour Name 
107*5113495bSYour Name #ifdef FEATURE_WLAN_DYNAMIC_CVM
108*5113495bSYour Name 	/* Bitmap for operating voltage corner mode */
109*5113495bSYour Name 	uint32_t vc_mode_cfg_bitmap;
110*5113495bSYour Name #endif
111*5113495bSYour Name #ifdef ENABLE_MTRACE_LOG
112*5113495bSYour Name 	bool enable_mtrace;
113*5113495bSYour Name #endif
114*5113495bSYour Name 	bool advertise_concurrent_operation;
115*5113495bSYour Name #ifdef DHCP_SERVER_OFFLOAD
116*5113495bSYour Name 	struct dhcp_server dhcp_server_ip;
117*5113495bSYour Name #endif /* DHCP_SERVER_OFFLOAD */
118*5113495bSYour Name 	bool apf_enabled;
119*5113495bSYour Name 	uint16_t sap_tx_leakage_threshold;
120*5113495bSYour Name 	bool sap_internal_restart;
121*5113495bSYour Name 	bool is_11k_offload_supported;
122*5113495bSYour Name 	bool is_unit_test_framework_enabled;
123*5113495bSYour Name 	bool disable_channel;
124*5113495bSYour Name 
125*5113495bSYour Name 	/* HDD converged ini items are listed below this*/
126*5113495bSYour Name 	bool bug_on_reinit_failure;
127*5113495bSYour Name 	bool is_ramdump_enabled;
128*5113495bSYour Name 	uint32_t iface_change_wait_time;
129*5113495bSYour Name 	uint8_t multicast_host_fw_msgs;
130*5113495bSYour Name 	enum hdd_wext_control private_wext_control;
131*5113495bSYour Name 	bool enablefwprint;
132*5113495bSYour Name 	uint8_t enable_fw_log;
133*5113495bSYour Name 
134*5113495bSYour Name #ifdef WLAN_LOGGING_SOCK_SVC_ENABLE
135*5113495bSYour Name 	/* WLAN Logging */
136*5113495bSYour Name 	bool wlan_logging_enable;
137*5113495bSYour Name 	uint32_t wlan_console_log_levels;
138*5113495bSYour Name 	uint8_t host_log_custom_nl_proto;
139*5113495bSYour Name #endif /* WLAN_LOGGING_SOCK_SVC_ENABLE */
140*5113495bSYour Name 
141*5113495bSYour Name #ifdef FEATURE_WLAN_AUTO_SHUTDOWN
142*5113495bSYour Name 	uint32_t wlan_auto_shutdown;
143*5113495bSYour Name #endif
144*5113495bSYour Name 
145*5113495bSYour Name #ifndef REMOVE_PKT_LOG
146*5113495bSYour Name 	bool enable_packet_log;
147*5113495bSYour Name #endif
148*5113495bSYour Name 
149*5113495bSYour Name #ifdef WLAN_FEATURE_MSCS
150*5113495bSYour Name 	uint32_t mscs_pkt_threshold;
151*5113495bSYour Name 	uint32_t mscs_voice_interval;
152*5113495bSYour Name #endif /* WLAN_FEATURE_MSCS */
153*5113495bSYour Name 
154*5113495bSYour Name #ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
155*5113495bSYour Name 	uint32_t tx_flow_low_watermark;
156*5113495bSYour Name 	uint32_t tx_flow_hi_watermark_offset;
157*5113495bSYour Name 	uint32_t tx_flow_max_queue_depth;
158*5113495bSYour Name 	uint32_t tx_lbw_flow_low_watermark;
159*5113495bSYour Name 	uint32_t tx_lbw_flow_hi_watermark_offset;
160*5113495bSYour Name 	uint32_t tx_lbw_flow_max_queue_depth;
161*5113495bSYour Name 	uint32_t tx_hbw_flow_low_watermark;
162*5113495bSYour Name 	uint32_t tx_hbw_flow_hi_watermark_offset;
163*5113495bSYour Name 	uint32_t tx_hbw_flow_max_queue_depth;
164*5113495bSYour Name #endif /* QCA_LL_LEGACY_TX_FLOW_CONTROL */
165*5113495bSYour Name 	uint32_t napi_cpu_affinity_mask;
166*5113495bSYour Name 	uint32_t operating_chan_freq;
167*5113495bSYour Name 	uint8_t num_vdevs;
168*5113495bSYour Name 	uint8_t enable_concurrent_sta[CFG_CONCURRENT_IFACE_MAX_LEN];
169*5113495bSYour Name 	uint8_t dbs_scan_selection[CFG_DBS_SCAN_PARAM_LENGTH];
170*5113495bSYour Name #ifdef FEATURE_RUNTIME_PM
171*5113495bSYour Name 	uint8_t runtime_pm;
172*5113495bSYour Name #endif
173*5113495bSYour Name #ifdef WLAN_FEATURE_WMI_SEND_RECV_QMI
174*5113495bSYour Name 	bool is_qmi_stats_enabled;
175*5113495bSYour Name #endif
176*5113495bSYour Name 	uint8_t inform_bss_rssi_raw;
177*5113495bSYour Name 
178*5113495bSYour Name 	bool mac_provision;
179*5113495bSYour Name 	uint32_t provisioned_intf_pool;
180*5113495bSYour Name 	uint32_t derived_intf_pool;
181*5113495bSYour Name 	uint32_t cfg_wmi_credit_cnt;
182*5113495bSYour Name 	uint32_t enable_sar_conversion;
183*5113495bSYour Name #ifdef WLAN_FEATURE_TSF_PLUS
184*5113495bSYour Name 	uint8_t tsf_ptp_options;
185*5113495bSYour Name #endif /* WLAN_FEATURE_TSF_PLUS */
186*5113495bSYour Name 
187*5113495bSYour Name #ifdef SAR_SAFETY_FEATURE
188*5113495bSYour Name 	uint32_t sar_safety_timeout;
189*5113495bSYour Name 	uint32_t sar_safety_unsolicited_timeout;
190*5113495bSYour Name 	uint32_t sar_safety_req_resp_timeout;
191*5113495bSYour Name 	uint32_t sar_safety_req_resp_retry;
192*5113495bSYour Name 	uint32_t sar_safety_index;
193*5113495bSYour Name 	uint32_t sar_safety_sleep_index;
194*5113495bSYour Name 	uint8_t enable_sar_safety;
195*5113495bSYour Name 	bool config_sar_safety_sleep_index;
196*5113495bSYour Name #endif
197*5113495bSYour Name 	uint8_t nb_commands_interval;
198*5113495bSYour Name 
199*5113495bSYour Name #ifdef FEATURE_CLUB_LL_STATS_AND_GET_STATION
200*5113495bSYour Name 	uint32_t sta_stats_cache_expiry_time;
201*5113495bSYour Name #endif
202*5113495bSYour Name 	bool read_mac_addr_from_mac_file;
203*5113495bSYour Name #ifdef FEATURE_SET
204*5113495bSYour Name 	bool get_wifi_features;
205*5113495bSYour Name #endif
206*5113495bSYour Name #ifdef FEATURE_RUNTIME_PM
207*5113495bSYour Name 	uint16_t cpu_cxpc_threshold;
208*5113495bSYour Name #endif
209*5113495bSYour Name 	bool exclude_selftx_from_cca_busy;
210*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO
211*5113495bSYour Name 	/* ml link state cache expiry time*/
212*5113495bSYour Name 	qdf_time_t link_state_cache_expiry_time;
213*5113495bSYour Name #endif
214*5113495bSYour Name };
215*5113495bSYour Name 
216*5113495bSYour Name /**
217*5113495bSYour Name  * hdd_to_csr_wmm_mode() - Utility function to convert HDD to CSR WMM mode
218*5113495bSYour Name  *
219*5113495bSYour Name  * @mode: hdd WMM user mode
220*5113495bSYour Name  *
221*5113495bSYour Name  * Return: CSR WMM mode
222*5113495bSYour Name  */
223*5113495bSYour Name enum wmm_user_mode hdd_to_csr_wmm_mode(uint8_t mode);
224*5113495bSYour Name 
225*5113495bSYour Name QDF_STATUS hdd_update_mac_config(struct hdd_context *hdd_ctx);
226*5113495bSYour Name QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx);
227*5113495bSYour Name QDF_STATUS hdd_set_policy_mgr_user_cfg(struct hdd_context *hdd_ctx);
228*5113495bSYour Name QDF_STATUS hdd_set_sme_chan_list(struct hdd_context *hdd_ctx);
229*5113495bSYour Name bool hdd_update_config_cfg(struct hdd_context *hdd_ctx);
230*5113495bSYour Name void hdd_cfg_get_global_config(struct hdd_context *hdd_ctx, char *buf,
231*5113495bSYour Name 			       int buflen);
232*5113495bSYour Name 
233*5113495bSYour Name eCsrPhyMode hdd_cfg_xlate_to_csr_phy_mode(enum hdd_dot11_mode dot11Mode);
234*5113495bSYour Name 
235*5113495bSYour Name QDF_STATUS hdd_set_idle_ps_config(struct hdd_context *hdd_ctx, bool val);
236*5113495bSYour Name void hdd_get_pmkid_modes(struct hdd_context *hdd_ctx,
237*5113495bSYour Name 			 struct pmkid_mode_bits *pmkid_modes);
238*5113495bSYour Name 
239*5113495bSYour Name int hdd_update_tgt_cfg(hdd_handle_t hdd_handle, struct wma_tgt_cfg *cfg);
240*5113495bSYour Name 
241*5113495bSYour Name /**
242*5113495bSYour Name  * hdd_string_to_u8_array() - used to convert decimal string into u8 array
243*5113495bSYour Name  * @str: Decimal string
244*5113495bSYour Name  * @array: Array where converted value is stored
245*5113495bSYour Name  * @len: Length of the populated array
246*5113495bSYour Name  * @array_max_len: Maximum length of the array
247*5113495bSYour Name  *
248*5113495bSYour Name  * This API is called to convert decimal string (each byte separated by
249*5113495bSYour Name  * a comma) into an u8 array
250*5113495bSYour Name  *
251*5113495bSYour Name  * Return: QDF_STATUS
252*5113495bSYour Name  */
253*5113495bSYour Name QDF_STATUS hdd_string_to_u8_array(char *str, uint8_t *array,
254*5113495bSYour Name 				  uint8_t *len, uint16_t array_max_len);
255*5113495bSYour Name 
256*5113495bSYour Name QDF_STATUS hdd_hex_string_to_u16_array(char *str, uint16_t *int_array,
257*5113495bSYour Name 				uint8_t *len, uint8_t int_array_max_len);
258*5113495bSYour Name 
259*5113495bSYour Name void hdd_cfg_print_global_config(struct hdd_context *hdd_ctx);
260*5113495bSYour Name 
261*5113495bSYour Name /**
262*5113495bSYour Name  * hdd_update_nss() - Update the number of spatial streams supported.
263*5113495bSYour Name  * @link_info: Link info pointer in HDD adapter
264*5113495bSYour Name  * @tx_nss: the number of Tx spatial streams to be updated
265*5113495bSYour Name  * @rx_nss: the number of Rx spatial streams to be updated
266*5113495bSYour Name  *
267*5113495bSYour Name  * This function is used to modify the number of spatial streams
268*5113495bSYour Name  * supported when not in connected state.
269*5113495bSYour Name  *
270*5113495bSYour Name  * Return: QDF_STATUS_SUCCESS if nss is correctly updated,
271*5113495bSYour Name  *              otherwise QDF_STATUS_E_FAILURE would be returned
272*5113495bSYour Name  */
273*5113495bSYour Name QDF_STATUS hdd_update_nss(struct wlan_hdd_link_info *link_info,
274*5113495bSYour Name 			  uint8_t tx_nss, uint8_t rx_nss);
275*5113495bSYour Name 
276*5113495bSYour Name /**
277*5113495bSYour Name  * hdd_get_nss() - Get the number of spatial streams supported by the adapter
278*5113495bSYour Name  *
279*5113495bSYour Name  * @adapter: the pointer to adapter
280*5113495bSYour Name  * @nss: the number of spatial streams supported by the adapter
281*5113495bSYour Name  *
282*5113495bSYour Name  * This function is used to get the number of spatial streams supported by
283*5113495bSYour Name  * the adapter.
284*5113495bSYour Name  *
285*5113495bSYour Name  * Return: QDF_STATUS
286*5113495bSYour Name  */
287*5113495bSYour Name QDF_STATUS hdd_get_nss(struct hdd_adapter *adapter, uint8_t *nss);
288*5113495bSYour Name 
289*5113495bSYour Name /**
290*5113495bSYour Name  * hdd_get_num_tx_chains() - Get the number of tx chains supported by the
291*5113495bSYour Name  * adapter
292*5113495bSYour Name  * @link_info: Link info pointer in HDD adapter
293*5113495bSYour Name  * @tx_chains: the number of Tx chains supported by the adapter
294*5113495bSYour Name  *
295*5113495bSYour Name  * This function is used to get the number of Tx chains supported by
296*5113495bSYour Name  * the adapter.
297*5113495bSYour Name  *
298*5113495bSYour Name  * Return: QDF_STATUS
299*5113495bSYour Name  */
300*5113495bSYour Name QDF_STATUS hdd_get_num_tx_chains(struct wlan_hdd_link_info *link_info,
301*5113495bSYour Name 				 uint8_t *tx_chains);
302*5113495bSYour Name 
303*5113495bSYour Name /**
304*5113495bSYour Name  * hdd_get_tx_nss() - Get the number of spatial streams supported by the adapter
305*5113495bSYour Name  * @link_info: Link info pointer in HDD adapter
306*5113495bSYour Name  * @tx_nss: the number Tx of spatial streams supported by the adapter
307*5113495bSYour Name  *
308*5113495bSYour Name  * This function is used to get the number of Tx spatial streams supported by
309*5113495bSYour Name  * the adapter.
310*5113495bSYour Name  *
311*5113495bSYour Name  * Return: QDF_STATUS
312*5113495bSYour Name  */
313*5113495bSYour Name QDF_STATUS hdd_get_tx_nss(struct wlan_hdd_link_info *link_info,
314*5113495bSYour Name 			  uint8_t *tx_nss);
315*5113495bSYour Name 
316*5113495bSYour Name /**
317*5113495bSYour Name  * hdd_get_num_rx_chains() - Get the number of chains supported by the adapter
318*5113495bSYour Name  * @link_info: Link info pointer in HDD adapter
319*5113495bSYour Name  * @rx_chains: the number of Rx chains supported by the adapter
320*5113495bSYour Name  *
321*5113495bSYour Name  * This function is used to get the number of Rx chains supported by
322*5113495bSYour Name  * the adapter.
323*5113495bSYour Name  *
324*5113495bSYour Name  * Return: QDF_STATUS
325*5113495bSYour Name  */
326*5113495bSYour Name QDF_STATUS hdd_get_num_rx_chains(struct wlan_hdd_link_info *link_info,
327*5113495bSYour Name 				 uint8_t *rx_chains);
328*5113495bSYour Name 
329*5113495bSYour Name /**
330*5113495bSYour Name  * hdd_get_rx_nss() - Get the number of spatial streams supported by the adapter
331*5113495bSYour Name  * @link_info: Link info pointer in HDD adapter
332*5113495bSYour Name  * @rx_nss: the number Rx of spatial streams supported by the adapter
333*5113495bSYour Name  *
334*5113495bSYour Name  * This function is used to get the number of Rx spatial streams supported by
335*5113495bSYour Name  * the adapter.
336*5113495bSYour Name  *
337*5113495bSYour Name  * Return: QDF_STATUS
338*5113495bSYour Name  */
339*5113495bSYour Name QDF_STATUS hdd_get_rx_nss(struct wlan_hdd_link_info *link_info,
340*5113495bSYour Name 			  uint8_t *rx_nss);
341*5113495bSYour Name 
342*5113495bSYour Name 
343*5113495bSYour Name /**
344*5113495bSYour Name  * hdd_dfs_indicate_radar() - Block tx as radar found on the channel
345*5113495bSYour Name  * @hdd_ctx: HDD context pointer
346*5113495bSYour Name  *
347*5113495bSYour Name  * This function is invoked in atomic context when a radar
348*5113495bSYour Name  * is found on the SAP current operating channel and Data Tx
349*5113495bSYour Name  * from netif has to be stopped to honor the DFS regulations.
350*5113495bSYour Name  * Actions: Stop the netif Tx queues,Indicate Radar present
351*5113495bSYour Name  * in HDD context for future usage.
352*5113495bSYour Name  *
353*5113495bSYour Name  * Return: true on success, else false
354*5113495bSYour Name  */
355*5113495bSYour Name bool hdd_dfs_indicate_radar(struct hdd_context *hdd_ctx);
356*5113495bSYour Name 
357*5113495bSYour Name /**
358*5113495bSYour Name  * hdd_restore_all_ps() - Restore all the powersave configuration overwritten
359*5113495bSYour Name  * by hdd_override_all_ps.
360*5113495bSYour Name  * @hdd_ctx: Pointer to HDD context.
361*5113495bSYour Name  *
362*5113495bSYour Name  * Return: None
363*5113495bSYour Name  */
364*5113495bSYour Name void hdd_restore_all_ps(struct hdd_context *hdd_ctx);
365*5113495bSYour Name 
366*5113495bSYour Name /**
367*5113495bSYour Name  * hdd_override_all_ps() - overrides to disables all the powersave features.
368*5113495bSYour Name  * @hdd_ctx: Pointer to HDD context.
369*5113495bSYour Name  * Overrides below powersave ini configurations.
370*5113495bSYour Name  * gEnableImps=0
371*5113495bSYour Name  * gEnableBmps=0
372*5113495bSYour Name  * gRuntimePM=0
373*5113495bSYour Name  * gWlanAutoShutdown = 0
374*5113495bSYour Name  * gEnableWoW=0
375*5113495bSYour Name  *
376*5113495bSYour Name  * Return: None
377*5113495bSYour Name  */
378*5113495bSYour Name void hdd_override_all_ps(struct hdd_context *hdd_ctx);
379*5113495bSYour Name 
380*5113495bSYour Name /**
381*5113495bSYour Name  * hdd_vendor_mode_to_phymode() - Get eCsrPhyMode according to vendor phy mode
382*5113495bSYour Name  * @vendor_phy_mode: vendor phy mode
383*5113495bSYour Name  * @csr_phy_mode: phy mode of eCsrPhyMode
384*5113495bSYour Name  *
385*5113495bSYour Name  * Return: 0 on success, negative errno value on error
386*5113495bSYour Name  */
387*5113495bSYour Name int hdd_vendor_mode_to_phymode(enum qca_wlan_vendor_phy_mode vendor_phy_mode,
388*5113495bSYour Name 			       eCsrPhyMode *csr_phy_mode);
389*5113495bSYour Name 
390*5113495bSYour Name /**
391*5113495bSYour Name  * hdd_phymode_to_vendor_mode() - Get vendor phy mode according to CSR phy mode.
392*5113495bSYour Name  * @csr_phy_mode: phy mode of eCsrPhyMode
393*5113495bSYour Name  * @vendor_phy_mode: vendor phy mode
394*5113495bSYour Name  *
395*5113495bSYour Name  * Return: 0 on success, negative error value on failure
396*5113495bSYour Name  */
397*5113495bSYour Name int hdd_phymode_to_vendor_mode(eCsrPhyMode csr_phy_mode,
398*5113495bSYour Name 			       enum qca_wlan_vendor_phy_mode *vendor_phy_mode);
399*5113495bSYour Name 
400*5113495bSYour Name /**
401*5113495bSYour Name  * hdd_vendor_mode_to_band() - Get band_info according to vendor phy mode
402*5113495bSYour Name  * @vendor_phy_mode: vendor phy mode
403*5113495bSYour Name  * @supported_band: supported band bitmap
404*5113495bSYour Name  * @is_6ghz_supported: whether 6ghz is supported
405*5113495bSYour Name  *
406*5113495bSYour Name  * Return: 0 on success, negative errno value on error
407*5113495bSYour Name  */
408*5113495bSYour Name int hdd_vendor_mode_to_band(enum qca_wlan_vendor_phy_mode vendor_phy_mode,
409*5113495bSYour Name 			    uint8_t *supported_band, bool is_6ghz_supported);
410*5113495bSYour Name 
411*5113495bSYour Name /**
412*5113495bSYour Name  * hdd_vendor_mode_to_bonding_mode() - Get channel bonding mode according to
413*5113495bSYour Name  * vendor phy mode
414*5113495bSYour Name  * @vendor_phy_mode: vendor phy mode
415*5113495bSYour Name  * @bonding_mode: channel bonding mode
416*5113495bSYour Name  *
417*5113495bSYour Name  * Return: 0 on success, negative errno value on error
418*5113495bSYour Name  */
419*5113495bSYour Name int
420*5113495bSYour Name hdd_vendor_mode_to_bonding_mode(enum qca_wlan_vendor_phy_mode vendor_phy_mode,
421*5113495bSYour Name 				uint32_t *bonding_mode);
422*5113495bSYour Name 
423*5113495bSYour Name /**
424*5113495bSYour Name  * hdd_phymode_to_dot11_mode() - Mapping phymode to dot11mode
425*5113495bSYour Name  * @phymode: phy mode
426*5113495bSYour Name  * @dot11_mode: dot11 mode
427*5113495bSYour Name  *
428*5113495bSYour Name  * Return: 0 on success, negative errno value on error
429*5113495bSYour Name  */
430*5113495bSYour Name int hdd_phymode_to_dot11_mode(eCsrPhyMode phymode,
431*5113495bSYour Name 			      enum hdd_dot11_mode *dot11_mode);
432*5113495bSYour Name 
433*5113495bSYour Name /**
434*5113495bSYour Name  * hdd_update_phymode() - update the PHY mode of the adapter
435*5113495bSYour Name  * @adapter: adapter being modified
436*5113495bSYour Name  * @phymode: new PHY mode for the adapter
437*5113495bSYour Name  * @supported_band: supported band bitmap for the adapter
438*5113495bSYour Name  * @bonding_mode: new channel bonding mode for the adapter
439*5113495bSYour Name  *
440*5113495bSYour Name  * This function is called when the adapter is set to a new PHY mode.
441*5113495bSYour Name  * It takes a holistic look at the desired PHY mode along with the
442*5113495bSYour Name  * configured capabilities of the driver and the reported capabilities
443*5113495bSYour Name  * of the hardware in order to correctly configure all PHY-related
444*5113495bSYour Name  * parameters.
445*5113495bSYour Name  *
446*5113495bSYour Name  * Return: 0 on success, negative errno value on error
447*5113495bSYour Name  */
448*5113495bSYour Name int hdd_update_phymode(struct hdd_adapter *adapter, eCsrPhyMode phymode,
449*5113495bSYour Name 		       uint8_t supported_band, uint32_t bonding_mode);
450*5113495bSYour Name 
451*5113495bSYour Name /**
452*5113495bSYour Name  * hdd_get_ldpc() - Get adapter LDPC
453*5113495bSYour Name  * @adapter: adapter being queried
454*5113495bSYour Name  * @value: where to store the value
455*5113495bSYour Name  *
456*5113495bSYour Name  * Return: 0 on success, negative errno on failure
457*5113495bSYour Name  */
458*5113495bSYour Name int hdd_get_ldpc(struct hdd_adapter *adapter, int *value);
459*5113495bSYour Name 
460*5113495bSYour Name /**
461*5113495bSYour Name  * hdd_set_ldpc() - Set adapter LDPC
462*5113495bSYour Name  * @link_info: Link info pointer in adapter
463*5113495bSYour Name  * @value: new LDPC value
464*5113495bSYour Name  *
465*5113495bSYour Name  * Return: 0 on success, negative errno on failure
466*5113495bSYour Name  */
467*5113495bSYour Name int hdd_set_ldpc(struct wlan_hdd_link_info *link_info, int value);
468*5113495bSYour Name 
469*5113495bSYour Name /**
470*5113495bSYour Name  * hdd_get_tx_stbc() - Get adapter TX STBC
471*5113495bSYour Name  * @adapter: adapter being queried
472*5113495bSYour Name  * @value: where to store the value
473*5113495bSYour Name  *
474*5113495bSYour Name  * Return: 0 on success, negative errno on failure
475*5113495bSYour Name  */
476*5113495bSYour Name int hdd_get_tx_stbc(struct hdd_adapter *adapter, int *value);
477*5113495bSYour Name 
478*5113495bSYour Name /**
479*5113495bSYour Name  * hdd_set_tx_stbc() - Set adapter TX STBC
480*5113495bSYour Name  * @link_info: Link info pointer in HDD adapter
481*5113495bSYour Name  * @value: new TX STBC value
482*5113495bSYour Name  *
483*5113495bSYour Name  * Return: 0 on success, negative errno on failure
484*5113495bSYour Name  */
485*5113495bSYour Name int hdd_set_tx_stbc(struct wlan_hdd_link_info *link_info, int value);
486*5113495bSYour Name 
487*5113495bSYour Name /**
488*5113495bSYour Name  * hdd_get_rx_stbc() - Get adapter RX STBC
489*5113495bSYour Name  * @adapter: adapter being queried
490*5113495bSYour Name  * @value: where to store the value
491*5113495bSYour Name  *
492*5113495bSYour Name  * Return: 0 on success, negative errno on failure
493*5113495bSYour Name  */
494*5113495bSYour Name int hdd_get_rx_stbc(struct hdd_adapter *adapter, int *value);
495*5113495bSYour Name 
496*5113495bSYour Name /**
497*5113495bSYour Name  * hdd_set_rx_stbc() - Set adapter RX STBC
498*5113495bSYour Name  * @link_info: Link info pointer in HDD adapter
499*5113495bSYour Name  * @value: new RX STBC value
500*5113495bSYour Name  *
501*5113495bSYour Name  * Return: 0 on success, negative errno on failure
502*5113495bSYour Name  */
503*5113495bSYour Name int hdd_set_rx_stbc(struct wlan_hdd_link_info *link_info, int value);
504*5113495bSYour Name 
505*5113495bSYour Name /**
506*5113495bSYour Name  * hdd_update_channel_width() - Update adapter channel width settings
507*5113495bSYour Name  * @link_info: Link info in HDD adapter
508*5113495bSYour Name  * @chwidth: new channel width of enum eSirMacHTChannelWidth
509*5113495bSYour Name  * @bonding_mode: channel bonding mode of the new channel width
510*5113495bSYour Name  * @link_id: mlo link id
511*5113495bSYour Name  * @is_restore: is restore
512*5113495bSYour Name  *
513*5113495bSYour Name  * Return: 0 on success, negative errno on failure
514*5113495bSYour Name  */
515*5113495bSYour Name int hdd_update_channel_width(struct wlan_hdd_link_info *link_info,
516*5113495bSYour Name 			     enum eSirMacHTChannelWidth chwidth,
517*5113495bSYour Name 			     uint32_t bonding_mode, uint8_t link_id,
518*5113495bSYour Name 			     bool is_restore);
519*5113495bSYour Name #endif /* end #if !defined(HDD_CONFIG_H__) */
520