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