1 /*
2  * Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2021-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 #ifndef __WLAN_CFG_H
21 #define __WLAN_CFG_H
22 
23 #include <wlan_init_cfg.h>
24 
25 /* DP process status */
26 #if defined(MAX_PDEV_CNT) && (MAX_PDEV_CNT == 1)
27 #define CONFIG_PROCESS_RX_STATUS 1
28 #define CONFIG_PROCESS_TX_STATUS 1
29 #else
30 #define CONFIG_PROCESS_RX_STATUS 0
31 #define CONFIG_PROCESS_TX_STATUS 0
32 #endif
33 
34 /* Miscellaneous configuration */
35 #define MAX_IDLE_SCATTER_BUFS 16
36 #define DP_MAX_IRQ_PER_CONTEXT 12
37 #define MAX_HTT_METADATA_LEN 32
38 #define DP_MAX_TIDS 17
39 #define DP_NON_QOS_TID 16
40 #define DP_NULL_DATA_TID 17
41 
42 #ifdef CONFIG_BERYLLIUM
43 #define WLAN_CFG_RX_FST_MAX_SEARCH 16
44 #else
45 #define WLAN_CFG_RX_FST_MAX_SEARCH 2
46 #endif
47 #define WLAN_CFG_RX_FST_TOEPLITZ_KEYLEN 40
48 
49 #define INVALID_PDEV_ID 0xFF
50 
51 #define WLAN_CFG_RX_RING_MASK_0 0x1
52 #define WLAN_CFG_RX_RING_MASK_1 0x2
53 #define WLAN_CFG_RX_RING_MASK_2 0x4
54 #define WLAN_CFG_RX_RING_MASK_3 0x8
55 #define WLAN_CFG_RX_RING_MASK_4 0x10
56 #define WLAN_CFG_RX_RING_MASK_5 0x20
57 #define WLAN_CFG_RX_RING_MASK_6 0x40
58 #define WLAN_CFG_RX_RING_MASK_7 0x80
59 
60 #ifdef WLAN_FEATURE_NEAR_FULL_IRQ
61 #ifdef IPA_OFFLOAD
62 #define WLAN_CFG_RX_NEAR_FULL_IRQ_MASK_1 (WLAN_CFG_RX_RING_MASK_0 |	\
63 					  WLAN_CFG_RX_RING_MASK_1 |	\
64 					  WLAN_CFG_RX_RING_MASK_2)
65 
66 #define WLAN_CFG_RX_NEAR_FULL_IRQ_MASK_2 (WLAN_CFG_RX_RING_MASK_4 |	\
67 					  WLAN_CFG_RX_RING_MASK_5 |	\
68 					  WLAN_CFG_RX_RING_MASK_6)
69 
70 #define WLAN_CFG_TX_RING_NEAR_FULL_IRQ_MASK (WLAN_CFG_TX_RING_MASK_0 | \
71 					     WLAN_CFG_TX_RING_MASK_4 | \
72 					     WLAN_CFG_TX_RING_MASK_2)
73 
74 #else
75 #define WLAN_CFG_RX_NEAR_FULL_IRQ_MASK_1 (WLAN_CFG_RX_RING_MASK_0 |	\
76 					  WLAN_CFG_RX_RING_MASK_1 |	\
77 					  WLAN_CFG_RX_RING_MASK_2 |	\
78 					  WLAN_CFG_RX_RING_MASK_3)
79 
80 #define WLAN_CFG_RX_NEAR_FULL_IRQ_MASK_2 (WLAN_CFG_RX_RING_MASK_4 |	\
81 					  WLAN_CFG_RX_RING_MASK_5 |	\
82 					  WLAN_CFG_RX_RING_MASK_6 |	\
83 					  WLAN_CFG_RX_RING_MASK_7)
84 
85 #ifdef QCA_WIFI_KIWI_V2
86 #define WLAN_CFG_TX_RING_NEAR_FULL_IRQ_MASK (WLAN_CFG_TX_RING_MASK_0 | \
87 					     WLAN_CFG_TX_RING_MASK_4 | \
88 					     WLAN_CFG_TX_RING_MASK_2 | \
89 					     WLAN_CFG_TX_RING_MASK_5 | \
90 					     WLAN_CFG_TX_RING_MASK_6)
91 #else /* !QCA_WIFI_KIWI_V2 */
92 #define WLAN_CFG_TX_RING_NEAR_FULL_IRQ_MASK (WLAN_CFG_TX_RING_MASK_0 | \
93 					     WLAN_CFG_TX_RING_MASK_4 | \
94 					     WLAN_CFG_TX_RING_MASK_2 | \
95 					     WLAN_CFG_TX_RING_MASK_6 | \
96 					     WLAN_CFG_TX_RING_MASK_7)
97 #endif /* QCA_WIFI_KIWI_V2 */
98 #endif
99 #endif
100 
101 /* Max number of chips that can participate in MLO */
102 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
103 #define WLAN_MAX_MLO_CHIPS 4
104 #define WLAN_MAX_MLO_LINKS_PER_SOC 2
105 #else
106 #define WLAN_MAX_MLO_CHIPS 1
107 #endif
108 
109 #define UMAC_RESET_IPC 451
110 
111 struct wlan_cfg_dp_pdev_ctxt;
112 
113 /**
114  * struct wlan_cfg_tcl_wbm_ring_num_map - TCL WBM Ring number mapping
115  * @tcl_ring_num: TCL Ring number
116  * @wbm_ring_num: WBM Ring number
117  * @wbm_rbm_id: WBM RBM ID to be used when enqueuing to TCL
118  * @for_ipa: whether this TCL/WBM for IPA use or not
119  */
120 struct wlan_cfg_tcl_wbm_ring_num_map {
121 	uint8_t tcl_ring_num;
122 	uint8_t wbm_ring_num;
123 	uint8_t wbm_rbm_id;
124 	uint8_t for_ipa;
125 };
126 
127 /**
128  * struct wlan_srng_cfg - Per ring configuration parameters
129  * @timer_threshold: Config to control interrupts based on timer duration
130  * @batch_count_threshold: Config to control interrupts based on
131  * number of packets in the ring
132  * @low_threshold: Config to control low threshold interrupts for SRC rings
133  */
134 struct wlan_srng_cfg {
135 	uint32_t timer_threshold;
136 	uint32_t batch_count_threshold;
137 	uint32_t low_threshold;
138 };
139 
140 /**
141  * struct wlan_cfg_dp_soc_ctxt - Configuration parameters for SoC (core TxRx)
142  * @num_int_ctxts: Number of NAPI/Interrupt contexts to be registered for DP
143  * @max_clients: Maximum number of peers/stations supported by device
144  * @max_alloc_size: Maximum allocation size for any dynamic memory
145  *			allocation request for this device
146  * @per_pdev_tx_ring: 0: TCL ring is not mapped per radio
147  *		       1: Each TCL ring is mapped to one radio/pdev
148  * @num_tx_comp_rings: Number of Tx comp rings supported by device
149  * @num_tcl_data_rings: Number of TCL Data rings supported by device
150  * @num_nss_tcl_data_rings:
151  * @per_pdev_rx_ring: 0: REO ring is not mapped per radio
152  *		       1: Each REO ring is mapped to one radio/pdev
153  * @per_pdev_lmac_ring:
154  * @num_reo_dest_rings:
155  * @num_nss_reo_dest_rings:
156  * @num_tx_desc_pool: Number of Tx Descriptor pools
157  * @num_tx_ext_desc_pool: Number of Tx MSDU extension Descriptor pools
158  * @num_global_tx_desc: Number of Global Tx Descriptors allowed
159  * @num_global_spcl_tx_desc: Number of Global special Tx Descriptors allowed
160  * @num_tx_desc: Number of Tx Descriptors per pool
161  * @num_tx_spl_desc: Number of Tx Descriptors per pool to handle special frames
162  * @min_tx_desc: Minimum number of Tx Descriptors per pool
163  * @num_tx_ext_desc: Number of Tx MSDU extension Descriptors per pool
164  * @max_peer_id: Maximum value of peer id that FW can assign for a client
165  * @htt_packet_type: Default 802.11 encapsulation type for any VAP created
166  * @int_tx_ring_mask: Bitmap of Tx interrupts mapped to each NAPI/Intr context
167  * @int_rx_ring_mask: Bitmap of Rx interrupts mapped to each NAPI/Intr context
168  * @int_batch_threshold_ppe2tcl:
169  * @int_timer_threshold_ppe2tcl:
170  * @int_batch_threshold_tx:
171  * @int_timer_threshold_tx:
172  * @int_batch_threshold_rx:
173  * @int_timer_threshold_rx:
174  * @int_batch_threshold_other:
175  * @int_timer_threshold_other:
176  * @int_batch_threshold_mon_dest: Batch threshold counter for monitor dest
177  * @int_timer_threshold_mon_dest: Timer threshold counter for monitor dest
178  * @tx_ring_size:
179  * @time_control_bp:
180  * @rx_buffer_size: skb size
181  * @qref_control_size: list size for memory history arrays
182  * @tx_comp_ring_size:
183  * @tx_comp_ring_size_nss:
184  * @int_rx_mon_ring_mask: Bitmap of Rx monitor ring interrupts mapped to each
185  *			  NAPI/Intr context
186  * @int_tx_mon_ring_mask: Bitmap of Tx monitor ring interrupts mapped to each
187  *			  NAPI/Intr context
188  * @int_host2rxdma_mon_ring_mask:
189  * @int_rxdma2host_mon_ring_mask:
190  * @int_ce_ring_mask: Bitmap of CE interrupts mapped to each NAPI/Intr context
191  * @int_rx_err_ring_mask: Bitmap of Rx err ring interrupts mapped to each
192  *			  NAPI/Intr context
193  * @int_rx_wbm_rel_ring_mask: Bitmap of wbm rel ring interrupts mapped to each
194  *			      NAPI/Intr context
195  * @int_reo_status_ring_mask: Bitmap of reo status ring interrupts mapped to
196  *                            each NAPI/Intr context
197  * @int_rxdma2host_ring_mask:
198  * @int_host2rxdma_ring_mask:
199  * @int_rx_ring_near_full_irq_1_mask: Bitmap of REO DST ring near full interrupt
200  *				mapped to each NAPI/INTR context
201  * @int_rx_ring_near_full_irq_2_mask: Bitmap of REO DST ring near full interrupt
202  *				mapped to each NAPI/INTR context
203  * @int_tx_ring_near_full_irq_mask: Bitmap of Tx completion ring near full
204  *				interrupt mapped to each NAPI/INTR context
205  * @int_host2txmon_ring_mask: Bitmap of Tx monitor source ring interrupt
206  *				mapped to each NAPI/INTR context
207  * @int_ppeds_wbm_release_ring_mask:
208  * @int_ppe2tcl_ring_mask:
209  * @int_reo2ppe_ring_mask:
210  * @int_umac_reset_intr_mask: Bitmap of UMAC reset interrupt mapped to each
211  * NAPI/INTR context
212  * @hw_macid:
213  * @hw_macid_pdev_id_map:
214  * @base_hw_macid:
215  * @rx_hash: Enable hash based steering of rx packets
216  * @tso_enabled: enable/disable tso feature
217  * @lro_enabled: enable/disable LRO feature
218  * @sg_enabled: enable disable scatter gather feature
219  * @gro_enabled: enable disable GRO feature
220  * @tc_based_dynamic_gro: enable/disable tc based dynamic gro
221  * @tc_ingress_prio: ingress prio to be checked for dynamic gro
222  * @ipa_enabled: Flag indicating if IPA is enabled
223  * @ol_tx_csum_enabled: Flag indicating if TX csum is enabled
224  * @ol_rx_csum_enabled: Flag indicating if Rx csum is enabled
225  * @rawmode_enabled: Flag indicating if RAW mode is enabled
226  * @peer_flow_ctrl_enabled: Flag indicating if peer flow control is enabled
227  * @napi_enabled: enable/disable interrupt mode for reaping tx and rx packets
228  * @p2p_tcp_udp_checksumoffload: enable/disable checksum offload for P2P mode
229  * @nan_tcp_udp_checksumoffload: enable/disable checksum offload for NAN mode
230  * @tcp_udp_checksumoffload: enable/disable checksum offload
231  * @legacy_mode_checksumoffload_disable:
232  * @defrag_timeout_check:
233  * @nss_cfg: nss configuration
234  * @tx_flow_stop_queue_threshold:
235  * @tx_flow_start_queue_offset:
236  * @rx_defrag_min_timeout: rx defrag minimum timeout
237  * @reo_dst_ring_size:
238  * @wbm_release_ring: wbm release ring size
239  * @tcl_cmd_credit_ring: tcl command/credit ring size
240  * @tcl_status_ring: tcl status ring size
241  * @reo_reinject_ring: reo reinject ring
242  * @rx_release_ring: rx release ring size
243  * @reo_exception_ring: reo exception ring size
244  * @reo_cmd_ring: reo cmd ring size
245  * @reo_status_ring: reo status ting size
246  * @rxdma_refill_ring: rxdma refill ring size
247  * @rxdma_refill_lt_disable: rxdma refill low threshold disable
248  * @rxdma_err_dst_ring: rxdma error destination ring size
249  * @per_pkt_trace:
250  * @raw_mode_war: enable/disable raw mode war
251  * @enable_data_stall_detection: enable/disable specific data stall detection
252  * @disable_intra_bss_fwd: flag to disable intra bss forwarding
253  * @rxdma1_enable: flag to indicate if rxdma1 is enabled
254  * @delay_mon_replenish: delay monitor buffer replenish
255  * @max_ast_idx:
256  * @tx_desc_limit_0: tx_desc limit for 5 GHz High
257  * @tx_desc_limit_1: tx_desc limit for 2 GHz
258  * @tx_desc_limit_2: tx_desc limit for 5 GHz Low
259  * @tx_device_limit: tx device limit
260  * @tx_spl_device_limit: tx device limit for special frames
261  * @tx_sw_internode_queue: tx sw internode queue
262  * @mon_drop_thresh:
263  * @tx_comp_loop_pkt_limit: Max # of packets to be processed in 1 tx comp loop
264  * @rx_reap_loop_pkt_limit: Max # of packets to be processed in 1 rx reap loop
265  * @rx_hp_oos_update_limit: Max # of HP OOS (out of sync) updates
266  * @rx_enable_eol_data_check: flag to enable check for more ring data at end of
267  *                            dp_rx_process loop
268  * @tx_comp_enable_eol_data_check: flag to enable/disable checking for more data
269  *                                at end of tx_comp_handler loop.
270  * @rx_sw_desc_weight: rx sw descriptor weight configuration
271  * @rx_sw_desc_num:
272  * @is_rx_mon_protocol_flow_tag_enabled: flag to enable/disable RX protocol or
273  *                                       flow tagging in monitor/mon-lite mode
274  * @is_rx_flow_tag_enabled: flag to enable/disable RX flow tagging using FSE
275  * @is_rx_flow_search_table_per_pdev: flag to indicate if a per-SOC or per-pdev
276  *                                    table should be used
277  * @rx_flow_search_table_size: indicates the number of flows in the flow search
278  *                             table
279  * @rx_flow_max_search: max skid length for each hash entry
280  * @rx_toeplitz_hash_key: toeplitz key pointer used for hash computation over
281  *                        5 tuple flow entry
282  * @pktlog_buffer_size: packet log buffer size
283  * @is_rx_fisa_enabled: flag to enable/disable FISA Rx
284  * @is_rx_fisa_lru_del_enabled:
285  * @is_tso_desc_attach_defer:
286  * @delayed_replenish_entries:
287  * @reo_rings_mapping:
288  * @rx_rings_mapping: DP RX rings mapping mask
289  * @pext_stats_enabled: Flag to enable and disabled peer extended stats
290  * @is_rx_buff_pool_enabled: flag to enable/disable emergency RX buffer
291  *                           pool support
292  * @is_rx_refill_buff_pool_enabled: flag to enable/disable RX refill buffer
293  *                           pool support
294  * @enable_dp_buf_page_frag_alloc: Flag to control DP allocation from page frag
295  *				   cache.
296  * @rx_refill_buff_pool_size: RX refill buffer pool size
297  * @rx_pending_high_threshold: threshold of starting pkt drop
298  * @rx_pending_low_threshold: threshold of stopping pkt drop
299  * @is_poll_mode_enabled:
300  * @is_swlm_enabled: flag to enable/disable SWLM
301  * @fst_in_cmem:
302  * @tx_per_pkt_vdev_id_check: Enable tx perpkt vdev id check
303  * @radio0_rx_default_reo:
304  * @radio1_rx_default_reo:
305  * @radio2_rx_default_reo:
306  * @wow_check_rx_pending_enable: Enable RX frame pending check in WoW
307  * @jitter_stats_enabled: true if jitter stats are enabled
308  * @peer_link_stats_enabled: true if MLO Peer Link stats are enabled
309  * @ipa_tx_ring_size: IPA tx ring size
310  * @ipa_tx_comp_ring_size: IPA tx completion ring size
311  * @ipa_tx_alt_ring_size: IPA tx alt ring size
312  * @ipa_tx_alt_comp_ring_size: IPA tx alt completion ring size
313  * @hw_cc_enabled: cookie conversion enabled
314  * @tcl_wbm_map_array: TCL-WBM map array
315  * @ppeds_enable: Enable PPE Direct Switch feature
316  * @reo2ppe_ring: REO2PPE ring size
317  * @ppe2tcl_ring: PPE2TCL ring size
318  * @ppeds_num_tx_desc: Number of tx descs for PPE DS
319  * @ppeds_tx_comp_napi_budget: Napi budget for tx completions
320  * @ppeds_tx_desc_hotlist_len: PPE DS tx desc hotlist max length
321  * @pkt_capture_mode: Packet capture mode config
322  * @rx_mon_buf_ring_size: Rx monitor buf ring size
323  * @tx_mon_buf_ring_size: Tx monitor buf ring size
324  * @rx_rel_wbm2sw_ring_id: Rx WBM2SW ring id
325  * @tx_rings_grp_bitmap: bitmap of group intr contexts which have
326  *                       non-zero tx ring mask
327  * @mlo_chip_rx_ring_map: map of chip_id to rx ring map
328  * @vdev_stats_hw_offload_config: HW vdev stats config
329  * @vdev_stats_hw_offload_timer: HW vdev stats timer duration
330  * @num_rxdma_dst_rings_per_pdev: Number of Rx DMA rings per pdev
331  * @txmon_hw_support: TxMON HW support
332  * @txmon_sw_peer_filtering: TxMON sw peer filtering support
333  * @num_rxdma_status_rings_per_pdev: Num RXDMA status rings
334  * @tx_capt_max_mem_allowed: Max memory for Tx packet capture
335  * @tx_capt_rbm_id: Return Buffer Manager ID to be used for Tx packet capture
336  * @sawf_enabled:  Is SAWF enabled
337  * @sawf_stats: SAWF Statistics
338  * @mpdu_retry_threshold_1: MPDU retry threshold 1 to increment tx bad count
339  * @mpdu_retry_threshold_2: MPDU retry threshold 2 to increment tx bad count
340  * @napi_scale_factor: scaling factor to be used for napi polls
341  * @notify_frame_support: flag indicating capability to mark notify frames
342  * @is_handle_invalid_decap_type_disabled: flag to indicate if invalid decap
343  *                                         type handling is disabled
344  * @tx_pkt_inspect_for_ilp: flag to indicate if TX packet inspection for HW
345  *			    based ILP feature is enabled
346  * @pointer_timer_threshold_rx: RX REO2SW ring pointer update timer threshold
347  * @pointer_num_threshold_rx: RX REO2SW ring pointer update entries threshold
348  * @local_pkt_capture: flag indicating enable/disable of local packet capture
349  * @special_frame_msk: Special frame mask
350  * @rx_rr: rx round robin enable / disable
351  * @umac_reset_buffer_window: Buffer time to check if umac reset was in progress
352  *                            during this window, configured time is in
353  *                            milliseconds.
354  * @fw_ast_indication_disable: Disable AST
355  * @avg_rate_stats_filter_val: Average rate filter value for stats.
356  *
357  */
358 struct wlan_cfg_dp_soc_ctxt {
359 	int num_int_ctxts;
360 	int max_clients;
361 	int max_alloc_size;
362 	int per_pdev_tx_ring;
363 	int num_tx_comp_rings;
364 	int num_tcl_data_rings;
365 	int num_nss_tcl_data_rings;
366 	int per_pdev_rx_ring;
367 	int per_pdev_lmac_ring;
368 	int num_reo_dest_rings;
369 	int num_nss_reo_dest_rings;
370 	int num_tx_desc_pool;
371 	int num_tx_ext_desc_pool;
372 	int num_global_tx_desc;
373 	int num_global_spcl_tx_desc;
374 	int num_tx_desc;
375 	int num_tx_spl_desc;
376 	int min_tx_desc;
377 	int num_tx_ext_desc;
378 	int max_peer_id;
379 	int htt_packet_type;
380 	int int_batch_threshold_ppe2tcl;
381 	int int_timer_threshold_ppe2tcl;
382 	int int_batch_threshold_tx;
383 	int int_timer_threshold_tx;
384 	int int_batch_threshold_rx;
385 	int int_timer_threshold_rx;
386 	int int_batch_threshold_other;
387 	int int_timer_threshold_other;
388 	int int_batch_threshold_mon_dest;
389 	int int_timer_threshold_mon_dest;
390 	int tx_ring_size;
391 	int time_control_bp;
392 	int rx_buffer_size;
393 	int qref_control_size;
394 	int tx_comp_ring_size;
395 	int tx_comp_ring_size_nss;
396 	uint8_t int_tx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
397 	uint8_t int_rx_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
398 	uint8_t int_rx_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
399 	uint8_t int_tx_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
400 	uint8_t int_host2rxdma_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
401 	uint8_t int_rxdma2host_mon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
402 	uint8_t int_ce_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
403 	uint8_t int_rx_err_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
404 	uint8_t int_rx_wbm_rel_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
405 	uint8_t int_reo_status_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
406 	uint8_t int_rxdma2host_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
407 	uint8_t int_host2rxdma_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
408 	uint8_t int_rx_ring_near_full_irq_1_mask[WLAN_CFG_INT_NUM_CONTEXTS];
409 	uint8_t int_rx_ring_near_full_irq_2_mask[WLAN_CFG_INT_NUM_CONTEXTS];
410 	uint8_t int_tx_ring_near_full_irq_mask[WLAN_CFG_INT_NUM_CONTEXTS];
411 	uint8_t int_host2txmon_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
412 	uint8_t int_ppeds_wbm_release_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
413 	uint8_t int_ppe2tcl_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
414 	uint8_t int_reo2ppe_ring_mask[WLAN_CFG_INT_NUM_CONTEXTS];
415 	uint8_t int_umac_reset_intr_mask[WLAN_CFG_INT_NUM_CONTEXTS];
416 	int hw_macid[MAX_PDEV_CNT];
417 	int hw_macid_pdev_id_map[MAX_NUM_LMAC_HW];
418 	int base_hw_macid;
419 	bool rx_hash;
420 	bool tso_enabled;
421 	bool lro_enabled;
422 	bool sg_enabled;
423 	bool gro_enabled;
424 	bool tc_based_dynamic_gro;
425 	uint32_t tc_ingress_prio;
426 	bool ipa_enabled;
427 	bool ol_tx_csum_enabled;
428 	bool ol_rx_csum_enabled;
429 	bool rawmode_enabled;
430 	bool peer_flow_ctrl_enabled;
431 	bool napi_enabled;
432 	bool p2p_tcp_udp_checksumoffload;
433 	bool nan_tcp_udp_checksumoffload;
434 	bool tcp_udp_checksumoffload;
435 	bool legacy_mode_checksumoffload_disable;
436 	bool defrag_timeout_check;
437 	int nss_cfg;
438 	uint32_t tx_flow_stop_queue_threshold;
439 	uint32_t tx_flow_start_queue_offset;
440 	int rx_defrag_min_timeout;
441 	int reo_dst_ring_size;
442 	int wbm_release_ring;
443 	int tcl_cmd_credit_ring;
444 	int tcl_status_ring;
445 	int reo_reinject_ring;
446 	int rx_release_ring;
447 	int reo_exception_ring;
448 	int reo_cmd_ring;
449 	int reo_status_ring;
450 	int rxdma_refill_ring;
451 	bool rxdma_refill_lt_disable;
452 	int rxdma_err_dst_ring;
453 	uint32_t per_pkt_trace;
454 	bool raw_mode_war;
455 	uint32_t enable_data_stall_detection;
456 	bool disable_intra_bss_fwd;
457 	bool rxdma1_enable;
458 	bool delay_mon_replenish;
459 	int max_ast_idx;
460 	int tx_desc_limit_0;
461 	int tx_desc_limit_1;
462 	int tx_desc_limit_2;
463 	int tx_device_limit;
464 	int tx_spl_device_limit;
465 	int tx_sw_internode_queue;
466 	int mon_drop_thresh;
467 #ifdef WLAN_FEATURE_RX_SOFTIRQ_TIME_LIMIT
468 	uint32_t tx_comp_loop_pkt_limit;
469 	uint32_t rx_reap_loop_pkt_limit;
470 	uint32_t rx_hp_oos_update_limit;
471 	bool rx_enable_eol_data_check;
472 	bool tx_comp_enable_eol_data_check;
473 #endif /* WLAN_FEATURE_RX_SOFTIRQ_TIME_LIMIT */
474 	int rx_sw_desc_weight;
475 	int rx_sw_desc_num;
476 	bool is_rx_mon_protocol_flow_tag_enabled;
477 	bool is_rx_flow_tag_enabled;
478 	bool is_rx_flow_search_table_per_pdev;
479 	uint16_t rx_flow_search_table_size;
480 	uint16_t rx_flow_max_search;
481 	uint8_t *rx_toeplitz_hash_key;
482 	uint8_t pktlog_buffer_size;
483 	bool is_tso_desc_attach_defer;
484 	uint32_t delayed_replenish_entries;
485 	uint32_t reo_rings_mapping;
486 	uint32_t rx_rings_mapping;
487 	bool pext_stats_enabled;
488 	bool is_rx_buff_pool_enabled;
489 	bool is_rx_refill_buff_pool_enabled;
490 	bool enable_dp_buf_page_frag_alloc;
491 	int rx_refill_buff_pool_size;
492 	uint32_t rx_pending_high_threshold;
493 	uint32_t rx_pending_low_threshold;
494 	bool is_poll_mode_enabled;
495 	uint8_t is_swlm_enabled;
496 	bool fst_in_cmem;
497 	bool tx_per_pkt_vdev_id_check;
498 	uint8_t radio0_rx_default_reo;
499 	uint8_t radio1_rx_default_reo;
500 	uint8_t radio2_rx_default_reo;
501 	bool wow_check_rx_pending_enable;
502 	bool jitter_stats_enabled;
503 	bool peer_link_stats_enabled;
504 #ifdef IPA_OFFLOAD
505 	uint32_t ipa_tx_ring_size;
506 	uint32_t ipa_tx_comp_ring_size;
507 #ifdef IPA_WDI3_TX_TWO_PIPES
508 	int ipa_tx_alt_ring_size;
509 	int ipa_tx_alt_comp_ring_size;
510 #endif /* IPA_WDI3_TX_TWO_PIPES */
511 #endif /* IPA_OFFLOAD */
512 	bool hw_cc_enabled;
513 	struct wlan_cfg_tcl_wbm_ring_num_map *tcl_wbm_map_array;
514 #ifdef WLAN_SUPPORT_PPEDS
515 	bool ppeds_enable;
516 	int reo2ppe_ring;
517 	int ppe2tcl_ring;
518 	int ppeds_num_tx_desc;
519 	int ppeds_tx_comp_napi_budget;
520 	int ppeds_tx_desc_hotlist_len;
521 #endif
522 #ifdef WLAN_FEATURE_PKT_CAPTURE_V2
523 	uint32_t pkt_capture_mode;
524 #endif
525 	uint32_t rx_mon_buf_ring_size;
526 	uint32_t tx_mon_buf_ring_size;
527 	uint8_t rx_rel_wbm2sw_ring_id;
528 	uint32_t tx_rings_grp_bitmap;
529 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
530 	uint8_t mlo_chip_rx_ring_map;
531 #endif
532 #ifdef QCA_VDEV_STATS_HW_OFFLOAD_SUPPORT
533 	bool vdev_stats_hw_offload_config;
534 	int vdev_stats_hw_offload_timer;
535 #endif
536 	uint8_t num_rxdma_dst_rings_per_pdev;
537 	bool txmon_hw_support;
538 	bool txmon_sw_peer_filtering;
539 	uint8_t num_rxdma_status_rings_per_pdev;
540 #ifdef WLAN_TX_PKT_CAPTURE_ENH
541 	uint32_t tx_capt_max_mem_allowed;
542 	uint8_t tx_capt_rbm_id[MAX_PDEV_CNT];
543 #endif
544 #ifdef CONFIG_SAWF
545 	bool sawf_enabled;
546 #endif
547 #ifdef CONFIG_SAWF_STATS
548 	uint8_t sawf_stats;
549 #endif
550 	uint8_t mpdu_retry_threshold_1;
551 	uint8_t mpdu_retry_threshold_2;
552 	uint8_t napi_scale_factor;
553 	uint8_t notify_frame_support;
554 	bool is_handle_invalid_decap_type_disabled;
555 #ifdef DP_TX_PACKET_INSPECT_FOR_ILP
556 	bool tx_pkt_inspect_for_ilp;
557 #endif
558 	uint16_t pointer_timer_threshold_rx;
559 	uint8_t pointer_num_threshold_rx;
560 #ifdef WLAN_FEATURE_LOCAL_PKT_CAPTURE
561 	bool local_pkt_capture;
562 #endif
563 	uint32_t special_frame_msk;
564 #ifdef WLAN_SUPPORT_RX_FLOW_TAG
565 	bool rx_rr;
566 #endif
567 #ifdef DP_UMAC_HW_RESET_SUPPORT
568 	uint32_t umac_reset_buffer_window;
569 #endif
570 	bool fw_ast_indication_disable;
571 	uint16_t avg_rate_stats_filter_val;
572 };
573 
574 /**
575  * struct wlan_cfg_dp_pdev_ctxt - Configuration parameters for pdev (radio)
576  * @rx_dma_buf_ring_size: Size of RxDMA buffer ring
577  * @dma_mon_buf_ring_size: Size of RxDMA Monitor buffer ring
578  * @dma_rx_mon_dest_ring_size: Size of RxDMA Monitor Destination ring
579  * @dma_tx_mon_dest_ring_size: Size of Tx Monitor Destination ring
580  * @dma_mon_status_ring_size: Size of RxDMA Monitor Status ring
581  * @rxdma_monitor_desc_ring: rxdma monitor desc ring size
582  * @num_mac_rings: Number of mac rings
583  * @nss_enabled: 1 - NSS enabled, 0 - NSS disabled
584  * @dma_tx_mon_buf_ring_size: Tx monitor BUF Ring size
585  * @sw2rxdma_link_ring_size: SW2RXDMA link ring size
586  */
587 struct wlan_cfg_dp_pdev_ctxt {
588 	int rx_dma_buf_ring_size;
589 	int dma_mon_buf_ring_size;
590 	int dma_rx_mon_dest_ring_size;
591 	int dma_tx_mon_dest_ring_size;
592 	int dma_mon_status_ring_size;
593 	int rxdma_monitor_desc_ring;
594 	int num_mac_rings;
595 	int nss_enabled;
596 	int dma_tx_mon_buf_ring_size;
597 	int sw2rxdma_link_ring_size;
598 };
599 
600 /**
601  * struct wlan_dp_prealloc_cfg - DP prealloc related config
602  * @num_tx_ring_entries: num of tcl data ring entries
603  * @num_tx_comp_ring_entries: num of tx comp ring entries
604  * @num_wbm_rel_ring_entries: num of wbm err ring entries
605  * @num_rxdma_err_dst_ring_entries: num of rxdma err ring entries
606  * @num_reo_exception_ring_entries: num of rx exception ring entries
607  * @num_tx_desc: num of tx descriptors
608  * @num_tx_ext_desc: num of tx ext descriptors
609  * @num_rx_sw_desc: number of rx sw descriptors
610  * @num_reo_dst_ring_entries: Number of entries in REO destination ring
611  * @num_rxdma_buf_ring_entries: Number of entries in rxdma buf ring
612  * @num_rxdma_refill_ring_entries: Number of entries in rxdma refill ring
613  * @num_reo_status_ring_entries: Number of entries in REO status ring
614  * @num_mon_status_ring_entries: Number of entries in monitor status ring
615  * @num_tx_mon_buf_ring_entries: Number of entries in Tx monitor buf ring
616  * @num_tx_mon_dst_ring_entries: Number of entries in Tx monitor
617  *				 destination ring
618  */
619 struct wlan_dp_prealloc_cfg {
620 	int num_tx_ring_entries;
621 	int num_tx_comp_ring_entries;
622 	int num_wbm_rel_ring_entries;
623 	int num_rxdma_err_dst_ring_entries;
624 	int num_reo_exception_ring_entries;
625 	int num_tx_desc;
626 	int num_tx_ext_desc;
627 	int num_rx_sw_desc;
628 	int num_reo_dst_ring_entries;
629 	int num_rxdma_buf_ring_entries;
630 	int num_rxdma_refill_ring_entries;
631 	int num_reo_status_ring_entries;
632 	int num_mon_status_ring_entries;
633 	int num_tx_mon_buf_ring_entries;
634 	int num_tx_mon_dst_ring_entries;
635 };
636 
637 /**
638  * wlan_cfg_soc_attach() - Attach configuration interface for SoC
639  * @psoc: PSOC object
640  *
641  * Allocates context for Soc configuration parameters,
642  * Read configuration information from device tree/ini file and
643  * returns back handle
644  *
645  * Return: Handle to configuration context
646  */
647 struct wlan_cfg_dp_soc_ctxt *
648 wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc);
649 
650 /**
651  * wlan_cfg_soc_detach() - Detach soc configuration handle
652  * @wlan_cfg_ctx: soc configuration handle
653  *
654  * De-allocates memory allocated for SoC configuration
655  *
656  * Return:none
657  */
658 void wlan_cfg_soc_detach(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
659 
660 /**
661  * wlan_cfg_pdev_attach() - Attach configuration interface for pdev
662  * @ctrl_obj: PSOC object
663  *
664  * Allocates context for pdev configuration parameters,
665  * Read configuration information from device tree/ini file and
666  * returns back handle
667  *
668  * Return: Handle to configuration context
669  */
670 struct wlan_cfg_dp_pdev_ctxt *
671 wlan_cfg_pdev_attach(struct cdp_ctrl_objmgr_psoc *ctrl_obj);
672 
673 /**
674  * wlan_cfg_pdev_detach() - Detach and free pdev configuration handle
675  * @wlan_cfg_pdev_ctx: PDEV Configuration Handle
676  *
677  * Return: void
678  */
679 void wlan_cfg_pdev_detach(struct wlan_cfg_dp_pdev_ctxt *wlan_cfg_pdev_ctx);
680 
681 void wlan_cfg_set_num_contexts(struct wlan_cfg_dp_soc_ctxt *cfg, int num);
682 void wlan_cfg_set_tx_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
683 			       int context, int mask);
684 void wlan_cfg_set_rx_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
685 			       int context, int mask);
686 void wlan_cfg_set_rx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
687 				   int context, int mask);
688 void wlan_cfg_set_ce_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
689 			       int context, int mask);
690 void wlan_cfg_set_rxbuf_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context,
691 				  int mask);
692 void wlan_cfg_set_max_peer_id(struct wlan_cfg_dp_soc_ctxt *cfg, uint32_t val);
693 void wlan_cfg_set_max_ast_idx(struct wlan_cfg_dp_soc_ctxt *cfg, uint32_t val);
694 int wlan_cfg_get_max_ast_idx(struct wlan_cfg_dp_soc_ctxt *cfg);
695 int wlan_cfg_get_mon_drop_thresh(struct wlan_cfg_dp_soc_ctxt *cfg);
696 int wlan_cfg_set_rx_err_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
697 				int context, int mask);
698 int wlan_cfg_set_rx_wbm_rel_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
699 					int context, int mask);
700 int wlan_cfg_set_reo_status_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
701 					int context, int mask);
702 
703 /**
704  * wlan_cfg_set_mon_delayed_replenish_entries() - number of buffers to replenish
705  *				for monitor buffer ring at initialization
706  * @wlan_cfg_ctx: Configuration Handle
707  * @replenish_entries: number of entries to replenish at initialization
708  *
709  */
710 void wlan_cfg_set_mon_delayed_replenish_entries(struct wlan_cfg_dp_soc_ctxt
711 						*wlan_cfg_ctx,
712 						uint32_t replenish_entries);
713 
714 /**
715  * wlan_cfg_get_mon_delayed_replenish_entries() - get num of buffer to replenish
716  *				for monitor buffer ring at initialization
717  * @wlan_cfg_ctx: Configuration Handle
718  *
719  * Return: delayed_replenish_entries;
720  */
721 int wlan_cfg_get_mon_delayed_replenish_entries(struct wlan_cfg_dp_soc_ctxt
722 					       *wlan_cfg_ctx);
723 /**
724  * wlan_cfg_get_num_contexts() - Number of interrupt contexts to be registered
725  * @wlan_cfg_ctx: Configuration Handle
726  *
727  * For WIN,  DP_NUM_INTERRUPT_CONTEXTS will be equal to  number of CPU cores.
728  * Each context (for linux it is a NAPI context) will have a tx_ring_mask,
729  * rx_ring_mask ,and rx_monitor_ring mask  to indicate the rings
730  * that are processed by the handler.
731  *
732  * Return: num_contexts
733  */
734 int wlan_cfg_get_num_contexts(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
735 
736 /**
737  * wlan_cfg_get_tx_ring_mask() - Return Tx interrupt mask mapped to an
738  *				 interrupt context
739  * @wlan_cfg_ctx: Configuration Handle
740  * @context: Numerical ID identifying the Interrupt/NAPI context
741  *
742  * Return: int_tx_ring_mask[context]
743  */
744 int wlan_cfg_get_tx_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
745 		int context);
746 
747 /**
748  * wlan_cfg_get_tcl_wbm_ring_num_for_index() - Get TCL/WBM ring number for index
749  * @wlan_cfg_ctx: Configuration Handle
750  * @index: index for which TCL/WBM ring numbers are needed
751  * @tcl: pointer to TCL ring number, to be filled
752  * @wbm: pointer to WBM ring number to be filled
753  *
754  * The function fills in tcl/wbm input pointers with TCL/WBM ring numbers for a
755  * given index corresponding to soc->tcl_data_ring or soc->tx_comp_ring. This
756  * is needed since WBM/TCL rings may not be sequentially available for HOST
757  * to use. The function returns values as stored in tcl_wbm_map_array global
758  * array.
759  *
760  * Return: None
761  */
762 static inline
wlan_cfg_get_tcl_wbm_ring_num_for_index(struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx,int index,int * tcl,int * wbm)763 void wlan_cfg_get_tcl_wbm_ring_num_for_index(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
764 					     int index, int *tcl, int *wbm)
765 {
766 	*tcl = wlan_cfg_ctx->tcl_wbm_map_array[index].tcl_ring_num;
767 	*wbm = wlan_cfg_ctx->tcl_wbm_map_array[index].wbm_ring_num;
768 }
769 
770 /**
771  * wlan_cfg_get_wbm_ring_num_for_index() - Get WBM ring number for index
772  * @wlan_cfg_ctx: Configuration Handle
773  * @index: index for which WBM ring numbers is needed
774  *
775  * Return: WBM Ring number for the index
776  */
777 static inline
wlan_cfg_get_wbm_ring_num_for_index(struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx,int index)778 int wlan_cfg_get_wbm_ring_num_for_index(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
779 					int index)
780 {
781 	return wlan_cfg_ctx->tcl_wbm_map_array[index].wbm_ring_num;
782 }
783 
784 /**
785  * wlan_cfg_get_rbm_id_for_index() - Get WBM RBM ID for TX ring index
786  * @wlan_cfg_ctx: Configuration Handle
787  * @index: TCL index for which WBM rbm value is needed
788  *
789  * The function fills in wbm rbm value corresponding to a TX ring index in
790  * soc->tcl_data_ring. This is needed since WBM ring numbers donot map
791  * sequentially to wbm rbm values.
792  * The function returns rbm id values as stored in tcl_wbm_map_array global
793  * array.
794  *
795  * Return: WBM rbm value corresnponding to TX ring index
796  */
797 static inline
wlan_cfg_get_rbm_id_for_index(struct wlan_cfg_dp_soc_ctxt * wlan_cfg_ctx,int index)798 int wlan_cfg_get_rbm_id_for_index(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx, int index)
799 {
800 	return wlan_cfg_ctx->tcl_wbm_map_array[index].wbm_rbm_id;
801 }
802 
803 /**
804  * wlan_cfg_get_rx_ring_mask() - Return Rx interrupt mask mapped to an
805  *				 interrupt context
806  * @wlan_cfg_ctx: Configuration Handle
807  * @context: Numerical ID identifying the Interrupt/NAPI context
808  *
809  * Return: int_rx_ring_mask[context]
810  */
811 int wlan_cfg_get_rx_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
812 		int context);
813 
814 /**
815  * wlan_cfg_get_rx_mon_ring_mask() - Return Rx monitor ring interrupt mask
816  *				   mapped to an interrupt context
817  * @wlan_cfg_ctx: Configuration Handle
818  * @context: Numerical ID identifying the Interrupt/NAPI context
819  *
820  * Return: int_rx_mon_ring_mask[context]
821  */
822 int wlan_cfg_get_rx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
823 		int context);
824 
825 /**
826  * wlan_cfg_set_tx_mon_ring_mask() - Set Tx monitor ring interrupt mask
827  *				   mapped to an interrupt context
828  * @cfg: Configuration Handle
829  * @context: Numerical ID identifying the Interrupt/NAPI context
830  * @mask: Interrupt mask
831  *
832  * Return: None
833  */
834 void wlan_cfg_set_tx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
835 				   int context, int mask);
836 
837 /**
838  * wlan_cfg_get_tx_mon_ring_mask() - Return Tx monitor ring interrupt mask
839  *				   mapped to an interrupt context
840  * @wlan_cfg_ctx: Configuration Handle
841  * @context: Numerical ID identifying the Interrupt/NAPI context
842  *
843  * Return: int_tx_mon_ring_mask[context]
844  */
845 int wlan_cfg_get_tx_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
846 				  int context);
847 
848 /**
849  * wlan_cfg_set_rxdma2host_ring_mask() - Set rxdma2host ring interrupt mask
850  *				   for the given interrupt context
851  * @cfg: Configuration Handle
852  * @context: Numerical ID identifying the Interrupt/NAPI context
853  * @mask: Interrupt mask
854  *
855  */
856 void wlan_cfg_set_rxdma2host_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
857 				       int context, int mask);
858 
859 /**
860  * wlan_cfg_get_rxdma2host_ring_mask() - Return rxdma2host ring interrupt mask
861  *				   mapped to an interrupt context
862  * @cfg: Configuration Handle
863  * @context: Numerical ID identifying the Interrupt/NAPI context
864  *
865  * Return: int_rxdma2host_ring_mask[context]
866  */
867 int wlan_cfg_get_rxdma2host_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
868 				      int context);
869 
870 /**
871  * wlan_cfg_set_host2rxdma_ring_mask() - Set host2rxdma ring interrupt mask
872  *				   for the given interrupt context
873  * @cfg: Configuration Handle
874  * @context: Numerical ID identifying the Interrupt/NAPI context
875  * @mask: Interrupt mask
876  *
877  */
878 void wlan_cfg_set_host2rxdma_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
879 				       int context, int mask);
880 
881 /**
882  * wlan_cfg_get_host2rxdma_ring_mask() - Return host2rxdma ring interrupt mask
883  *				   mapped to an interrupt context
884  * @cfg: Configuration Handle
885  * @context: Numerical ID identifying the Interrupt/NAPI context
886  *
887  * Return: int_host2rxdma_ring_mask[context]
888  */
889 int wlan_cfg_get_host2rxdma_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
890 				      int context);
891 
892 /**
893  * wlan_cfg_get_rx_near_full_grp_1_mask() - Return REO near full interrupt mask
894  *					mapped to an interrupt context
895  * @cfg: Configuration Handle
896  * @context: Numerical ID identifying the Interrupt/NAPI context
897  *
898  * Return: REO near full interrupt mask[context]
899  */
900 int wlan_cfg_get_rx_near_full_grp_1_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
901 					 int context);
902 
903 /**
904  * wlan_cfg_get_rx_near_full_grp_2_mask() - Return REO near full interrupt mask
905  *					mapped to an interrupt context
906  * @cfg: Configuration Handle
907  * @context: Numerical ID identifying the Interrupt/NAPI context
908  *
909  * Return: REO near full interrupt mask[context]
910  */
911 int wlan_cfg_get_rx_near_full_grp_2_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
912 					 int context);
913 
914 /**
915  * wlan_cfg_get_tx_ring_near_full_mask() - Return tx completion ring near full
916  *				interrupt mask mapped to an interrupt context
917  * @cfg: Configuration Handle
918  * @context: Numerical ID identifying the Interrupt/NAPI context
919  *
920  * Return: tx completion near full interrupt mask[context]
921  */
922 int wlan_cfg_get_tx_ring_near_full_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
923 					int context);
924 /**
925  * wlan_cfg_set_host2rxdma_mon_ring_mask() - Set host2rxdma monitor ring
926  *                                interrupt mask for the given interrupt context
927  * @cfg: Configuration Handle
928  * @context: Numerical ID identifying the Interrupt/NAPI context
929  * @mask: Interrupt mask
930  *
931  */
932 void wlan_cfg_set_host2rxdma_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
933 					   int context, int mask);
934 
935 /**
936  * wlan_cfg_get_host2rxdma_mon_ring_mask() - Return host2rxdma monitoe ring
937  *                               interrupt mask mapped to an interrupt context
938  * @cfg: Configuration Handle
939  * @context: Numerical ID identifying the Interrupt/NAPI context
940  *
941  * Return: int_host2rxdma_mon_ring_mask[context]
942  */
943 int wlan_cfg_get_host2rxdma_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
944 					  int context);
945 
946 /**
947  * wlan_cfg_set_rxdma2host_mon_ring_mask() - Set rxdma2host monitor
948  *				   destination ring interrupt mask
949  *				   for the given interrupt context
950  * @cfg: Configuration Handle
951  * @context: Numerical ID identifying the Interrupt/NAPI context
952  * @mask: Interrupt mask
953  *
954  */
955 void wlan_cfg_set_rxdma2host_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
956 					   int context, int mask);
957 
958 /**
959  * wlan_cfg_get_rxdma2host_mon_ring_mask() - Return rxdma2host monitor
960  *				   destination ring interrupt mask
961  *				   mapped to an interrupt context
962  * @cfg: Configuration Handle
963  * @context: Numerical ID identifying the Interrupt/NAPI context
964  *
965  * Return: int_rxdma2host_mon_ring_mask[context]
966  */
967 int wlan_cfg_get_rxdma2host_mon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
968 					  int context);
969 
970 /**
971  * wlan_cfg_set_hw_mac_idx() - Set HW MAC Idx for the given PDEV index
972  *
973  * @cfg: Configuration Handle
974  * @pdev_idx: Index of SW PDEV
975  * @hw_macid: HW MAC Id
976  *
977  */
978 void wlan_cfg_set_hw_mac_idx(struct wlan_cfg_dp_soc_ctxt *cfg,
979 			     int pdev_idx, int hw_macid);
980 
981 /**
982  * wlan_cfg_get_hw_mac_idx() - Get 0 based HW MAC index for the given
983  * PDEV index
984  *
985  * @cfg: Configuration Handle
986  * @pdev_idx: Index of SW PDEV
987  *
988  * Return: HW MAC index
989  */
990 int wlan_cfg_get_hw_mac_idx(struct wlan_cfg_dp_soc_ctxt *cfg, int pdev_idx);
991 
992 /**
993  * wlan_cfg_get_target_pdev_id() - Get target PDEV ID for HW MAC ID
994  *
995  * @cfg: Configuration Handle
996  * @hw_macid: Index of hw mac
997  *
998  * Return: PDEV ID
999  */
1000 int
1001 wlan_cfg_get_target_pdev_id(struct wlan_cfg_dp_soc_ctxt *cfg, int hw_macid);
1002 
1003 /**
1004  * wlan_cfg_set_pdev_idx() - Set 0 based host PDEV index for the given
1005  * hw mac index
1006  *
1007  * @cfg: Configuration Handle
1008  * @pdev_idx: Index of SW PDEV
1009  * @hw_macid: Index of hw mac
1010  *
1011  * Return: PDEV index
1012  */
1013 void wlan_cfg_set_pdev_idx
1014 	(struct wlan_cfg_dp_soc_ctxt *cfg, int pdev_idx, int hw_macid);
1015 
1016 /**
1017  * wlan_cfg_get_pdev_idx() - Get 0 based PDEV index for the given
1018  * hw mac index
1019  *
1020  * @cfg: Configuration Handle
1021  * @hw_macid: Index of hw mac
1022  *
1023  * Return: PDEV index
1024  */
1025 int wlan_cfg_get_pdev_idx(struct wlan_cfg_dp_soc_ctxt *cfg, int hw_macid);
1026 
1027 /**
1028  * wlan_cfg_get_rx_err_ring_mask() - Return Rx monitor ring interrupt mask
1029  *					   mapped to an interrupt context
1030  * @cfg: Configuration Handle
1031  * @context: Numerical ID identifying the Interrupt/NAPI context
1032  *
1033  * Return: int_rx_err_ring_mask[context]
1034  */
1035 int wlan_cfg_get_rx_err_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int
1036 				  context);
1037 
1038 /**
1039  * wlan_cfg_get_rx_wbm_rel_ring_mask() - Return Rx monitor ring interrupt mask
1040  *					   mapped to an interrupt context
1041  * @cfg: Configuration Handle
1042  * @context: Numerical ID identifying the Interrupt/NAPI context
1043  *
1044  * Return: int_wbm_rel_ring_mask[context]
1045  */
1046 int wlan_cfg_get_rx_wbm_rel_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int
1047 				      context);
1048 
1049 /**
1050  * wlan_cfg_get_reo_status_ring_mask() - Return Rx monitor ring interrupt mask
1051  *					   mapped to an interrupt context
1052  * @cfg: Configuration Handle
1053  * @context: Numerical ID identifying the Interrupt/NAPI context
1054  *
1055  * Return: int_reo_status_ring_mask[context]
1056  */
1057 int wlan_cfg_get_reo_status_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int
1058 				      context);
1059 
1060 /**
1061  * wlan_cfg_get_ce_ring_mask() - Return CE ring interrupt mask
1062  *				mapped to an interrupt context
1063  * @wlan_cfg_ctx: Configuration Handle
1064  * @context: Numerical ID identifying the Interrupt/NAPI context
1065  *
1066  * Return: int_ce_ring_mask[context]
1067  */
1068 int wlan_cfg_get_ce_ring_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
1069 		int context);
1070 
1071 /**
1072  * wlan_cfg_get_umac_reset_intr_mask() - Get UMAC reset interrupt mask
1073  * mapped to an interrupt context
1074  * @cfg: Configuration Handle
1075  * @context: Numerical ID identifying the Interrupt/NAPI context
1076  *
1077  * Return: int_umac_reset_intr_mask[context]
1078  */
1079 int wlan_cfg_get_umac_reset_intr_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
1080 				      int context);
1081 /**
1082  * wlan_cfg_get_max_clients() - Return maximum number of peers/stations
1083  *				supported by device
1084  * @wlan_cfg_ctx: Configuration Handle
1085  *
1086  * Return: max_clients
1087  */
1088 uint32_t wlan_cfg_get_max_clients(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1089 
1090 /**
1091  * wlan_cfg_max_alloc_size() - Return Maximum allocation size for any dynamic
1092  *			    memory allocation request for this device
1093  * @wlan_cfg_ctx: Configuration Handle
1094  *
1095  * Return: max_alloc_size
1096  */
1097 uint32_t wlan_cfg_max_alloc_size(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1098 
1099 /**
1100  * wlan_cfg_per_pdev_tx_ring() - Return true if Tx rings are mapped as
1101  *			       one per radio
1102  * @wlan_cfg_ctx: Configuration Handle
1103  *
1104  * Return: per_pdev_tx_ring
1105  */
1106 int wlan_cfg_per_pdev_tx_ring(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1107 
1108 /**
1109  * wlan_cfg_num_tx_comp_rings() - Number of Tx comp rings (HOST mode)
1110  * @wlan_cfg_ctx: Configuration Handle
1111  *
1112  * Return: num_tx_comp_rings
1113  */
1114 int wlan_cfg_num_tx_comp_rings(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1115 
1116 /**
1117  * wlan_cfg_num_tcl_data_rings() - Number of TCL Data rings (HOST mode)
1118  * @wlan_cfg_ctx: Configuration Handle
1119  *
1120  * Return: num_tcl_data_rings
1121  */
1122 int wlan_cfg_num_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1123 
1124 /**
1125  * wlan_cfg_num_nss_tcl_data_rings() - Number of TCL Data rings (NSS offload)
1126  * @wlan_cfg_ctx: Configuration Handle
1127  *
1128  * Return: num_tcl_data_rings
1129  */
1130 int wlan_cfg_num_nss_tcl_data_rings(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1131 
1132 /**
1133  * wlan_cfg_per_pdev_rx_ring() - Return true if Rx rings are mapped as
1134  *                              one per radio
1135  * @wlan_cfg_ctx: Configuration Handle
1136  *
1137  * Return: per_pdev_rx_ring
1138  */
1139 int wlan_cfg_per_pdev_rx_ring(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1140 
1141 /**
1142  * wlan_cfg_per_pdev_lmac_ring() - Return true if error rings are mapped as
1143  *                              one per radio
1144  * @wlan_cfg_ctx: Configuration Handle
1145  *
1146  * Return: return 1 if per pdev error ring else 0
1147  */
1148 int wlan_cfg_per_pdev_lmac_ring(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1149 
1150 /**
1151  * wlan_cfg_num_reo_dest_rings() - Number of REO Data rings (HOST mode)
1152  * @wlan_cfg_ctx: Configuration Handle
1153  *
1154  * Return: num_reo_dest_rings
1155  */
1156 int wlan_cfg_num_reo_dest_rings(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1157 
1158 /**
1159  * wlan_cfg_num_nss_reo_dest_rings() - Number of REO Data rings (NSS offload)
1160  * @wlan_cfg_ctx: Configuration Handle
1161  *
1162  * Return: num_reo_dest_rings
1163  */
1164 int wlan_cfg_num_nss_reo_dest_rings(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1165 
1166 /**
1167  * wlan_cfg_pkt_type() - Default 802.11 encapsulation type
1168  * @wlan_cfg_ctx: Configuration Handle
1169  *
1170  * Return: htt_pkt_type_ethernet
1171  */
1172 int wlan_cfg_pkt_type(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1173 
1174 /**
1175  * wlan_cfg_get_num_tx_desc_pool() - Number of Tx Descriptor pools for the
1176  *					device
1177  * @wlan_cfg_ctx: Configuration Handle
1178  *
1179  * Return: num_tx_desc_pool
1180  */
1181 int wlan_cfg_get_num_tx_desc_pool(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1182 
1183 /**
1184  * wlan_cfg_set_num_tx_desc_pool() - Set the number of Tx Descriptor pools for the
1185  *					device
1186  * @cfg: Configuration Handle
1187  * @num_pool: Number of pool
1188  */
1189 void wlan_cfg_set_num_tx_desc_pool(struct wlan_cfg_dp_soc_ctxt *cfg, int num_pool);
1190 
1191 /**
1192  * wlan_cfg_get_num_tx_ext_desc_pool() -  Number of Tx MSDU ext Descriptor
1193  *					pools
1194  * @wlan_cfg_ctx: Configuration Handle
1195  *
1196  * Return: num_tx_ext_desc_pool
1197  */
1198 int wlan_cfg_get_num_tx_ext_desc_pool(
1199 		struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1200 
1201 /**
1202  * wlan_cfg_get_reo_dst_ring_size() - Get REO destination ring size
1203  *
1204  * @cfg: Configuration Handle
1205  *
1206  * Return: reo_dst_ring_size
1207  */
1208 int wlan_cfg_get_reo_dst_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
1209 
1210 /**
1211  * wlan_cfg_set_reo_dst_ring_size() - Set the REO Destination ring size
1212  *
1213  * @cfg: Configuration Handle
1214  * @reo_dst_ring_size: REO Destination ring size
1215  */
1216 void wlan_cfg_set_reo_dst_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg,
1217 				    int reo_dst_ring_size);
1218 
1219 /**
1220  * wlan_cfg_set_raw_mode_war() - Set raw mode war configuration
1221  *
1222  * @cfg: Configuration Handle
1223  * @raw_mode_war: raw mode war configuration
1224  */
1225 void wlan_cfg_set_raw_mode_war(struct wlan_cfg_dp_soc_ctxt *cfg,
1226 			       bool raw_mode_war);
1227 
1228 /**
1229  * wlan_cfg_get_raw_mode_war() - Get raw mode war configuration
1230  *
1231  * @cfg: Configuration Handle
1232  *
1233  * Return: reo_dst_ring_size
1234  */
1235 bool wlan_cfg_get_raw_mode_war(struct wlan_cfg_dp_soc_ctxt *cfg);
1236 
1237 /**
1238  * wlan_cfg_set_num_tx_ext_desc_pool() -  Set the number of Tx MSDU ext Descriptor
1239  *					pools
1240  * @cfg: Configuration Handle
1241  * @num_pool: Number of pool
1242  */
1243 void wlan_cfg_set_num_tx_ext_desc_pool(struct wlan_cfg_dp_soc_ctxt *cfg, int num_pool);
1244 
1245 /**
1246  * wlan_cfg_get_num_global_tx_desc() - Number of global Tx Descriptors allowed
1247  * @wlan_cfg_ctx: Configuration Handle
1248  *
1249  * Return: num_global_tx_desc
1250  */
1251 int wlan_cfg_get_num_global_tx_desc(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1252 
1253 /**
1254  * wlan_cfg_get_num_global_spcl_tx_desc() - Number of global special Tx Descriptors
1255  * allowed
1256  * @wlan_cfg_ctx: Configuration Handle
1257  *
1258  * Return: num_global_spcl_tx_desc
1259  */
1260 int wlan_cfg_get_num_global_spcl_tx_desc(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1261 
1262 /**
1263  * wlan_cfg_get_num_tx_desc() - Number of Tx Descriptors per pool
1264  * @wlan_cfg_ctx: Configuration Handle
1265  *
1266  * Return: num_tx_desc
1267  */
1268 int wlan_cfg_get_num_tx_desc(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1269 
1270 /**
1271  * wlan_cfg_set_num_tx_spl_desc() - Set the number of special Tx Descriptors
1272  * per pool
1273  *
1274  * @cfg: Configuration Handle
1275  * @num_desc: Number of descriptor
1276  */
1277 void wlan_cfg_set_num_tx_spl_desc(struct wlan_cfg_dp_soc_ctxt *cfg,
1278 				  int num_desc);
1279 
1280 /**
1281  * wlan_cfg_get_num_tx_spl_desc() - Number of Tx Descriptors for special
1282  *				    frames per pool
1283  * @wlan_cfg_ctx: Configuration Handle
1284  *
1285  * Return: num_tx_desc
1286  */
1287 int wlan_cfg_get_num_tx_spl_desc(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1288 
1289 /**
1290  * wlan_cfg_get_min_tx_desc() - Minimum number of Tx Descriptors per pool
1291  * @wlan_cfg_ctx: Configuration Handle
1292  *
1293  * Return: num_tx_desc
1294  */
1295 int wlan_cfg_get_min_tx_desc(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1296 
1297 /**
1298  * wlan_cfg_set_num_tx_desc() - Set the number of Tx Descriptors per pool
1299  *
1300  * @cfg: Configuration Handle
1301  * @num_desc: Number of descriptor
1302  */
1303 void wlan_cfg_set_num_tx_desc(struct wlan_cfg_dp_soc_ctxt *cfg, int num_desc);
1304 
1305 /**
1306  * wlan_cfg_get_num_tx_ext_desc() - Number of Tx MSDU extension Descriptors
1307  *					per pool
1308  * @wlan_cfg_ctx: Configuration Handle
1309  *
1310  * Return: num_tx_ext_desc
1311  */
1312 int wlan_cfg_get_num_tx_ext_desc(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
1313 
1314 /**
1315  * wlan_cfg_set_num_tx_ext_desc() - Set the number of Tx MSDU extension
1316  *                                  Descriptors per pool
1317  * @cfg: Configuration Handle
1318  * @num_ext_desc: Number of descriptor
1319  */
1320 void wlan_cfg_set_num_tx_ext_desc(struct wlan_cfg_dp_soc_ctxt *cfg,
1321 				  int num_ext_desc);
1322 
1323 /**
1324  * wlan_cfg_max_peer_id() - Get maximum peer ID
1325  * @cfg: Configuration Handle
1326  *
1327  * Return: maximum peer ID
1328  */
1329 uint32_t wlan_cfg_max_peer_id(struct wlan_cfg_dp_soc_ctxt *cfg);
1330 
1331 /**
1332  * wlan_cfg_get_dma_mon_buf_ring_size(): Return Size of monitor buffer ring
1333  * @wlan_cfg_pdev_ctx: pdev configuration context
1334  *
1335  * Return: dma_mon_buf_ring_size
1336  */
1337 int wlan_cfg_get_dma_mon_buf_ring_size(
1338 		struct wlan_cfg_dp_pdev_ctxt *wlan_cfg_pdev_ctx);
1339 
1340 /**
1341  * wlan_cfg_get_dma_mon_stat_ring_size() - Return size of Monitor Status ring
1342  * @wlan_cfg_pdev_ctx: pdev configuration context
1343  *
1344  * Return: dma_mon_stat_ring_size
1345  */
1346 int wlan_cfg_get_dma_mon_stat_ring_size(
1347 		struct wlan_cfg_dp_pdev_ctxt *wlan_cfg_pdev_ctx);
1348 
1349 /**
1350  * wlan_cfg_get_dma_mon_desc_ring_size - Get rxdma monitor size
1351  * @cfg: soc configuration context
1352  *
1353  * Return: rxdma monitor desc ring size
1354  */
1355 int
1356 wlan_cfg_get_dma_mon_desc_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg);
1357 
1358 /**
1359  * wlan_cfg_get_rx_dma_buf_ring_size() - Return Size of RxDMA buffer ring
1360  * @wlan_cfg_pdev_ctx: pdev configuration context
1361  *
1362  * Return: rx_dma_buf_ring_size
1363  */
1364 int wlan_cfg_get_rx_dma_buf_ring_size(
1365 		struct wlan_cfg_dp_pdev_ctxt *wlan_cfg_pdev_ctx);
1366 
1367 /**
1368  * wlan_cfg_set_rx_dma_buf_ring_size() - Set RxDMA buffer ring size
1369  * @cfg: pdev configuration context
1370  * @ring_size: rxdma buffer ring size to be set
1371  *
1372  * Return: None
1373  */
1374 void
1375 wlan_cfg_set_rx_dma_buf_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg,
1376 				  int ring_size);
1377 
1378 /**
1379  * wlan_cfg_rx_pending_hl_threshold() - Return high threshold of rx pending
1380  * @cfg: pdev configuration context
1381  *
1382  * Return: rx_pending_high_threshold
1383  */
1384 uint32_t
1385 wlan_cfg_rx_pending_hl_threshold(struct wlan_cfg_dp_soc_ctxt *cfg);
1386 
1387 /**
1388  * wlan_cfg_rx_pending_lo_threshold() - Return low threshold of rx pending
1389  * @cfg: soc configuration context
1390  *
1391  * Return: rx_pending_low_threshold
1392  */
1393 uint32_t
1394 wlan_cfg_rx_pending_lo_threshold(struct wlan_cfg_dp_soc_ctxt *cfg);
1395 
1396 /**
1397  * wlan_cfg_get_num_mac_rings() - Return the number of MAC RX DMA rings
1398  * per pdev
1399  * @cfg: pdev configuration context
1400  *
1401  * Return: number of mac DMA rings per pdev
1402  */
1403 int wlan_cfg_get_num_mac_rings(struct wlan_cfg_dp_pdev_ctxt *cfg);
1404 
1405 /**
1406  * wlan_cfg_is_lro_enabled - Return LRO enabled/disabled
1407  * @cfg: soc configuration context
1408  *
1409  * Return: true - LRO enabled false - LRO disabled
1410  */
1411 bool wlan_cfg_is_lro_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
1412 
1413 /**
1414  * wlan_cfg_is_gro_enabled - Return GRO enabled/disabled
1415  * @cfg: soc configuration context
1416  *
1417  * Return: true - GRO enabled false - GRO disabled
1418  */
1419 bool wlan_cfg_is_gro_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
1420 
1421 /**
1422  * wlan_cfg_is_rx_hash_enabled - Return RX hash enabled/disabled
1423  * @cfg: soc configuration context
1424  *
1425  * Return: true - enabled false - disabled
1426  */
1427 bool wlan_cfg_is_rx_hash_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
1428 
1429 /**
1430  * wlan_cfg_is_ipa_enabled - Return IPA enabled/disabled
1431  * @cfg: soc configuration context
1432  *
1433  * Return: true - enabled false - disabled
1434  */
1435 bool wlan_cfg_is_ipa_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
1436 
1437 /**
1438  * wlan_cfg_set_rx_hash - set rx hash enabled/disabled
1439  * @cfg: soc configuration context
1440  * @rx_hash: true - enabled false - disabled
1441  */
1442 void wlan_cfg_set_rx_hash(struct wlan_cfg_dp_soc_ctxt *cfg, bool rx_hash);
1443 
1444 /**
1445  * wlan_cfg_is_rx_rr_enabled - Return RX round robin enabled/disabled
1446  * @cfg: soc configuration context
1447  *
1448  * Return: true - enabled false - disabled
1449  */
1450 bool wlan_cfg_is_rx_rr_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
1451 
1452 /**
1453  * wlan_cfg_set_rx_rr - set rx round robin enabled/disabled
1454  * @cfg: soc configuration context
1455  * @rx_rr: true - enabled false - disabled
1456  */
1457 void wlan_cfg_set_rx_rr(struct wlan_cfg_dp_soc_ctxt *cfg, bool rx_rr);
1458 
1459 /**
1460  * wlan_cfg_get_dp_pdev_nss_enabled - Return pdev nss enabled/disabled
1461  * @cfg: pdev configuration context
1462  *
1463  * Return: 1 - enabled 0 - disabled
1464  */
1465 int wlan_cfg_get_dp_pdev_nss_enabled(struct wlan_cfg_dp_pdev_ctxt *cfg);
1466 
1467 /**
1468  * wlan_cfg_set_dp_pdev_nss_enabled - set pdev nss enabled/disabled
1469  * @cfg: pdev configuration context
1470  * @nss_enabled: 1 - enabled 0 - disabled
1471  */
1472 void wlan_cfg_set_dp_pdev_nss_enabled(struct wlan_cfg_dp_pdev_ctxt *cfg,
1473 				      int nss_enabled);
1474 
1475 /**
1476  * wlan_cfg_get_dp_soc_nss_cfg - Return soc nss config
1477  * @cfg: soc configuration context
1478  *
1479  * Return: nss_cfg
1480  */
1481 int wlan_cfg_get_dp_soc_nss_cfg(struct wlan_cfg_dp_soc_ctxt *cfg);
1482 
1483 /**
1484  * wlan_cfg_set_dp_soc_nss_cfg - set soc nss config
1485  * @cfg: soc configuration context
1486  * @nss_cfg: NSS configuration
1487  *
1488  */
1489 void wlan_cfg_set_dp_soc_nss_cfg(struct wlan_cfg_dp_soc_ctxt *cfg, int nss_cfg);
1490 
1491 /**
1492  * wlan_cfg_get_int_timer_threshold_ppe2tcl - Get intr mitigation for ppe2tcl
1493  * @cfg: soc configuration context
1494  *
1495  * Return: Timer threshold
1496  */
1497 int wlan_cfg_get_int_timer_threshold_ppe2tcl(struct wlan_cfg_dp_soc_ctxt *cfg);
1498 
1499 /**
1500  * wlan_cfg_get_int_batch_threshold_ppe2tcl - Get intr mitigation for ppe2tcl
1501  * @cfg: soc configuration context
1502  *
1503  * Return: Batch threshold
1504  */
1505 int wlan_cfg_get_int_batch_threshold_ppe2tcl(struct wlan_cfg_dp_soc_ctxt *cfg);
1506 
1507 /**
1508  * wlan_cfg_get_int_batch_threshold_tx - Get interrupt mitigation cfg for Tx
1509  * @cfg: soc configuration context
1510  *
1511  * Return: Batch threshold
1512  */
1513 int wlan_cfg_get_int_batch_threshold_tx(struct wlan_cfg_dp_soc_ctxt *cfg);
1514 
1515 /**
1516  * wlan_cfg_get_int_timer_threshold_tx - Get interrupt mitigation cfg for Tx
1517  * @cfg: soc configuration context
1518  *
1519  * Return: Timer threshold
1520  */
1521 int wlan_cfg_get_int_timer_threshold_tx(struct wlan_cfg_dp_soc_ctxt *cfg);
1522 
1523 /**
1524  * wlan_cfg_get_int_batch_threshold_rx - Get interrupt mitigation cfg for Rx
1525  * @cfg: soc configuration context
1526  *
1527  * Return: Batch threshold
1528  */
1529 int wlan_cfg_get_int_batch_threshold_rx(struct wlan_cfg_dp_soc_ctxt *cfg);
1530 
1531 /**
1532  * wlan_cfg_get_int_timer_threshold_rx - Get interrupt mitigation cfg for Rx
1533  * @cfg: soc configuration context
1534  *
1535  * Return: Timer threshold
1536  */
1537 int wlan_cfg_get_int_timer_threshold_rx(struct wlan_cfg_dp_soc_ctxt *cfg);
1538 
1539 /**
1540  * wlan_cfg_get_int_batch_threshold_other - Get interrupt mitigation cfg for
1541  *                                          other srngs
1542  * @cfg: soc configuration context
1543  *
1544  * Return: Batch threshold
1545  */
1546 int wlan_cfg_get_int_batch_threshold_other(struct wlan_cfg_dp_soc_ctxt *cfg);
1547 
1548 /**
1549  * wlan_cfg_get_int_timer_threshold_other - Get interrupt mitigation cfg for
1550  *                                          other srngs
1551  * @cfg: soc configuration context
1552  *
1553  * Return: Timer threshold
1554  */
1555 int wlan_cfg_get_int_timer_threshold_other(struct wlan_cfg_dp_soc_ctxt *cfg);
1556 
1557 /**
1558  * wlan_cfg_get_int_batch_threshold_mon_dest - Get interrupt mitigation cfg for
1559  * monitor destination srng
1560  * @cfg: soc configuration context
1561  *
1562  * Return: Batch threshold
1563  */
1564 int wlan_cfg_get_int_batch_threshold_mon_dest(struct wlan_cfg_dp_soc_ctxt *cfg);
1565 
1566 /**
1567  * wlan_cfg_get_int_timer_threshold_mon_dest - Get interrupt mitigation cfg for
1568  * monitor destination srngs
1569  * @cfg: soc configuration context
1570  *
1571  * Return: Timer threshold
1572  */
1573 int wlan_cfg_get_int_timer_threshold_mon_dest(struct wlan_cfg_dp_soc_ctxt *cfg);
1574 
1575 /**
1576  * wlan_cfg_get_checksum_offload - Get checksum offload enable or disable status
1577  * @cfg: soc configuration context
1578  *
1579  * Return: Checksum offload enable or disable
1580  */
1581 int wlan_cfg_get_checksum_offload(struct wlan_cfg_dp_soc_ctxt *cfg);
1582 
1583 /**
1584  * wlan_cfg_get_nan_checksum_offload - Get checksum offload enable/disable val
1585  * @cfg: soc configuration context
1586  *
1587  * Return: Checksum offload enable or disable value for NAN mode
1588  */
1589 int wlan_cfg_get_nan_checksum_offload(struct wlan_cfg_dp_soc_ctxt *cfg);
1590 
1591 /**
1592  * wlan_cfg_get_p2p_checksum_offload - Get checksum offload enable/disable val
1593  * @cfg: soc configuration context
1594  *
1595  * Return: Checksum offload enable or disable value for P2P mode
1596  */
1597 int wlan_cfg_get_p2p_checksum_offload(struct wlan_cfg_dp_soc_ctxt *cfg);
1598 
1599 /**
1600  * wlan_cfg_tx_ring_size - Get Tx DMA ring size (TCL Data Ring)
1601  * @cfg: soc configuration context
1602  *
1603  * Return: Tx Ring Size
1604  */
1605 int wlan_cfg_tx_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
1606 
1607 /**
1608  * wlan_cfg_set_tx_ring_size - Set Tx ring size
1609  * @cfg: soc configuration context
1610  * @ring_size: TX ring size to be set
1611  *
1612  * Return: None
1613  */
1614 void wlan_cfg_set_tx_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg,
1615 			       int ring_size);
1616 
1617 /**
1618  * wlan_cfg_time_control_bp - Get time for interval in bp prints
1619  * @cfg: soc configuration context
1620  *
1621  * Return: interval time
1622  */
1623 int wlan_cfg_time_control_bp(struct wlan_cfg_dp_soc_ctxt *cfg);
1624 
1625 /**
1626  * wlan_cfg_rx_buffer_size - Get buffer size for skb
1627  * @cfg: soc configuration context
1628  *
1629  * Return: buffer size
1630  */
1631 int wlan_cfg_rx_buffer_size(struct wlan_cfg_dp_soc_ctxt *cfg);
1632 
1633 /**
1634  * wlan_cfg_qref_control_size - Get debug array size
1635  * @cfg: soc configuration context
1636  *
1637  * Return: array size
1638  */
1639 int wlan_cfg_qref_control_size(struct wlan_cfg_dp_soc_ctxt *cfg);
1640 
1641 /**
1642  * wlan_cfg_tx_comp_ring_size - Get Tx completion ring size (WBM Ring)
1643  * @cfg: soc configuration context
1644  *
1645  * Return: Tx Completion ring size
1646  */
1647 int wlan_cfg_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
1648 
1649 /**
1650  * wlan_cfg_set_tx_comp_ring_size - Set Tx completion ring size
1651  * @cfg: soc configuration context
1652  * @ring_size: TX completion ring size to be set
1653  *
1654  * Return: None
1655  */
1656 void wlan_cfg_set_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg,
1657 				    int ring_size);
1658 
1659 /**
1660  * wlan_cfg_get_dp_soc_wbm_release_ring_size - Get wbm_release_ring size
1661  * @cfg: soc configuration context
1662  *
1663  * Return: wbm_release_ring size
1664  */
1665 int
1666 wlan_cfg_get_dp_soc_wbm_release_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
1667 
1668 /**
1669  * wlan_cfg_get_dp_soc_tcl_cmd_credit_ring_size - Get command/credit ring size
1670  * @cfg: soc configuration context
1671  *
1672  * Return: tcl_cmd_credit_ring size
1673  */
1674 int
1675 wlan_cfg_get_dp_soc_tcl_cmd_credit_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
1676 
1677 /**
1678  * wlan_cfg_get_dp_soc_tcl_status_ring_size - Get tcl_status_ring size
1679  * @cfg: soc configuration context
1680  *
1681  * Return: tcl_status_ring size
1682  */
1683 int
1684 wlan_cfg_get_dp_soc_tcl_status_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
1685 
1686 /**
1687  * wlan_cfg_get_dp_soc_reo_reinject_ring_size - Get reo_reinject_ring size
1688  * @cfg: soc configuration context
1689  *
1690  * Return: reo_reinject_ring size
1691  */
1692 int
1693 wlan_cfg_get_dp_soc_reo_reinject_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
1694 
1695 /**
1696  * wlan_cfg_get_dp_soc_rx_release_ring_size - Get rx_release_ring size
1697  * @cfg: soc configuration context
1698  *
1699  * Return: rx_release_ring size
1700  */
1701 int
1702 wlan_cfg_get_dp_soc_rx_release_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
1703 
1704 /**
1705  * wlan_cfg_get_dp_soc_reo_exception_ring_size - Get reo_exception_ring size
1706  * @cfg: soc configuration context
1707  *
1708  * Return: reo_exception_ring size
1709  */
1710 int
1711 wlan_cfg_get_dp_soc_reo_exception_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
1712 
1713 /**
1714  * wlan_cfg_get_dp_soc_reo_cmd_ring_size - Get reo_cmd_ring size
1715  * @cfg: soc configuration context
1716  *
1717  * Return: reo_cmd_ring size
1718  */
1719 int
1720 wlan_cfg_get_dp_soc_reo_cmd_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
1721 
1722 /**
1723  * wlan_cfg_get_dp_soc_reo_status_ring_size - Get reo_status_ring size
1724  * @cfg: soc configuration context
1725  *
1726  * Return: reo_status_ring size
1727  */
1728 int
1729 wlan_cfg_get_dp_soc_reo_status_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
1730 
1731 /**
1732  * wlan_cfg_get_dp_soc_tx_desc_limit_0 - Get tx desc limit for 5G H
1733  * @cfg: soc configuration context
1734  *
1735  * Return: tx desc limit for 5G H
1736  */
1737 int
1738 wlan_cfg_get_dp_soc_tx_desc_limit_0(struct wlan_cfg_dp_soc_ctxt *cfg);
1739 
1740 /**
1741  * wlan_cfg_get_dp_soc_tx_desc_limit_1 - Get tx desc limit for 2G
1742  * @cfg: soc configuration context
1743  *
1744  * Return: tx desc limit for 2G
1745  */
1746 int
1747 wlan_cfg_get_dp_soc_tx_desc_limit_1(struct wlan_cfg_dp_soc_ctxt *cfg);
1748 
1749 /**
1750  * wlan_cfg_get_dp_soc_tx_desc_limit_2 - Get tx desc limit for 5G L
1751  * @cfg: soc configuration context
1752  *
1753  * Return: tx desc limit for 5G L
1754  */
1755 int
1756 wlan_cfg_get_dp_soc_tx_desc_limit_2(struct wlan_cfg_dp_soc_ctxt *cfg);
1757 
1758 /**
1759  * wlan_cfg_get_dp_soc_tx_device_limit - Get tx device limit
1760  * @cfg: soc configuration context
1761  *
1762  * Return: tx device limit
1763  */
1764 int
1765 wlan_cfg_get_dp_soc_tx_device_limit(struct wlan_cfg_dp_soc_ctxt *cfg);
1766 
1767 /**
1768  * wlan_cfg_get_dp_soc_tx_spl_device_limit - Get tx device limit for special
1769  *					     frames
1770  * @cfg: Configuration Handle
1771  *
1772  * Return: tx device limit for special frames
1773  */
1774 int
1775 wlan_cfg_get_dp_soc_tx_spl_device_limit(struct wlan_cfg_dp_soc_ctxt *cfg);
1776 
1777 /**
1778  * wlan_cfg_get_dp_soc_tx_sw_internode_queue - Get tx sw internode queue
1779  * @cfg: soc configuration context
1780  *
1781  * Return: tx sw internode queue
1782  */
1783 int
1784 wlan_cfg_get_dp_soc_tx_sw_internode_queue(struct wlan_cfg_dp_soc_ctxt *cfg);
1785 
1786 /**
1787  * wlan_cfg_get_dp_soc_rxdma_refill_ring_size - Get rxdma refill ring size
1788  * @cfg: soc configuration context
1789  *
1790  * Return: rxdma refill ring size
1791  */
1792 int
1793 wlan_cfg_get_dp_soc_rxdma_refill_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
1794 
1795 /**
1796  * wlan_cfg_set_dp_soc_rxdma_refill_ring_size - Set rxdma refill ring size
1797  * @cfg: soc configuration context
1798  * @ring_size: rxdma refill ring size to be set
1799  *
1800  * Return: None
1801  */
1802 void
1803 wlan_cfg_set_dp_soc_rxdma_refill_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg,
1804 					   int ring_size);
1805 
1806 /**
1807  * wlan_cfg_get_dp_soc_rxdma_refill_lt_disable - Get RxDMA refill LT status
1808  * @cfg: soc configuration context
1809  *
1810  * Return: true if Low threshold disable else false
1811  */
1812 bool
1813 wlan_cfg_get_dp_soc_rxdma_refill_lt_disable(struct wlan_cfg_dp_soc_ctxt *cfg);
1814 
1815 /**
1816  * wlan_cfg_get_dp_soc_rxdma_err_dst_ring_size - Get rxdma dst ring size
1817  * @cfg: soc configuration context
1818  *
1819  * Return: rxdma error dst ring size
1820  */
1821 int
1822 wlan_cfg_get_dp_soc_rxdma_err_dst_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
1823 
1824 /**
1825  * wlan_cfg_get_dp_soc_rx_sw_desc_weight - Get rx sw desc weight
1826  * @cfg: soc configuration context
1827  *
1828  * Return: rx_sw_desc_weight
1829  */
1830 int
1831 wlan_cfg_get_dp_soc_rx_sw_desc_weight(struct wlan_cfg_dp_soc_ctxt *cfg);
1832 
1833 /**
1834  * wlan_cfg_get_dp_soc_rx_sw_desc_num - Get rx sw desc num
1835  * @cfg: soc configuration context
1836  *
1837  * Return: rx_sw_desc_num
1838  */
1839 int
1840 wlan_cfg_get_dp_soc_rx_sw_desc_num(struct wlan_cfg_dp_soc_ctxt *cfg);
1841 
1842 /**
1843  * wlan_cfg_set_dp_soc_rx_sw_desc_num - Set rx sw desc num
1844  * @cfg: soc configuration context
1845  * @desc_num: Number of Rx descriptors to be set
1846  *
1847  * Return: None
1848  */
1849 void
1850 wlan_cfg_set_dp_soc_rx_sw_desc_num(struct wlan_cfg_dp_soc_ctxt *cfg,
1851 				   int desc_num);
1852 
1853 /**
1854  * wlan_cfg_get_dp_caps - Get dp capabilities
1855  * @cfg: soc configuration context
1856  * @dp_caps: enum for dp capabilities
1857  *
1858  * Return: bool if a dp capabilities is enabled
1859  */
1860 bool
1861 wlan_cfg_get_dp_caps(struct wlan_cfg_dp_soc_ctxt *cfg,
1862 		     enum cdp_capabilities dp_caps);
1863 
1864 /**
1865  * wlan_set_srng_cfg() - Fill per ring specific
1866  * configuration parameters
1867  * @wlan_cfg: global srng configuration table
1868  *
1869  * Return: None
1870  */
1871 void wlan_set_srng_cfg(struct wlan_srng_cfg **wlan_cfg);
1872 
1873 #ifdef QCA_LL_TX_FLOW_CONTROL_V2
1874 int wlan_cfg_get_tx_flow_stop_queue_th(struct wlan_cfg_dp_soc_ctxt *cfg);
1875 
1876 int wlan_cfg_get_tx_flow_start_queue_offset(struct wlan_cfg_dp_soc_ctxt *cfg);
1877 #endif /* QCA_LL_TX_FLOW_CONTROL_V2 */
1878 int wlan_cfg_get_rx_defrag_min_timeout(struct wlan_cfg_dp_soc_ctxt *cfg);
1879 
1880 int wlan_cfg_get_defrag_timeout_check(struct wlan_cfg_dp_soc_ctxt *cfg);
1881 
1882 /**
1883  * wlan_cfg_get_rx_flow_search_table_size() - Return the size of Rx FST
1884  *                                            in number of entries
1885  *
1886  * @cfg: soc configuration context
1887  *
1888  * Return: rx_fst_size
1889  */
1890 uint16_t
1891 wlan_cfg_get_rx_flow_search_table_size(struct wlan_cfg_dp_soc_ctxt *cfg);
1892 
1893 /**
1894  * wlan_cfg_rx_fst_get_max_search() - Return the max skid length for FST search
1895  *
1896  * @cfg: soc configuration context
1897  *
1898  * Return: max_search
1899  */
1900 uint8_t wlan_cfg_rx_fst_get_max_search(struct wlan_cfg_dp_soc_ctxt *cfg);
1901 
1902 /**
1903  * wlan_cfg_rx_fst_get_hash_key() - Return Toeplitz Hash Key used for FST
1904  *                                  search
1905  *
1906  * @cfg: soc configuration context
1907  *
1908  * Return: 320-bit Hash Key
1909  */
1910 uint8_t *wlan_cfg_rx_fst_get_hash_key(struct wlan_cfg_dp_soc_ctxt *cfg);
1911 
1912 /**
1913  * wlan_cfg_set_rx_flow_tag_enabled() - set rx flow tag enabled flag in
1914  *                                      DP soc context
1915  * @cfg: soc configuration context
1916  * @val: Rx flow tag feature flag value
1917  *
1918  * Return: None
1919  */
1920 void wlan_cfg_set_rx_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg,
1921 				      bool val);
1922 
1923 /**
1924  * wlan_cfg_is_rx_flow_tag_enabled() - get rx flow tag enabled flag from
1925  *                                     DP soc context
1926  * @cfg: soc configuration context
1927  *
1928  * Return: true if feature is enabled, else false
1929  */
1930 bool wlan_cfg_is_rx_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
1931 
1932 /**
1933  * wlan_cfg_set_rx_flow_search_table_per_pdev() - Set flag to indicate that
1934  *                                                Rx FST is per pdev
1935  * @cfg: soc configuration context
1936  * @val: boolean flag indicating Rx FST per pdev or per SOC
1937  *
1938  * Return: None
1939  */
1940 void
1941 wlan_cfg_set_rx_flow_search_table_per_pdev(struct wlan_cfg_dp_soc_ctxt *cfg,
1942 					   bool val);
1943 
1944 /**
1945  * wlan_cfg_is_rx_flow_search_table_per_pdev() - get RX FST flag for per pdev
1946  * @cfg: soc configuration context
1947  *
1948  * Return: true if Rx FST is per pdev, else false
1949  */
1950 bool
1951 wlan_cfg_is_rx_flow_search_table_per_pdev(struct wlan_cfg_dp_soc_ctxt *cfg);
1952 
1953 /**
1954  * wlan_cfg_set_rx_flow_search_table_size() - set RX FST size in DP SoC context
1955  * @cfg: soc configuration context
1956  * @val: Rx FST size in number of entries
1957  *
1958  * Return: None
1959  */
1960 void
1961 wlan_cfg_set_rx_flow_search_table_size(struct wlan_cfg_dp_soc_ctxt *cfg,
1962 				       uint16_t val);
1963 
1964 /**
1965  * wlan_cfg_set_rx_mon_protocol_flow_tag_enabled() - set mon rx tag enabled flag
1966  *                                                   in DP soc context
1967  * @cfg: soc configuration context
1968  * @val: Rx protocol or flow tag feature flag value in monitor mode from INI
1969  *
1970  * Return: None
1971  */
1972 void
1973 wlan_cfg_set_rx_mon_protocol_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg,
1974 					      bool val);
1975 
1976 /**
1977  * wlan_cfg_is_rx_mon_protocol_flow_tag_enabled() - get mon rx tag enabled flag
1978  *                                                  from DP soc context
1979  * @cfg: soc configuration context
1980  *
1981  * Return: true if feature is enabled in monitor mode for protocol or flow
1982  * tagging in INI, false otherwise
1983  */
1984 bool
1985 wlan_cfg_is_rx_mon_protocol_flow_tag_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
1986 
1987 /**
1988  * wlan_cfg_set_tx_per_pkt_vdev_id_check() - set flag to enable perpkt
1989  *                                              vdev id check in tx.
1990  * @cfg: soc configuration context
1991  * @val: feature flag value
1992  *
1993  * Return: None
1994  */
1995 void
1996 wlan_cfg_set_tx_per_pkt_vdev_id_check(struct wlan_cfg_dp_soc_ctxt *cfg,
1997 				      bool val);
1998 
1999 /**
2000  * wlan_cfg_is_tx_per_pkt_vdev_id_check_enabled() - get flag to check if
2001  *                              perpkt vdev id check is enabled in tx.
2002  * @cfg: soc configuration context
2003  *
2004  * Return: true if feature is enabled, false otherwise
2005  */
2006 bool
2007 wlan_cfg_is_tx_per_pkt_vdev_id_check_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
2008 
2009 /**
2010  * wlan_cfg_fill_interrupt_mask() - set interrupt mask
2011  *
2012  * @wlan_cfg_ctx: soc configuration context
2013  * @num_dp_msi: Number of DP interrupts available (0 for integrated)
2014  * @interrupt_mode: Type of interrupt
2015  * @is_monitor_mode: is monitor mode enabled
2016  * @ppeds_attached: is ppeds attached
2017  * @umac_reset_support: Umac reset support
2018  *
2019  * Return: void
2020  */
2021 void wlan_cfg_fill_interrupt_mask(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
2022 				  int num_dp_msi, int interrupt_mode,
2023 				  bool is_monitor_mode, bool ppeds_attached,
2024 				  bool umac_reset_support);
2025 
2026 /**
2027  * wlan_cfg_is_rx_buffer_pool_enabled() - Get RX buffer pool enabled flag
2028  *
2029  *
2030  * @cfg: soc configuration context
2031  *
2032  * Return: true if enabled, false otherwise.
2033  */
2034 bool wlan_cfg_is_rx_buffer_pool_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
2035 
2036 /**
2037  * wlan_cfg_is_rx_refill_buffer_pool_enabled() - Get RX refill buffer pool enabled flag
2038  *
2039  *
2040  * @cfg: soc configuration context
2041  *
2042  * Return: true if enabled, false otherwise.
2043  */
2044 bool wlan_cfg_is_rx_refill_buffer_pool_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
2045 
2046 /**
2047  * wlan_cfg_is_dp_buf_page_frag_alloc_enable() - Get nbuf allocations from page
2048  *						 frags.
2049  *
2050  * @cfg: soc configuration context
2051  *
2052  * Return: true if enabled, false otherwise.
2053  */
2054 
2055 bool
2056 wlan_cfg_is_dp_buf_page_frag_alloc_enable(struct wlan_cfg_dp_soc_ctxt *cfg);
2057 
2058 #ifdef WLAN_FEATURE_RX_PREALLOC_BUFFER_POOL
2059 /**
2060  * wlan_cfg_get_rx_refill_buf_pool_size() - Get Rx refill buf pool size
2061  *
2062  * @cfg: soc configuration context
2063  *
2064  * Return: Rx refill buffer pool size
2065  */
2066 int wlan_cfg_get_rx_refill_buf_pool_size(struct wlan_cfg_dp_soc_ctxt *cfg);
2067 
2068 /**
2069  * wlan_cfg_set_rx_refill_buf_pool_size() - Set Rx refill buf pool size
2070  *
2071  * @cfg: soc configuration context
2072  * @size: size of the Rx buffer pool size
2073  *
2074  * Return: None
2075  */
2076 void
2077 wlan_cfg_set_rx_refill_buf_pool_size(struct wlan_cfg_dp_soc_ctxt *cfg,
2078 				     int size);
2079 #endif
2080 
2081 void wlan_cfg_set_tso_desc_attach_defer(struct wlan_cfg_dp_soc_ctxt *cfg,
2082 					bool val);
2083 
2084 bool wlan_cfg_is_tso_desc_attach_defer(struct wlan_cfg_dp_soc_ctxt *cfg);
2085 
2086 /**
2087  * wlan_cfg_get_reo_rings_mapping() - Get Reo destination ring bitmap
2088  *
2089  *
2090  * @cfg: soc configuration context
2091  *
2092  * Return: reo ring bitmap.
2093  */
2094 uint32_t wlan_cfg_get_reo_rings_mapping(struct wlan_cfg_dp_soc_ctxt *cfg);
2095 
2096 /**
2097  * wlan_cfg_get_rx_rings_mapping() - Get RX ring bitmap
2098  *
2099  * @cfg: soc configuration context
2100  *
2101  * Return: rx ring bitmap.
2102  */
2103 uint32_t wlan_cfg_get_rx_rings_mapping(struct wlan_cfg_dp_soc_ctxt *cfg);
2104 
2105 /**
2106  * wlan_cfg_set_peer_ext_stats() - set peer extended stats
2107  *
2108  * @cfg: soc configuration context
2109  * @val: Flag value read from INI
2110  *
2111  * Return: void
2112  */
2113 void
2114 wlan_cfg_set_peer_ext_stats(struct wlan_cfg_dp_soc_ctxt *cfg,
2115 			    bool val);
2116 
2117 /**
2118  * wlan_cfg_set_peer_jitter_stats() - set peer jitter stats
2119  *
2120  * @cfg: soc configuration context
2121  * @val: Flag value read from INI
2122  *
2123  * Return: bool
2124  */
2125 void
2126 wlan_cfg_set_peer_jitter_stats(struct wlan_cfg_dp_soc_ctxt *cfg,
2127 			       bool val);
2128 
2129 /**
2130  * wlan_cfg_is_peer_ext_stats_enabled() - Check if peer extended
2131  *                                        stats are enabled
2132  *
2133  * @cfg: soc configuration context
2134  *
2135  * Return: bool
2136  */
2137 bool
2138 wlan_cfg_is_peer_ext_stats_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
2139 
2140 /**
2141  * wlan_cfg_is_peer_jitter_stats_enabled() - check if jitter stats are enabled
2142  *
2143  * @cfg: soc configuration context
2144  *
2145  * Return: bool
2146  */
2147 bool
2148 wlan_cfg_is_peer_jitter_stats_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
2149 
2150 /**
2151  * wlan_cfg_is_poll_mode_enabled() - Check if poll mode is enabled
2152  *
2153  * @cfg: soc configuration context
2154  *
2155  * Return: bool
2156  */
2157 
2158 bool wlan_cfg_is_poll_mode_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
2159 
2160 /**
2161  * wlan_cfg_is_fst_in_cmem_enabled() - Check if FST in CMEM is enabled
2162  * @cfg: soc configuration context
2163  *
2164  * Return: true if enabled, false otherwise.
2165  */
2166 bool wlan_cfg_is_fst_in_cmem_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
2167 
2168 /**
2169  * wlan_cfg_is_swlm_enabled() - Get SWLMenabled flag
2170  * @cfg: soc configuration context
2171  *
2172  * Return: true if enabled, false otherwise.
2173  */
2174 bool wlan_cfg_is_swlm_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
2175 
2176 /**
2177  * wlan_cfg_set_peer_link_stats() - set peer link stats
2178  *
2179  * @cfg: soc configuration context
2180  * @val: Flag value read from INI
2181  *
2182  * Return: void
2183  */
2184 void
2185 wlan_cfg_set_peer_link_stats(struct wlan_cfg_dp_soc_ctxt *cfg,
2186 			     bool val);
2187 /**
2188  * wlan_cfg_is_peer_link_stats_enabled() - check if link peer stats are enabled
2189  *
2190  * @cfg: soc configuration context
2191  *
2192  * Return: bool
2193  */
2194 bool
2195 wlan_cfg_is_peer_link_stats_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
2196 
2197 #ifdef IPA_OFFLOAD
2198 /**
2199  * wlan_cfg_ipa_tx_ring_size - Get Tx DMA ring size (TCL Data Ring)
2200  * @cfg: dp cfg context
2201  *
2202  * Return: IPA Tx Ring Size
2203  */
2204 uint32_t wlan_cfg_ipa_tx_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
2205 
2206 /**
2207  * wlan_cfg_ipa_tx_comp_ring_size - Get Tx completion ring size (WBM Ring)
2208  * @cfg: dp cfg context
2209  *
2210  * Return: IPA Tx Completion ring size
2211  */
2212 uint32_t wlan_cfg_ipa_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
2213 
2214 /**
2215  * wlan_cfg_ipa_tx_alt_ring_size - Get Tx alt DMA ring size (TCL Data Ring)
2216  * @cfg: dp cfg context
2217  *
2218  * Return: IPA Tx alt Ring Size
2219  */
2220 int wlan_cfg_ipa_tx_alt_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
2221 
2222 /**
2223  * wlan_cfg_ipa_tx_alt_comp_ring_size - Get Tx alt comp DMA ring size
2224  *  (TCL Data Ring)
2225  * @cfg: dp cfg context
2226  *
2227  * Return: IPA Tx alt comp Ring Size
2228  */
2229 int
2230 wlan_cfg_ipa_tx_alt_comp_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
2231 
2232 #else
2233 static inline
wlan_cfg_ipa_tx_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)2234 uint32_t wlan_cfg_ipa_tx_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
2235 {
2236 	return 0;
2237 }
2238 
2239 static inline
wlan_cfg_ipa_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)2240 uint32_t wlan_cfg_ipa_tx_comp_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
2241 {
2242 	return 0;
2243 }
2244 #endif
2245 
2246 /**
2247  * wlan_cfg_radio0_default_reo_get -  Get Radio0 default REO
2248  * @cfg: soc configuration context
2249  *
2250  * Return: None
2251  */
2252 uint8_t wlan_cfg_radio0_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg);
2253 
2254 /**
2255  * wlan_cfg_radio1_default_reo_get - Get Radio1 default REO
2256  * @cfg: soc configuration context
2257  *
2258  * Return: None
2259  */
2260 uint8_t wlan_cfg_radio1_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg);
2261 
2262 /**
2263  * wlan_cfg_radio2_default_reo_get() - Get Radio2 default REO
2264  * @cfg: soc configuration context
2265  *
2266  * Return: None
2267  */
2268 uint8_t wlan_cfg_radio2_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg);
2269 
2270 /**
2271  * wlan_cfg_set_rxdma1_enable() - Enable rxdma1
2272  * @wlan_cfg_ctx: soc configuration context
2273  *
2274  * Return: None
2275  */
2276 void wlan_cfg_set_rxdma1_enable(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx);
2277 
2278 /**
2279  * wlan_cfg_is_delay_mon_replenish() - Get if delayed monitor replenish
2280  * is enabled
2281  * @cfg: soc configuration context
2282  *
2283  * Return: true if enabled, false otherwise.
2284  */
2285 bool
2286 wlan_cfg_is_delay_mon_replenish(struct wlan_cfg_dp_soc_ctxt *cfg);
2287 
2288 /**
2289  * wlan_cfg_set_delay_mon_replenish() - Set delayed monitor replenish
2290  * @cfg: soc configuration context
2291  * @val: val to set
2292  *
2293  * Return: None
2294  */
2295 void
2296 wlan_cfg_set_delay_mon_replenish(struct wlan_cfg_dp_soc_ctxt *cfg, bool val);
2297 
2298 /**
2299  * wlan_cfg_dp_soc_ctx_dump() - Dump few DP cfg soc parameters
2300  * @cfg: soc configuration context
2301  *
2302  * Return:
2303  */
2304 void wlan_cfg_dp_soc_ctx_dump(struct wlan_cfg_dp_soc_ctxt *cfg);
2305 
2306 #ifdef WLAN_SUPPORT_PPEDS
2307 /**
2308  * wlan_cfg_get_dp_soc_ppeds_enable() - API to get ppe enable flag
2309  * @cfg: Configuration Handle
2310  *
2311  * Return: true if ppeds support is enabled else return false
2312  */
2313 bool
2314 wlan_cfg_get_dp_soc_ppeds_enable(struct wlan_cfg_dp_soc_ctxt *cfg);
2315 
2316 /**
2317  * wlan_cfg_get_dp_soc_reo2ppe_ring_size() - get ppe rx ring size
2318  * @cfg: Configuration Handle
2319  *
2320  * Return: size of reo2ppe ring
2321  */
2322 int
2323 wlan_cfg_get_dp_soc_reo2ppe_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
2324 
2325 /**
2326  * wlan_cfg_get_dp_soc_ppe2tcl_ring_size() - get ppe tx ring size
2327  * @cfg: Configuration Handle
2328  *
2329  * Return: size of ppe2tcl ring
2330  */
2331 int
2332 wlan_cfg_get_dp_soc_ppe2tcl_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
2333 
2334 /**
2335  * wlan_cfg_get_dp_soc_ppeds_num_tx_desc() - Number of ppeds tx Descriptors
2336  * @cfg: Configuration Handle
2337  *
2338  * Return: num_tx_desc
2339  */
2340 int
2341 wlan_cfg_get_dp_soc_ppeds_num_tx_desc(struct wlan_cfg_dp_soc_ctxt *cfg);
2342 
2343 /**
2344  * wlan_cfg_get_dp_soc_ppeds_tx_desc_hotlist_len() - Max hotlist len of tx descs
2345  * @cfg: Configuration Handle
2346  *
2347  * Return: hotlist len
2348  */
2349 int
2350 wlan_cfg_get_dp_soc_ppeds_tx_desc_hotlist_len(struct wlan_cfg_dp_soc_ctxt *cfg);
2351 /**
2352  * wlan_cfg_get_dp_soc_ppeds_tx_comp_napi_budget() - ppeds Tx comp napi budget
2353  * @cfg: Configuration Handle
2354  *
2355  * Return: napi budget
2356  */
2357 int
2358 wlan_cfg_get_dp_soc_ppeds_tx_comp_napi_budget(struct wlan_cfg_dp_soc_ctxt *cfg);
2359 #else
2360 static inline bool
wlan_cfg_get_dp_soc_ppeds_enable(struct wlan_cfg_dp_soc_ctxt * cfg)2361 wlan_cfg_get_dp_soc_ppeds_enable(struct wlan_cfg_dp_soc_ctxt *cfg)
2362 {
2363 	return false;
2364 }
2365 
2366 static inline int
wlan_cfg_get_dp_soc_reo2ppe_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)2367 wlan_cfg_get_dp_soc_reo2ppe_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
2368 {
2369 	return 0;
2370 }
2371 
2372 static inline int
wlan_cfg_get_dp_soc_ppe2tcl_ring_size(struct wlan_cfg_dp_soc_ctxt * cfg)2373 wlan_cfg_get_dp_soc_ppe2tcl_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg)
2374 {
2375 	return 0;
2376 }
2377 
2378 static inline int
wlan_cfg_get_dp_soc_ppeds_num_tx_desc(struct wlan_cfg_dp_soc_ctxt * cfg)2379 wlan_cfg_get_dp_soc_ppeds_num_tx_desc(struct wlan_cfg_dp_soc_ctxt *cfg)
2380 {
2381 	return 0;
2382 }
2383 
2384 static inline int
wlan_cfg_get_dp_soc_ppeds_tx_comp_napi_budget(struct wlan_cfg_dp_soc_ctxt * cfg)2385 wlan_cfg_get_dp_soc_ppeds_tx_comp_napi_budget(struct wlan_cfg_dp_soc_ctxt *cfg)
2386 {
2387 	return 0;
2388 }
2389 
2390 static inline int
wlan_cfg_get_dp_soc_ppeds_tx_desc_hotlist_len(struct wlan_cfg_dp_soc_ctxt * cfg)2391 wlan_cfg_get_dp_soc_ppeds_tx_desc_hotlist_len(struct wlan_cfg_dp_soc_ctxt *cfg)
2392 {
2393 	return 0;
2394 }
2395 #endif
2396 
2397 /**
2398  * wlan_cfg_get_prealloc_cfg() - Get dp prealloc related cfg param
2399  * @ctrl_psoc: PSOC object
2400  * @cfg: cfg ctx where values will be populated
2401  *
2402  * Return: None
2403  */
2404 void
2405 wlan_cfg_get_prealloc_cfg(struct cdp_ctrl_objmgr_psoc *ctrl_psoc,
2406 			  struct wlan_dp_prealloc_cfg *cfg);
2407 #ifdef WLAN_FEATURE_PKT_CAPTURE_V2
2408 /**
2409  * wlan_cfg_get_pkt_capture_mode() - Get packet capture mode config
2410  * @cfg: config context
2411  *
2412  * Return: value of packet capture mode
2413  */
2414 uint32_t wlan_cfg_get_pkt_capture_mode(struct wlan_cfg_dp_soc_ctxt *cfg);
2415 #else
2416 static inline
wlan_cfg_get_pkt_capture_mode(struct wlan_cfg_dp_soc_ctxt * cfg)2417 uint32_t wlan_cfg_get_pkt_capture_mode(struct wlan_cfg_dp_soc_ctxt *cfg)
2418 {
2419 	return 0;
2420 }
2421 #endif
2422 
2423 /**
2424  * wlan_cfg_get_dp_soc_rx_mon_buf_ring_size() - Rx MON buf ring size
2425  * @cfg:  Configuration Handle
2426  *
2427  * Return: Size of Rx MON buf ring size
2428  */
2429 uint32_t
2430 wlan_cfg_get_dp_soc_rx_mon_buf_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
2431 
2432 /**
2433  * wlan_cfg_get_dp_soc_tx_mon_buf_ring_size() - Tx MON buf ring size
2434  * @cfg:  Configuration Handle
2435  *
2436  * Return: Size of Tx MON buf ring size
2437  */
2438 uint32_t
2439 wlan_cfg_get_dp_soc_tx_mon_buf_ring_size(struct wlan_cfg_dp_soc_ctxt *cfg);
2440 
2441 /**
2442  * wlan_cfg_get_dma_rx_mon_dest_ring_size() - Rx MON dest ring size
2443  * @cfg:  Configuration Handle
2444  *
2445  * Return: Size of Rx MON dest ring size
2446  */
2447 int wlan_cfg_get_dma_rx_mon_dest_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg);
2448 
2449 /**
2450  * wlan_cfg_get_dma_sw2rxdma_link_ring_size() - SW2RXDMA link ring size
2451  * @cfg:  Configuration Handle
2452  *
2453  * Return: Size of SW2RXDMA link ring size
2454  */
2455 int wlan_cfg_get_dma_sw2rxdma_link_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg);
2456 
2457 /**
2458  * wlan_cfg_get_dma_tx_mon_dest_ring_size() - Tx MON dest ring size
2459  * @cfg:  Configuration Handle
2460  *
2461  * Return: Size of Tx MON dest ring size
2462  */
2463 int wlan_cfg_get_dma_tx_mon_dest_ring_size(struct wlan_cfg_dp_pdev_ctxt *cfg);
2464 
2465 /**
2466  * wlan_cfg_get_rx_rel_ring_id() - get wbm2sw ring id for Rx release ring
2467  * @cfg: Configuration Handle
2468  *
2469  * Return: wbm2sw ring id
2470  */
2471 uint8_t
2472 wlan_cfg_get_rx_rel_ring_id(struct wlan_cfg_dp_soc_ctxt *cfg);
2473 
2474 /**
2475  * wlan_cfg_set_rx_rel_ring_id() - set wbm2sw ring id for Rx release ring
2476  * @cfg: soc configuration context
2477  * @wbm2sw_ring_id: wbm2sw ring id
2478  *
2479  * Return: None
2480  */
2481 void
2482 wlan_cfg_set_rx_rel_ring_id(struct wlan_cfg_dp_soc_ctxt *cfg,
2483 			    uint8_t wbm2sw_ring_id);
2484 
2485 /**
2486  * wlan_cfg_set_vdev_stats_hw_offload_config() - Set hw vdev stats offload
2487  *						 config
2488  * @cfg: config context
2489  * @value: value to be set
2490  *
2491  * Return: none
2492  */
2493 void
2494 wlan_cfg_set_vdev_stats_hw_offload_config(struct wlan_cfg_dp_soc_ctxt *cfg,
2495 					  bool value);
2496 
2497 /**
2498  * wlan_cfg_get_vdev_stats_hw_offload_config() - Get hw vdev stats offload
2499  *						 config
2500  * @cfg: config context
2501  *
2502  * Return: value of hw vdev stats config
2503  */
2504 bool
2505 wlan_cfg_get_vdev_stats_hw_offload_config(struct wlan_cfg_dp_soc_ctxt *cfg);
2506 
2507 /**
2508  * wlan_cfg_get_vdev_stats_hw_offload_timer()- Get hw vdev stats timer duration
2509  * @cfg: config context
2510  *
2511  * Return: value of hw vdev stats timer duration
2512  */
2513 int wlan_cfg_get_vdev_stats_hw_offload_timer(struct wlan_cfg_dp_soc_ctxt *cfg);
2514 
2515 /**
2516  * wlan_cfg_set_sawf_config() - Set SAWF config enable/disable
2517  * @cfg: config context
2518  * @value: value to be set
2519  *
2520  * Return: none
2521  */
2522 void
2523 wlan_cfg_set_sawf_config(struct wlan_cfg_dp_soc_ctxt *cfg, bool value);
2524 
2525 /**
2526  * wlan_cfg_get_sawf_config() - Get SAWF config enable/disable
2527  * @cfg: config context
2528  *
2529  * Return: true or false
2530  */
2531 bool
2532 wlan_cfg_get_sawf_config(struct wlan_cfg_dp_soc_ctxt *cfg);
2533 
2534 /**
2535  * wlan_cfg_set_sawf_stats_config() - Set SAWF stats config
2536  * @cfg: config context
2537  * @value: value to be set
2538  *
2539  * Return: void
2540  */
2541 void
2542 wlan_cfg_set_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt *cfg, uint8_t value);
2543 
2544 /**
2545  * wlan_cfg_get_sawf_stats_config() - Get SAWF stats config
2546  * @cfg: config context
2547  *
2548  * Return: value for sawf_stats_config
2549  */
2550 uint8_t
2551 wlan_cfg_get_sawf_stats_config(struct wlan_cfg_dp_soc_ctxt *cfg);
2552 
2553 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
2554 /**
2555  * wlan_cfg_mlo_rx_ring_map_get() - get rx ring map
2556  * @cfg: soc configuration context
2557  *
2558  * Return: rx_ring_map
2559  */
2560 uint8_t
2561 wlan_cfg_mlo_rx_ring_map_get(struct wlan_cfg_dp_soc_ctxt *cfg);
2562 #endif
2563 
2564 /**
2565  * wlan_cfg_set_host2txmon_ring_mask() - Set host2txmon ring
2566  *                               interrupt mask mapped to an interrupt context
2567  * @cfg: Configuration Handle
2568  * @context: interrupt context
2569  * @mask: interrupt mask
2570  *
2571  * Return: None
2572  */
2573 void wlan_cfg_set_host2txmon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
2574 				       int context, int mask);
2575 /**
2576  * wlan_cfg_get_host2txmon_ring_mask() - Return host2txmon ring
2577  *                               interrupt mask mapped to an interrupt context
2578  * @cfg: Configuration Handle
2579  * @context: Numerical ID identifying the Interrupt/NAPI context
2580  *
2581  * Return: int_host2txmon_ring_mask[context]
2582  */
2583 int wlan_cfg_get_host2txmon_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
2584 				      int context);
2585 /**
2586  * wlan_cfg_set_txmon_hw_support () - Set txmon hw support
2587  * @cfg:  Configuration Handle
2588  * @txmon_hw_support: value to set
2589  *
2590  * Return: None
2591  */
2592 void wlan_cfg_set_txmon_hw_support(struct wlan_cfg_dp_soc_ctxt *cfg,
2593 				   bool txmon_hw_support);
2594 
2595 /**
2596  * wlan_cfg_get_txmon_hw_support () - Get txmon hw support
2597  * @cfg:  Configuration Handle
2598  *
2599  * Return: txmon_hw_support
2600  */
2601 bool wlan_cfg_get_txmon_hw_support(struct wlan_cfg_dp_soc_ctxt *cfg);
2602 
2603 void wlan_cfg_set_txmon_sw_peer_filtering(struct wlan_cfg_dp_soc_ctxt *cfg,
2604 					  bool txmon_sw_peer_filtering);
2605 bool wlan_cfg_get_txmon_sw_peer_filtering(struct wlan_cfg_dp_soc_ctxt *cfg);
2606 
2607 #ifdef WLAN_TX_PKT_CAPTURE_ENH
2608 /**
2609  * wlan_cfg_get_tx_capt_max_mem - Get max memory allowed for TX capture feature
2610  * @cfg: Configuration Handle
2611  *
2612  * Return: user given size in bytes
2613  */
2614 static inline int
wlan_cfg_get_tx_capt_max_mem(struct wlan_cfg_dp_soc_ctxt * cfg)2615 wlan_cfg_get_tx_capt_max_mem(struct wlan_cfg_dp_soc_ctxt *cfg)
2616 {
2617 	return cfg->tx_capt_max_mem_allowed;
2618 }
2619 
2620 /**
2621  * wlan_cfg_get_tx_capt_rbm_id - Get RBM_ID to be used for tx capture feature
2622  * @cfg: Configuration Handle
2623  * @idx: Pdev_id
2624  *
2625  * Return: Return Buffer manager id to be used
2626  */
2627 static inline int
wlan_cfg_get_tx_capt_rbm_id(struct wlan_cfg_dp_soc_ctxt * cfg,uint8_t idx)2628 wlan_cfg_get_tx_capt_rbm_id(struct wlan_cfg_dp_soc_ctxt *cfg, uint8_t idx)
2629 {
2630 	if (idx >= MAX_PDEV_CNT) {
2631 		qdf_err("!!! pdev index is greater than expected");
2632 		qdf_assert(0);
2633 		/* resetting idx to zero */
2634 		idx = 0;
2635 	}
2636 
2637 	return cfg->tx_capt_rbm_id[idx];
2638 }
2639 #endif /* WLAN_TX_PKT_CAPTURE_ENH */
2640 
2641 #ifdef DP_TX_PACKET_INSPECT_FOR_ILP
2642 /**
2643  * wlan_cfg_get_tx_ilp_inspect_config() - Get TX ILP configuration
2644  * @cfg: Configuration Handle
2645  *
2646  * Return: TX ILP enable or not
2647  */
2648 static inline bool
wlan_cfg_get_tx_ilp_inspect_config(struct wlan_cfg_dp_soc_ctxt * cfg)2649 wlan_cfg_get_tx_ilp_inspect_config(struct wlan_cfg_dp_soc_ctxt *cfg)
2650 {
2651 	return cfg->tx_pkt_inspect_for_ilp;
2652 }
2653 #endif
2654 
2655 /**
2656  * wlan_cfg_get_napi_scale_factor() - Get napi scale factor
2657  * @cfg: soc configuration context
2658  *
2659  * Return: napi scale factor
2660  */
2661 uint8_t wlan_cfg_get_napi_scale_factor(struct wlan_cfg_dp_soc_ctxt *cfg);
2662 
2663 /**
2664  * wlan_cfg_soc_update_tgt_params() - Update band specific params
2665  * @wlan_cfg_ctx: SOC cfg context
2666  * @ctrl_obj: PSOC object
2667  *
2668  * Return: void
2669  */
2670 void
2671 wlan_cfg_soc_update_tgt_params(struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx,
2672 			       struct cdp_ctrl_objmgr_psoc *ctrl_obj);
2673 
2674 /**
2675  * wlan_cfg_get_pointer_timer_threshold_rx() - Get timer threshold for RX
2676  *                                             pointer update
2677  * @cfg: soc configuration context
2678  *
2679  * Return: timer threshold for RX REO Dest ring  pointer update
2680  */
2681 uint16_t
2682 wlan_cfg_get_pointer_timer_threshold_rx(struct wlan_cfg_dp_soc_ctxt *cfg);
2683 
2684 /**
2685  * wlan_cfg_get_pointer_num_threshold_rx() - Get number threshold for RX
2686  *                                           pointer update
2687  * @cfg: soc configuration context
2688  *
2689  * Return: entries number threshold for RX REO Dest ring  pointer update
2690  */
2691 uint8_t
2692 wlan_cfg_get_pointer_num_threshold_rx(struct wlan_cfg_dp_soc_ctxt *cfg);
2693 
2694 #ifdef WLAN_FEATURE_LOCAL_PKT_CAPTURE
2695 static inline
wlan_cfg_get_local_pkt_capture(struct wlan_cfg_dp_soc_ctxt * cfg)2696 bool wlan_cfg_get_local_pkt_capture(struct wlan_cfg_dp_soc_ctxt *cfg)
2697 {
2698 	return cfg->local_pkt_capture;
2699 }
2700 #else
2701 static inline
wlan_cfg_get_local_pkt_capture(struct wlan_cfg_dp_soc_ctxt * cfg)2702 bool wlan_cfg_get_local_pkt_capture(struct wlan_cfg_dp_soc_ctxt *cfg)
2703 {
2704 	return false;
2705 }
2706 #endif
2707 
2708 /**
2709  * wlan_cfg_get_special_frame_cfg() - Get special frame mask
2710  * @cfg: soc configuration context
2711  *
2712  * Return: frame mask
2713  */
2714 uint32_t
2715 wlan_cfg_get_special_frame_cfg(struct wlan_cfg_dp_soc_ctxt *cfg);
2716 
2717 #ifdef DP_UMAC_HW_RESET_SUPPORT
2718 /**
2719  * wlan_cfg_get_umac_reset_buffer_window_ms() - Get umac reset buffer window
2720  * @cfg: soc configuration context
2721  *
2722  * Return: Umac reset buffer window in milliseconds
2723  */
2724 uint32_t
2725 wlan_cfg_get_umac_reset_buffer_window_ms(struct wlan_cfg_dp_soc_ctxt *cfg);
2726 #else
2727 static inline uint32_t
wlan_cfg_get_umac_reset_buffer_window_ms(struct wlan_cfg_dp_soc_ctxt * cfg)2728 wlan_cfg_get_umac_reset_buffer_window_ms(struct wlan_cfg_dp_soc_ctxt *cfg)
2729 {
2730 	return 0;
2731 }
2732 #endif /* DP_UMAC_HW_RESET_SUPPORT */
2733 
2734 /**
2735  * wlan_cfg_set_ast_indication_disable - Set AST disable
2736  *
2737  * @cfg: soc configuration context
2738  * @val: value to be set
2739  *
2740  * Return: void
2741  */
2742 void wlan_cfg_set_ast_indication_disable(struct wlan_cfg_dp_soc_ctxt *cfg,
2743 					 bool val);
2744 
2745 /**
2746  * wlan_cfg_get_ast_indication_disable - Get AST disable
2747  *
2748  * @cfg: soc configuration context
2749  *
2750  * Return: true or false
2751  */
2752 bool wlan_cfg_get_ast_indication_disable(struct wlan_cfg_dp_soc_ctxt *cfg);
2753 
2754 /**
2755  * wlan_cfg_get_dp_soc_dpdk_cfg - Return soc dpdk config
2756  * @psoc: psoc object
2757  *
2758  * Return: dpdk_cfg
2759  */
2760 int wlan_cfg_get_dp_soc_dpdk_cfg(struct cdp_ctrl_objmgr_psoc *psoc);
2761 #endif /*__WLAN_CFG_H*/
2762