1 /*
2 * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
3 *
4 * Permission to use, copy, modify, and/or distribute this software for
5 * any purpose with or without fee is hereby granted, provided that the
6 * above copyright notice and this permission notice appear in all
7 * copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16 * PERFORMANCE OF THIS SOFTWARE.
17 */
18
19 /**
20 * DOC: wlan_dp_ucfg_api.h
21 *
22 * TDLS north bound interface declaration
23 */
24
25 #if !defined(_WLAN_DP_UCFG_API_H_)
26 #define _WLAN_DP_UCFG_API_H_
27
28 #include <scheduler_api.h>
29 #include <wlan_objmgr_cmn.h>
30 #include <wlan_objmgr_psoc_obj.h>
31 #include <wlan_objmgr_pdev_obj.h>
32 #include <wlan_objmgr_vdev_obj.h>
33 #include "pld_common.h"
34 #include <wlan_dp_public_struct.h>
35 #include <cdp_txrx_misc.h>
36 #include "wlan_dp_objmgr.h"
37 #include "wlan_qmi_public_struct.h"
38
39 #define DP_IGNORE_NUD_FAIL 0
40 #define DP_DISCONNECT_AFTER_NUD_FAIL 1
41 #define DP_ROAM_AFTER_NUD_FAIL 2
42 #define DP_DISCONNECT_AFTER_ROAM_FAIL 3
43
44 #ifdef WLAN_NUD_TRACKING
45 bool
46 ucfg_dp_is_roam_after_nud_enabled(struct wlan_objmgr_psoc *psoc);
47
48 bool
49 ucfg_dp_is_disconect_after_roam_fail(struct wlan_objmgr_psoc *psoc);
50 #else
51 static inline bool
ucfg_dp_is_roam_after_nud_enabled(struct wlan_objmgr_psoc * psoc)52 ucfg_dp_is_roam_after_nud_enabled(struct wlan_objmgr_psoc *psoc)
53 {
54 return false;
55 }
56
57 static inline bool
ucfg_dp_is_disconect_after_roam_fail(struct wlan_objmgr_psoc * psoc)58 ucfg_dp_is_disconect_after_roam_fail(struct wlan_objmgr_psoc *psoc)
59 {
60 return false;
61 }
62 #endif
63
64 /**
65 * ucfg_dp_update_link_mac_addr() - Update the dp_link mac address, during MLO
66 * link switch.
67 * @vdev: Objmgr vdev corresponding to the dp_link
68 * @new_mac_addr: New mac address of the dp_link
69 * @is_link_switch: Flag to indicate if the link mac addr update is as a part
70 * of MLO link switch.
71 *
72 * Return: QDF_STATUS
73 */
74 QDF_STATUS ucfg_dp_update_link_mac_addr(struct wlan_objmgr_vdev *vdev,
75 struct qdf_mac_addr *new_mac_addr,
76 bool is_link_switch);
77
78 /**
79 * ucfg_dp_update_def_link() - update DP interface default link
80 * @psoc: psoc handle
81 * @intf_mac: interface MAC address
82 * @vdev: objmgr vdev handle to set the def_link in dp_intf
83 *
84 */
85 void ucfg_dp_update_def_link(struct wlan_objmgr_psoc *psoc,
86 struct qdf_mac_addr *intf_mac,
87 struct wlan_objmgr_vdev *vdev);
88
89 /**
90 * ucfg_dp_update_intf_mac() - update DP interface MAC address
91 * @psoc: psoc handle
92 * @cur_mac: Current MAC address
93 * @new_mac: new MAC address
94 * @vdev: objmgr vdev handle to set the def_link in dp_intf
95 *
96 */
97 void ucfg_dp_update_intf_mac(struct wlan_objmgr_psoc *psoc,
98 struct qdf_mac_addr *cur_mac,
99 struct qdf_mac_addr *new_mac,
100 struct wlan_objmgr_vdev *vdev);
101
102 /**
103 * ucfg_dp_destroy_intf() - DP module interface deletion
104 * @psoc: psoc handle
105 * @intf_addr: Interface MAC address
106 *
107 */
108 QDF_STATUS ucfg_dp_destroy_intf(struct wlan_objmgr_psoc *psoc,
109 struct qdf_mac_addr *intf_addr);
110
111 /**
112 * ucfg_dp_create_intf() - DP module interface creation
113 * @psoc: psoc handle
114 * @intf_addr: Interface MAC address
115 * @ndev : netdev object
116 *
117 */
118 QDF_STATUS ucfg_dp_create_intf(struct wlan_objmgr_psoc *psoc,
119 struct qdf_mac_addr *intf_addr,
120 qdf_netdev_t ndev);
121
122 void ucfg_dp_set_hif_handle(struct wlan_objmgr_psoc *psoc,
123 struct hif_opaque_softc *hif_handle);
124 void ucfg_dp_set_cmn_dp_handle(struct wlan_objmgr_psoc *psoc,
125 ol_txrx_soc_handle soc);
126 /**
127 * ucfg_dp_init() - DP module initialization API
128 *
129 * Return: QDF_STATUS
130 */
131 QDF_STATUS ucfg_dp_init(void);
132
133 /**
134 * ucfg_dp_deinit() - DP module deinitialization API
135 *
136 * Return: QDF_STATUS
137 */
138 QDF_STATUS ucfg_dp_deinit(void);
139
140 /**
141 * ucfg_dp_psoc_open() - DP component Open
142 * @psoc: pointer to psoc object
143 *
144 * Return: QDF Status
145 */
146 QDF_STATUS ucfg_dp_psoc_open(struct wlan_objmgr_psoc *psoc);
147
148 /**
149 * ucfg_dp_psoc_close() - DP component Close
150 * @psoc: pointer to psoc object
151 *
152 * Return: QDF Status
153 */
154 QDF_STATUS ucfg_dp_psoc_close(struct wlan_objmgr_psoc *psoc);
155
156 /**
157 * ucfg_dp_suspend_wlan() - update suspend state in DP component
158 * @psoc: pointer to psoc object
159 *
160 * Return: None
161 */
162 void ucfg_dp_suspend_wlan(struct wlan_objmgr_psoc *psoc);
163
164 /**
165 * ucfg_dp_resume_wlan() - update resume state in DP component
166 * @psoc: pointer to psoc object
167 *
168 * Return: None
169 */
170 void ucfg_dp_resume_wlan(struct wlan_objmgr_psoc *psoc);
171
172 /**
173 * ucfg_dp_update_config() - DP module config update
174 * @psoc: pointer to psoc object
175 * @req : user config
176 *
177 * Return: QDF_STATUS
178 */
179 QDF_STATUS
180 ucfg_dp_update_config(struct wlan_objmgr_psoc *psoc,
181 struct wlan_dp_user_config *req);
182 /**
183 * ucfg_dp_wait_complete_tasks() - wait for DP tasks to complete
184 * Called from legacy layer to wait DP tasks completion
185 *
186 * Return: None
187 */
188 void
189 ucfg_dp_wait_complete_tasks(void);
190
191 /**
192 * ucfg_dp_remove_conn_info() - Remove DP STA intf connection info
193 * @vdev: vdev mapped to STA DP interface
194 *
195 * Return: QDF_STATUS
196 */
197 void
198 ucfg_dp_remove_conn_info(struct wlan_objmgr_vdev *vdev);
199
200 /**
201 * ucfg_dp_conn_info_set_bssid() - set BSSID info in STA intf
202 * @vdev: vdev mapped to STA DP interface
203 * @bssid: BSSID mac
204 *
205 * Return: None
206 */
207 void ucfg_dp_conn_info_set_bssid(struct wlan_objmgr_vdev *vdev,
208 struct qdf_mac_addr *bssid);
209
210 /**
211 * ucfg_dp_conn_info_set_arp_service() - set ARP service info
212 * @vdev: vdev mapped to STA DP interface
213 * @proxy_arp_service: ARP service info
214 *
215 * Return: None
216 */
217 void ucfg_dp_conn_info_set_arp_service(struct wlan_objmgr_vdev *vdev,
218 uint8_t proxy_arp_service);
219
220 /**
221 * ucfg_dp_conn_info_set_peer_authenticate() - set Peer authenticated state
222 * @vdev: vdev mapped to STA DP interface
223 * @is_authenticated: Peer authenticated info
224 *
225 * Return: None
226 */
227 void ucfg_dp_conn_info_set_peer_authenticate(struct wlan_objmgr_vdev *vdev,
228 uint8_t is_authenticated);
229
230 /**
231 * ucfg_dp_conn_info_set_peer_mac() - set peer mac info in DP intf
232 * @vdev: vdev mapped to STA DP interface
233 * @peer_mac: Peer MAC information
234 *
235 * Return: None
236 */
237 void ucfg_dp_conn_info_set_peer_mac(struct wlan_objmgr_vdev *vdev,
238 struct qdf_mac_addr *peer_mac);
239
240 /**
241 * ucfg_dp_softap_check_wait_for_tx_eap_pkt() - wait for TX EAP pkt in SAP
242 * @vdev: vdev mapped to SAP DP interface
243 * @mac_addr: Peer MAC address info
244 *
245 * Return: None
246 */
247 void ucfg_dp_softap_check_wait_for_tx_eap_pkt(struct wlan_objmgr_vdev *vdev,
248 struct qdf_mac_addr *mac_addr);
249
250 /**
251 * ucfg_dp_update_dhcp_state_on_disassoc() - update DHCP during disassoc
252 * @vdev: vdev mapped to SAP DP interface
253 * @mac_addr: Peer MAC address info
254 *
255 * Return: None
256 */
257 void ucfg_dp_update_dhcp_state_on_disassoc(struct wlan_objmgr_vdev *vdev,
258 struct qdf_mac_addr *mac_addr);
259
260 /**
261 * ucfg_dp_set_dfs_cac_tx() - update DFS CAC TX block info
262 * @vdev: vdev mapped to SAP DP interface
263 * @tx_block: true if TX need to be blocked
264 *
265 * Return: None
266 */
267 void ucfg_dp_set_dfs_cac_tx(struct wlan_objmgr_vdev *vdev,
268 bool tx_block);
269
270 /**
271 * ucfg_dp_set_bss_state_start() - update BSS state for SAP intf
272 * @vdev: vdev mapped to SAP DP interface
273 * @start: true if BSS state is started
274 *
275 * Return: None
276 */
277 void ucfg_dp_set_bss_state_start(struct wlan_objmgr_vdev *vdev, bool start);
278
279 /**
280 * ucfg_dp_lro_set_reset() - LRO set/reset in DP
281 * @vdev: vdev mapped to DP interface
282 * @enable_flag: Enable/disable LRO feature
283 *
284 * Return: 0 on success and non zero on failure.
285 */
286 QDF_STATUS ucfg_dp_lro_set_reset(struct wlan_objmgr_vdev *vdev,
287 uint8_t enable_flag);
288 /**
289 * ucfg_dp_is_ol_enabled() - Get ol enable/disable info
290 * @psoc: PSOC mapped to DP context
291 *
292 * Return: true if OL enabled
293 */
294 bool ucfg_dp_is_ol_enabled(struct wlan_objmgr_psoc *psoc);
295
296 #ifdef RECEIVE_OFFLOAD
297 /**
298 * ucfg_dp_rx_handle_concurrency() - Handle concurrency setting in DP
299 * @psoc: PSOC mapped to DP context
300 * @disable: true/false to disable/enable the Rx offload
301 *
302 * Return: None
303 */
304 void ucfg_dp_rx_handle_concurrency(struct wlan_objmgr_psoc *psoc,
305 bool disable);
306 #else
307 static inline
ucfg_dp_rx_handle_concurrency(struct wlan_objmgr_psoc * psoc,bool disable)308 void ucfg_dp_rx_handle_concurrency(struct wlan_objmgr_psoc *psoc,
309 bool disable) { }
310 #endif
311
312 /**
313 * ucfg_dp_is_rx_common_thread_enabled() - Get common thread enable/disable info
314 * @psoc: PSOC mapped to DP context
315 *
316 * Return: true if common thread enabled
317 */
318 bool ucfg_dp_is_rx_common_thread_enabled(struct wlan_objmgr_psoc *psoc);
319
320 /**
321 * ucfg_dp_is_rx_threads_enabled() - Get RX DP threads info
322 * @psoc: PSOC mapped to DP context
323 *
324 * Return: true if DP RX threads enabled
325 */
326 bool ucfg_dp_is_rx_threads_enabled(struct wlan_objmgr_psoc *psoc);
327
328 /**
329 * ucfg_dp_rx_ol_init() - Initialize Rx offload mode (LRO or GRO)
330 * @psoc: PSOC mapped to DP context
331 * @is_wifi3_0_target: true if it wifi3.0 target
332 *
333 * Return: 0 on success and non zero on failure.
334 */
335 QDF_STATUS ucfg_dp_rx_ol_init(struct wlan_objmgr_psoc *psoc,
336 bool is_wifi3_0_target);
337
338 /**
339 * ucfg_dp_start_xmit() - Transmit packet on STA interface
340 * @nbuf: n/w buffer to transmitted
341 * @vdev: vdev mapped to STA DP interface
342 *
343 * Return: 0 on success and non zero on failure.
344 */
345 QDF_STATUS
346 ucfg_dp_start_xmit(qdf_nbuf_t nbuf, struct wlan_objmgr_vdev *vdev);
347
348 /**
349 * ucfg_dp_rx_packet_cbk() - Receive packet on STA interface
350 * @nbuf: n/w buffer to be received
351 * @vdev: vdev mapped to STA DP interface
352 *
353 * Return: 0 on success and non zero on failure.
354 */
355 QDF_STATUS ucfg_dp_rx_packet_cbk(struct wlan_objmgr_vdev *vdev,
356 qdf_nbuf_t nbuf);
357
358 /**
359 * ucfg_dp_tx_timeout() - called during transmission timeout on STA
360 * @vdev: vdev mapped to STA DP interface
361 *
362 * Return: None
363 */
364 void ucfg_dp_tx_timeout(struct wlan_objmgr_vdev *vdev);
365
366 /**
367 * ucfg_dp_softap_tx_timeout() - called during transmission timeout on SAP
368 * @vdev: vdev mapped to SAP DP interface
369 *
370 * Return: None
371 */
372 void ucfg_dp_softap_tx_timeout(struct wlan_objmgr_vdev *vdev);
373
374 /**
375 * ucfg_dp_softap_start_xmit() - Transmit packet on SAP interface
376 * @nbuf: n/w buffer to transmitted
377 * @vdev: vdev mapped to SAP DP interface
378 *
379 * Return: 0 on success and non zero on failure.
380 */
381 QDF_STATUS
382 ucfg_dp_softap_start_xmit(qdf_nbuf_t nbuf, struct wlan_objmgr_vdev *vdev);
383
384 /**
385 * ucfg_dp_get_dev_stats() - Get netdev stats info
386 * @dev: Pointer to network device
387 *
388 * Return: qdf_net_dev_stats info
389 */
390 qdf_net_dev_stats *ucfg_dp_get_dev_stats(qdf_netdev_t dev);
391
392 /**
393 * ucfg_dp_inc_rx_pkt_stats() - DP increment RX pkt stats
394 * @vdev: VDEV mapped to DP interface
395 * @pkt_len: packet length to be incremented in stats
396 * @delivered: pkts delivered or not
397 *
398 * Return: None
399 */
400 void ucfg_dp_inc_rx_pkt_stats(struct wlan_objmgr_vdev *vdev,
401 uint32_t pkt_len,
402 bool delivered);
403
404 /**
405 * ucfg_dp_get_rx_softirq_yield_duration() - Get rx soft IRQ yield duration
406 * @psoc: pointer to psoc object
407 *
408 * Return: soft IRQ yield duration
409 */
410 uint64_t
411 ucfg_dp_get_rx_softirq_yield_duration(struct wlan_objmgr_psoc *psoc);
412
413 /**
414 * ucfg_dp_register_rx_mic_error_ind_handler : register mic error handler.
415 * @soc: soc handle
416 */
417 void ucfg_dp_register_rx_mic_error_ind_handler(void *soc);
418
419 /**
420 * ucfg_dp_sta_register_txrx_ops() - Register ops for TX/RX operations in STA
421 * @vdev: vdev mapped to STA DP interface
422 *
423 * Return: 0 on success and non zero on failure.
424 */
425 QDF_STATUS ucfg_dp_sta_register_txrx_ops(struct wlan_objmgr_vdev *vdev);
426
427 #ifdef FEATURE_WLAN_TDLS
428 /**
429 * ucfg_dp_tdlsta_register_txrx_ops() - Register ops for TX/RX operations
430 * @vdev: vdev mapped to TDLS STA DP interface
431 *
432 * Return: 0 on success and non zero on failure.
433 */
434 QDF_STATUS ucfg_dp_tdlsta_register_txrx_ops(struct wlan_objmgr_vdev *vdev);
435 #else
436 static inline
ucfg_dp_tdlsta_register_txrx_ops(struct wlan_objmgr_vdev * vdev)437 QDF_STATUS ucfg_dp_tdlsta_register_txrx_ops(struct wlan_objmgr_vdev *vdev)
438 {
439 return QDF_STATUS_E_NOSUPPORT;
440 }
441 #endif
442
443 /**
444 * ucfg_dp_ocb_register_txrx_ops() - Register ops for TX/RX operations
445 * @vdev: vdev mapped to OCB DP interface
446 *
447 * Return: 0 on success and non zero on failure.
448 */
449 QDF_STATUS ucfg_dp_ocb_register_txrx_ops(struct wlan_objmgr_vdev *vdev);
450
451 #ifdef FEATURE_MONITOR_MODE_SUPPORT
452 /**
453 * ucfg_dp_mon_register_txrx_ops() - Register ops for TX/RX operations
454 * @vdev: vdev mapped to Monitor mode DP interface
455 *
456 * Return: 0 on success and non zero on failure.
457 */
458 QDF_STATUS ucfg_dp_mon_register_txrx_ops(struct wlan_objmgr_vdev *vdev);
459 #else
460 static inline
ucfg_dp_mon_register_txrx_ops(struct wlan_objmgr_vdev * vdev)461 QDF_STATUS ucfg_dp_mon_register_txrx_ops(struct wlan_objmgr_vdev *vdev)
462 {
463 return QDF_STATUS_E_NOSUPPORT;
464 }
465 #endif
466
467 /**
468 * ucfg_dp_softap_register_txrx_ops() - Register ops for TX/RX operations
469 * @vdev: vdev mapped to SAP mode DP interface
470 * @txrx_ops: Tx and Rx data transfer ops
471 *
472 * Return: 0 on success and non zero on failure.
473 */
474 QDF_STATUS ucfg_dp_softap_register_txrx_ops(struct wlan_objmgr_vdev *vdev,
475 struct ol_txrx_ops *txrx_ops);
476
477 /**
478 * ucfg_dp_register_pkt_capture_callbacks() - Register ops for pkt capture operations
479 * @vdev: vdev mapped to DP interface
480 *
481 * Return: 0 on success and non zero on failure.
482 */
483 QDF_STATUS
484 ucfg_dp_register_pkt_capture_callbacks(struct wlan_objmgr_vdev *vdev);
485
486 /**
487 * ucfg_dp_bbm_context_init() - Initialize BBM context
488 * @psoc: psoc handle
489 *
490 * Returns: error code
491 */
492 int ucfg_dp_bbm_context_init(struct wlan_objmgr_psoc *psoc);
493
494 /**
495 * ucfg_dp_bbm_context_deinit() - De-initialize BBM context
496 * @psoc: psoc handle
497 *
498 * Returns: None
499 */
500 void ucfg_dp_bbm_context_deinit(struct wlan_objmgr_psoc *psoc);
501
502 /**
503 * ucfg_dp_bbm_apply_independent_policy() - Apply independent policies
504 * to set the bus bw level
505 * @psoc: psoc handle
506 * @params: BBM policy related params
507 *
508 * The function applies BBM related policies and appropriately sets the bus
509 * bandwidth level.
510 *
511 * Returns: None
512 */
513 void ucfg_dp_bbm_apply_independent_policy(struct wlan_objmgr_psoc *psoc,
514 struct bbm_params *params);
515
516 /**
517 * ucfg_dp_periodic_sta_stats_start() - Start displaying periodic stats for STA
518 * @vdev: Pointer to the vdev
519 *
520 * Return: none
521 */
522 void ucfg_dp_periodic_sta_stats_start(struct wlan_objmgr_vdev *vdev);
523
524 /**
525 * ucfg_dp_periodic_sta_stats_stop() - Stop displaying periodic stats for STA
526 * @vdev: Pointer to the vdev
527 *
528 * Return: none
529 */
530 void ucfg_dp_periodic_sta_stats_stop(struct wlan_objmgr_vdev *vdev);
531
532 /**
533 * ucfg_dp_set_rx_mode_rps() - Enable/disable RPS in SAP mode
534 * @enable: Set true to enable RPS in SAP mode
535 *
536 * Callback function registered with datapath
537 *
538 * Return: none
539 */
540 void ucfg_dp_set_rx_mode_rps(bool enable);
541
542 /**
543 * ucfg_dp_try_send_rps_ind() - send rps indication to daemon
544 * @vdev: vdev handle
545 *
546 * If RPS feature enabled by INI, send RPS enable indication to daemon
547 * Indication contents is the name of interface to find correct sysfs node
548 * Should send all available interfaces
549 *
550 * Return: none
551 */
552 void ucfg_dp_try_send_rps_ind(struct wlan_objmgr_vdev *vdev);
553
554 /**
555 * ucfg_dp_reg_ipa_rsp_ind() - Resiter RSP IND cb with IPA component
556 * @pdev: pdev handle
557 *
558 * Returns: None
559 */
560 void ucfg_dp_reg_ipa_rsp_ind(struct wlan_objmgr_pdev *pdev);
561
562 /**
563 * ucfg_dp_try_set_rps_cpu_mask - set RPS CPU mask for interfaces
564 * @psoc: psoc handle
565 *
566 * Return: none
567 */
568 void ucfg_dp_try_set_rps_cpu_mask(struct wlan_objmgr_psoc *psoc);
569
570 /**
571 * ucfg_dp_add_latency_critical_client() - Add latency critical client
572 * @vdev: vdev handle (Should not be NULL)
573 * @phymode: the phymode of the connected adapter
574 *
575 * This function checks if the present connection is latency critical
576 * and adds to the latency critical clients count and informs the
577 * datapath about this connection being latency critical.
578 *
579 * Returns: None
580 */
581 void ucfg_dp_add_latency_critical_client(struct wlan_objmgr_vdev *vdev,
582 enum qca_wlan_802_11_mode phymode);
583
584 /**
585 * ucfg_dp_del_latency_critical_client() - Remove latency critical client
586 * @vdev: vdev handle (Should not be NULL)
587 * @phymode: the phymode of the connected adapter
588 *
589 * This function checks if the present connection was latency critical
590 * and removes from the latency critical clients count and informs the
591 * datapath about the removed connection being latency critical.
592 *
593 * Returns: None
594 */
595 void ucfg_dp_del_latency_critical_client(struct wlan_objmgr_vdev *vdev,
596 enum qca_wlan_802_11_mode phymode);
597
598 /**
599 * ucfg_dp_reset_tcp_delack() - Reset TCP delay ACK
600 * level
601 * @psoc: psoc handle
602 *
603 * Return: None
604 */
605 void ucfg_dp_reset_tcp_delack(struct wlan_objmgr_psoc *psoc);
606
607 /**
608 * ucfg_dp_set_current_throughput_level() - update the current vote
609 * level
610 * @psoc: psoc handle
611 * @next_vote_level: pld_bus_width_type voting level
612 *
613 * This function updates the current vote level to the new level
614 * provided
615 *
616 * Return: None
617 */
618 void
619 ucfg_dp_set_current_throughput_level(struct wlan_objmgr_psoc *psoc,
620 enum pld_bus_width_type next_vote_level);
621
622 /**
623 * ucfg_wlan_dp_display_tx_rx_histogram() - display tx rx histogram
624 * @psoc: psoc handle
625 *
626 * Return: none
627 */
628 void ucfg_wlan_dp_display_tx_rx_histogram(struct wlan_objmgr_psoc *psoc);
629
630 /**
631 * ucfg_wlan_dp_clear_tx_rx_histogram() - clear tx rx histogram
632 * @psoc: psoc handle
633 *
634 * Return: none
635 */
636 void ucfg_wlan_dp_clear_tx_rx_histogram(struct wlan_objmgr_psoc *psoc);
637
638 /**
639 * ucfg_dp_set_high_bus_bw_request() - Set high bandwidth request.
640 * @psoc: psoc handle
641 * @vdev_id: vdev_id
642 * @high_bus_bw : High bus bandwidth requested
643 *
644 * Return: None.
645 */
646 void
647 ucfg_dp_set_high_bus_bw_request(struct wlan_objmgr_psoc *psoc,
648 uint8_t vdev_id,
649 bool high_bus_bw);
650
651 /**
652 * ucfg_dp_bus_bw_compute_timer_start() - start the bandwidth timer
653 * @psoc: psoc handle
654 *
655 * Return: None
656 */
657 void ucfg_dp_bus_bw_compute_timer_start(struct wlan_objmgr_psoc *psoc);
658
659 /**
660 * ucfg_dp_bus_bw_compute_timer_try_start() - try to start the bandwidth timer
661 * @psoc: psoc handle
662 *
663 * This function ensures there is at least one intf in the associated state
664 * before starting the bandwidth timer.
665 *
666 * Return: None
667 */
668 void ucfg_dp_bus_bw_compute_timer_try_start(struct wlan_objmgr_psoc *psoc);
669
670 /**
671 * ucfg_dp_bus_bw_compute_timer_stop() - stop the bandwidth timer
672 * @psoc: psoc handle
673 *
674 * Return: None
675 */
676 void ucfg_dp_bus_bw_compute_timer_stop(struct wlan_objmgr_psoc *psoc);
677
678 /**
679 * ucfg_dp_bus_bw_compute_timer_try_stop() - try to stop the bandwidth timer
680 * @psoc: psoc handle
681 *
682 * This function ensures there are no interface in the associated state before
683 * stopping the bandwidth timer.
684 *
685 * Return: None
686 */
687 void ucfg_dp_bus_bw_compute_timer_try_stop(struct wlan_objmgr_psoc *psoc);
688
689 /**
690 * ucfg_dp_bus_bw_compute_prev_txrx_stats() - get tx and rx stats
691 * @vdev: vdev handle
692 *
693 * This function get the collected tx and rx stats before starting
694 * the bus bandwidth timer.
695 *
696 * Return: None
697 */
698 void ucfg_dp_bus_bw_compute_prev_txrx_stats(struct wlan_objmgr_vdev *vdev);
699
700 /**
701 * ucfg_dp_bus_bw_compute_reset_prev_txrx_stats() - reset previous txrx stats
702 * @vdev: vdev handle
703 *
704 * This function resets the adapter previous tx rx stats.
705 *
706 * Return: None
707 */
708 void
709 ucfg_dp_bus_bw_compute_reset_prev_txrx_stats(struct wlan_objmgr_vdev *vdev);
710
711 /**
712 * ucfg_dp_nud_set_gateway_addr() - set gateway mac address
713 * @vdev: vdev handle
714 * @gw_mac_addr: mac address to be set
715 *
716 * Return: none
717 */
718 void ucfg_dp_nud_set_gateway_addr(struct wlan_objmgr_vdev *vdev,
719 struct qdf_mac_addr gw_mac_addr);
720
721 /**
722 * ucfg_dp_nud_event() - netevent callback
723 * @netdev_mac_addr: netdev MAC addr
724 * @gw_mac_addr: Gateway MAC address
725 * @nud_state : NUD State
726 *
727 * Return: None
728 */
729 void ucfg_dp_nud_event(struct qdf_mac_addr *netdev_mac_addr,
730 struct qdf_mac_addr *gw_mac_addr,
731 uint8_t nud_state);
732
733 /**
734 * ucfg_dp_get_arp_stats_event_handler - ARP get stats event handler
735 *
736 * @psoc: PSOC Handle
737 * @rsp : response message
738 *
739 * Return : 0 on success else error code.
740 */
741
742 QDF_STATUS ucfg_dp_get_arp_stats_event_handler(struct wlan_objmgr_psoc *psoc,
743 struct dp_rsp_stats *rsp);
744
745 /**
746 * ucfg_dp_get_arp_request_ctx - Get ARP request context
747 *
748 * @psoc: PSOC Handle
749 *
750 * Return : ARP request context
751 */
752 void *ucfg_dp_get_arp_request_ctx(struct wlan_objmgr_psoc *psoc);
753
754 /**
755 * ucfg_dp_nud_reset_tracking() - reset NUD tracking
756 * @vdev: vdev handle
757 *
758 * Return: None
759 */
760 void ucfg_dp_nud_reset_tracking(struct wlan_objmgr_vdev *vdev);
761
762 /**
763 * ucfg_dp_nud_tracking_enabled - Check if NUD tracking is enabled
764 *
765 * @psoc: PSOC Handle
766 *
767 * Return : NUD tracking value.
768 */
769 uint8_t ucfg_dp_nud_tracking_enabled(struct wlan_objmgr_psoc *psoc);
770
771 /**
772 * ucfg_dp_nud_indicate_roam() - reset NUD when roaming happens
773 * @vdev: vdev handle
774 *
775 * Return: None
776 */
777 void ucfg_dp_nud_indicate_roam(struct wlan_objmgr_vdev *vdev);
778
779 /**
780 * ucfg_dp_clear_arp_stats() - Clear ARP Stats
781 * @vdev: vdev context
782 *
783 * Return: None
784 */
785 void ucfg_dp_clear_arp_stats(struct wlan_objmgr_vdev *vdev);
786
787 /**
788 * ucfg_dp_clear_dns_stats() - Clear DNS Stats
789 * @vdev: vdev context
790 *
791 * Return: None
792 */
793 void ucfg_dp_clear_dns_stats(struct wlan_objmgr_vdev *vdev);
794
795 /**
796 * ucfg_dp_clear_tcp_stats() - Clear TCP Stats
797 * @vdev: vdev context
798 *
799 * Return: None
800 */
801 void ucfg_dp_clear_tcp_stats(struct wlan_objmgr_vdev *vdev);
802
803 /**
804 * ucfg_dp_clear_icmpv4_stats() - Clear ICMPv4 Stats
805 * @vdev: vdev context
806 *
807 * Return: None
808 */
809 void ucfg_dp_clear_icmpv4_stats(struct wlan_objmgr_vdev *vdev);
810
811 /**
812 * ucfg_dp_clear_dns_payload_value() - Clear DNS payload value
813 * @vdev: vdev context
814 *
815 * Return: None
816 */
817 void ucfg_dp_clear_dns_payload_value(struct wlan_objmgr_vdev *vdev);
818
819 /**
820 * ucfg_dp_set_pkt_type_bitmap_value() - Set Packet type bitmap value
821 * @vdev: vdev context
822 * @value: bitmap value
823 *
824 * Return: None
825 */
826 void ucfg_dp_set_pkt_type_bitmap_value(struct wlan_objmgr_vdev *vdev,
827 uint32_t value);
828
829 /**
830 * ucfg_dp_intf_get_pkt_type_bitmap_value() - Get packt type bitmap info
831 * @intf_ctx: DP interface context
832 *
833 * Return: bitmap information
834 */
835 uint32_t ucfg_dp_intf_get_pkt_type_bitmap_value(void *intf_ctx);
836
837 /**
838 * ucfg_dp_set_track_dest_ipv4_value() - Set track_dest_ipv4 value
839 * @vdev: vdev context
840 * @value: dest ipv4 value
841 *
842 * Return: None
843 */
844 void ucfg_dp_set_track_dest_ipv4_value(struct wlan_objmgr_vdev *vdev,
845 uint32_t value);
846
847 /**
848 * ucfg_dp_set_track_dest_port_value() - Set track_dest_port value
849 * @vdev: vdev context
850 * @value: dest port value
851 *
852 * Return: None
853 */
854 void ucfg_dp_set_track_dest_port_value(struct wlan_objmgr_vdev *vdev,
855 uint32_t value);
856
857 /**
858 * ucfg_dp_set_track_src_port_value() - Set track_dest_port value
859 * @vdev: vdev context
860 * @value: src port value
861 *
862 * Return: None
863 */
864 void ucfg_dp_set_track_src_port_value(struct wlan_objmgr_vdev *vdev,
865 uint32_t value);
866
867 /**
868 * ucfg_dp_set_track_dns_domain_len_value() - Set track_dns_domain_len value
869 * @vdev: vdev context
870 * @value: dns domain len value
871 *
872 * Return: None
873 */
874 void ucfg_dp_set_track_dns_domain_len_value(struct wlan_objmgr_vdev *vdev,
875 uint32_t value);
876
877 /**
878 * ucfg_dp_set_track_arp_ip_value() - Set track_arp_ip value
879 * @vdev: vdev context
880 * @value: ARP IP value
881 *
882 * Return: None
883 */
884 void ucfg_dp_set_track_arp_ip_value(struct wlan_objmgr_vdev *vdev,
885 uint32_t value);
886
887 /**
888 * ucfg_dp_get_pkt_type_bitmap_value() - Get pkt_type_bitmap value
889 * @vdev: vdev context
890 *
891 * Return: pkt_type_bitmap value
892 */
893 uint32_t ucfg_dp_get_pkt_type_bitmap_value(struct wlan_objmgr_vdev *vdev);
894
895 /**
896 * ucfg_dp_get_dns_payload_value() - Get dns_payload value
897 * @vdev: vdev context
898 * @dns_query : DNS query pointer
899 *
900 * Return: None
901 */
902 void ucfg_dp_get_dns_payload_value(struct wlan_objmgr_vdev *vdev,
903 uint8_t *dns_query);
904
905 /**
906 * ucfg_dp_get_track_dns_domain_len_value() - Get track_dns_domain_len value
907 * @vdev: vdev context
908 *
909 * Return: track_dns_domain_len value
910 */
911 uint32_t ucfg_dp_get_track_dns_domain_len_value(struct wlan_objmgr_vdev *vdev);
912
913 /**
914 * ucfg_dp_get_track_dest_port_value() - Get track_dest_port value
915 * @vdev: vdev context
916 *
917 * Return: track_dest_port value
918 */
919 uint32_t ucfg_dp_get_track_dest_port_value(struct wlan_objmgr_vdev *vdev);
920
921 /**
922 * ucfg_dp_get_track_src_port_value() - Get track_src_port value
923 * @vdev: vdev context
924 *
925 * Return: track_src_port value
926 */
927 uint32_t ucfg_dp_get_track_src_port_value(struct wlan_objmgr_vdev *vdev);
928
929 /**
930 * ucfg_dp_get_track_dest_ipv4_value() - Get track_dest_ipv4 value
931 * @vdev: vdev context
932 *
933 * Return: track_dest_ipv4 value
934 */
935 uint32_t ucfg_dp_get_track_dest_ipv4_value(struct wlan_objmgr_vdev *vdev);
936
937 /**
938 * ucfg_dp_get_dad_value() - Get dad value
939 * @vdev: vdev context
940 *
941 * Return: dad value
942 */
943 bool ucfg_dp_get_dad_value(struct wlan_objmgr_vdev *vdev);
944
945 /**
946 * ucfg_dp_get_con_status_value() - Get con_status value
947 * @vdev: vdev context
948 *
949 * Return: con_status value
950 */
951 bool ucfg_dp_get_con_status_value(struct wlan_objmgr_vdev *vdev);
952
953 /**
954 * ucfg_dp_get_link_id() - Get link_id
955 * @vdev: vdev context
956 *
957 * Return: link_id
958 */
959 uint8_t ucfg_dp_get_link_id(struct wlan_objmgr_vdev *vdev);
960
961 /**
962 * ucfg_dp_get_arp_stats() - Get ARP stats
963 * @vdev: vdev context
964 *
965 * Return: ARP Stats
966 */
967 struct dp_arp_stats *ucfg_dp_get_arp_stats(struct wlan_objmgr_vdev *vdev);
968
969 /**
970 * ucfg_dp_get_icmpv4_stats() - Get ICMPv4 stats
971 * @vdev: vdev context
972 *
973 * Return: ICMPv4 Stats
974 */
975 struct dp_icmpv4_stats
976 *ucfg_dp_get_icmpv4_stats(struct wlan_objmgr_vdev *vdev);
977
978 /**
979 * ucfg_dp_get_tcp_stats() - Get TCP stats
980 * @vdev: vdev context
981 *
982 * Return: TCP Stats
983 */
984 struct dp_tcp_stats *ucfg_dp_get_tcp_stats(struct wlan_objmgr_vdev *vdev);
985
986 /**
987 * ucfg_dp_get_dns_stats() - Get DNS stats
988 * @vdev: vdev context
989 *
990 * Return: DNS Stats
991 */
992 struct dp_dns_stats *ucfg_dp_get_dns_stats(struct wlan_objmgr_vdev *vdev);
993
994 /**
995 * ucfg_dp_set_nud_stats_cb() - Register callback with WMI
996 * @psoc: psoc context
997 * @cookie: callback context
998 *
999 * Return: None
1000 */
1001
1002 void ucfg_dp_set_nud_stats_cb(struct wlan_objmgr_psoc *psoc, void *cookie);
1003
1004 /**
1005 * ucfg_dp_clear_nud_stats_cb() - Unregister callback with WMI
1006 * @psoc: psoc context
1007 *
1008 * Return: None
1009 */
1010 void ucfg_dp_clear_nud_stats_cb(struct wlan_objmgr_psoc *psoc);
1011
1012 /**
1013 * ucfg_dp_set_dump_dp_trace() - set DP Trace
1014 * @cmd_type : command
1015 * @count : Number of lines to dump
1016 *
1017 * Return: None
1018 */
1019 void ucfg_dp_set_dump_dp_trace(uint16_t cmd_type, uint16_t count);
1020
1021 /**
1022 * ucfg_dp_req_get_arp_stats() - Send Get ARP set request to FW
1023 * @psoc: psoc context
1024 * @params : Get ARP stats param
1025 *
1026 * Return: Status
1027 */
1028 QDF_STATUS
1029 ucfg_dp_req_get_arp_stats(struct wlan_objmgr_psoc *psoc,
1030 struct dp_get_arp_stats_params *params);
1031
1032 /**
1033 * ucfg_dp_req_set_arp_stats() - Send Set ARP set request to FW
1034 * @psoc: psoc context
1035 * @params : Set ARP stats param
1036 *
1037 * Return: Status
1038 */
1039 QDF_STATUS
1040 ucfg_dp_req_set_arp_stats(struct wlan_objmgr_psoc *psoc,
1041 struct dp_set_arp_stats_params *params);
1042
1043 /**
1044 * ucfg_dp_register_hdd_callbacks() - Resiter HDD callbacks with DP component
1045 * @psoc: psoc handle
1046 * @cb_obj: Callback object
1047 *
1048 * Returns: None
1049 */
1050 void ucfg_dp_register_hdd_callbacks(struct wlan_objmgr_psoc *psoc,
1051 struct wlan_dp_psoc_callbacks *cb_obj);
1052
1053 /**
1054 * ucfg_dp_register_event_handler() - Resiter event handler with DP component
1055 * @psoc: psoc handle
1056 * @cb_obj: Callback object
1057 *
1058 * Returns: None
1059 */
1060 void ucfg_dp_register_event_handler(struct wlan_objmgr_psoc *psoc,
1061 struct wlan_dp_psoc_nb_ops *cb_obj);
1062
1063 /**
1064 * ucfg_dp_get_bus_bw_compute_interval() - Get bus bandwidth compute interval
1065 * @psoc: psoc handle
1066 *
1067 * Returns: Bus bandwidth compute interval
1068 */
1069 uint32_t ucfg_dp_get_bus_bw_compute_interval(struct wlan_objmgr_psoc *psoc);
1070
1071 /**
1072 * ucfg_dp_get_current_throughput_level() - get current bandwidth level
1073 * @psoc: psoc handle
1074 *
1075 * Return: current bandwidth level
1076 */
1077 int ucfg_dp_get_current_throughput_level(struct wlan_objmgr_psoc *psoc);
1078
1079 /**
1080 * ucfg_dp_get_txrx_stats() - get dp txrx stats
1081 * @vdev: vdev handle
1082 * @dp_stats : dp_stats pointer
1083 *
1084 * This function update dp_stats pointer with DP component
1085 * txrx stats
1086 * Return: 0 on success
1087 */
1088 QDF_STATUS ucfg_dp_get_txrx_stats(struct wlan_objmgr_vdev *vdev,
1089 struct dp_tx_rx_stats *dp_stats);
1090
1091 /*
1092 * ucfg_dp_get_net_dev_stats(): Get netdev stats
1093 * @vdev: vdev handle
1094 * @stats: To hold netdev stats
1095 *
1096 * Return: None
1097 */
1098 void ucfg_dp_get_net_dev_stats(struct wlan_objmgr_vdev *vdev,
1099 qdf_net_dev_stats *stats);
1100
1101 /*
1102 * ucfg_dp_clear_net_dev_stats(): Clear netdev stats
1103 * @dev: Pointer to netdev
1104 *
1105 * Return: None
1106 */
1107 void ucfg_dp_clear_net_dev_stats(qdf_netdev_t dev);
1108
1109 /**
1110 * ucfg_dp_reset_cont_txtimeout_cnt() - Reset Tx Timeout count
1111 * @vdev: vdev handle
1112 *
1113 * Return: None
1114 */
1115 void ucfg_dp_reset_cont_txtimeout_cnt(struct wlan_objmgr_vdev *vdev);
1116
1117 /**
1118 * ucfg_dp_set_rx_thread_affinity() - Set rx thread affinity mask
1119 * @psoc: psoc handle
1120 *
1121 * Return: None
1122 */
1123 void ucfg_dp_set_rx_thread_affinity(struct wlan_objmgr_psoc *psoc);
1124
1125 /**
1126 * ucfg_dp_get_disable_rx_ol_val() - Get Rx OL concurrency value
1127 * @psoc: psoc handle
1128 * @disable_conc : disable rx OL concurrency value
1129 * @disable_low_tput : disable rx OL low tput value
1130 *
1131 * this function reads and update value in pointer variable
1132 * passed as arguments to function.
1133 *
1134 * Return: None
1135 */
1136
1137 void ucfg_dp_get_disable_rx_ol_val(struct wlan_objmgr_psoc *psoc,
1138 uint8_t *disable_conc,
1139 uint8_t *disable_low_tput);
1140
1141 /**
1142 * ucfg_dp_get_rx_aggregation_val() - Get Rx aggregation values
1143 * @psoc: psoc handle
1144 *
1145 * Return: Rx aggregation value
1146 */
1147 uint32_t ucfg_dp_get_rx_aggregation_val(struct wlan_objmgr_psoc *psoc);
1148
1149 /**
1150 * ucfg_dp_set_rx_aggregation_val() - Set rx aggregation value
1151 * @psoc: psoc handle
1152 * @value : value to be set
1153 *
1154 * Return: None
1155 */
1156 void ucfg_dp_set_rx_aggregation_val(struct wlan_objmgr_psoc *psoc,
1157 uint32_t value);
1158
1159 /**
1160 * ucfg_dp_set_tc_based_dyn_gro() - Set tc based dynamic gro
1161 * @psoc: psoc handle
1162 * @value : value to be set
1163 *
1164 * Return: None
1165 */
1166 void ucfg_dp_set_tc_based_dyn_gro(struct wlan_objmgr_psoc *psoc, bool value);
1167
1168 /**
1169 * ucfg_dp_runtime_disable_rx_thread() - Disable rx thread
1170 * @vdev: vdev handle
1171 * @value : value to be set (true/false)
1172 *
1173 * Return: None
1174 */
1175 void ucfg_dp_runtime_disable_rx_thread(struct wlan_objmgr_vdev *vdev,
1176 bool value);
1177
1178 /**
1179 * ucfg_dp_get_napi_enabled() - Get NAPI enabled/disabled info
1180 * @psoc: psoc handle mapped to DP context
1181 *
1182 * Return: true if NAPI enabled
1183 */
1184 bool ucfg_dp_get_napi_enabled(struct wlan_objmgr_psoc *psoc);
1185
1186 /**
1187 * ucfg_dp_set_tc_ingress_prio() - Set tc ingress priority
1188 * @psoc: psoc handle mapped to DP context
1189 * @value: value to be set
1190 *
1191 * Return: None
1192 */
1193 void ucfg_dp_set_tc_ingress_prio(struct wlan_objmgr_psoc *psoc, uint32_t value);
1194
1195 /**
1196 * ucfg_dp_nud_fail_data_stall_evt_enabled() - Check if NUD failuire data stall
1197 * detection is enabled
1198 *
1199 * Return: True if the data stall event is enabled
1200 */
1201 bool ucfg_dp_nud_fail_data_stall_evt_enabled(void);
1202
1203 /**
1204 * ucfg_dp_fw_data_stall_evt_enabled() - Check if Fw data stall
1205 * detection is enabled
1206 *
1207 * Return: data stall event mask
1208 */
1209 uint32_t ucfg_dp_fw_data_stall_evt_enabled(void);
1210
1211 /**
1212 * ucfg_dp_get_bus_bw_high_threshold() - Get the bus bw high threshold
1213 * @psoc: psoc handle
1214 *
1215 * Return: current bus bw high threshold
1216 */
1217 uint32_t ucfg_dp_get_bus_bw_high_threshold(struct wlan_objmgr_psoc *psoc);
1218
1219 /**
1220 * ucfg_dp_event_eapol_log() - send event to wlan diag
1221 * @nbuf: Network buffer ptr
1222 * @dir: direction
1223 *
1224 * Return: None
1225 */
1226 void ucfg_dp_event_eapol_log(qdf_nbuf_t nbuf, enum qdf_proto_dir dir);
1227
1228 /**
1229 * ucfg_dp_softap_inspect_dhcp_packet() - Inspect DHCP packet
1230 * @vdev: Vdev handle
1231 * @nbuf: pointer to network buffer
1232 * @dir: direction
1233 *
1234 * Inspect the Tx/Rx frame, and send DHCP START/STOP notification to the FW
1235 * through WMI message, during DHCP based IP address acquisition phase.
1236 *
1237 * Return: error number
1238 */
1239 QDF_STATUS
1240 ucfg_dp_softap_inspect_dhcp_packet(struct wlan_objmgr_vdev *vdev,
1241 qdf_nbuf_t nbuf, enum qdf_proto_dir dir);
1242
1243 void
1244 dp_ucfg_enable_link_monitoring(struct wlan_objmgr_psoc *psoc,
1245 struct wlan_objmgr_vdev *vdev,
1246 uint32_t threshold);
1247
1248 void
1249 dp_ucfg_disable_link_monitoring(struct wlan_objmgr_psoc *psoc,
1250 struct wlan_objmgr_vdev *vdev);
1251
1252 #if defined(WLAN_SUPPORT_RX_FISA)
1253 /**
1254 * ucfg_dp_rx_skip_fisa() - Set flags to skip fisa aggregation
1255 * @value: allow or skip fisa
1256 *
1257 * Return: None
1258 */
1259 void ucfg_dp_rx_skip_fisa(uint32_t value);
1260
1261 #else
1262 static inline
ucfg_dp_rx_skip_fisa(uint32_t value)1263 void ucfg_dp_rx_skip_fisa(uint32_t value)
1264 {
1265 }
1266 #endif
1267
1268 #ifdef DP_TRAFFIC_END_INDICATION
1269 /**
1270 * ucfg_dp_traffic_end_indication_get() - Get data end indication info
1271 * @vdev: vdev handle
1272 * @info: variable to hold stored data end indication info
1273 *
1274 * Return: QDF_STATUS
1275 */
1276 QDF_STATUS
1277 ucfg_dp_traffic_end_indication_get(struct wlan_objmgr_vdev *vdev,
1278 struct dp_traffic_end_indication *info);
1279 /**
1280 * ucfg_dp_traffic_end_indication_set() - Store data end indication info
1281 * @vdev: vdev handle
1282 * @info: variable holding new data end indication info
1283 *
1284 * Return: QDF_STATUS
1285 */
1286 QDF_STATUS
1287 ucfg_dp_traffic_end_indication_set(struct wlan_objmgr_vdev *vdev,
1288 struct dp_traffic_end_indication info);
1289 /**
1290 * ucfg_dp_traffic_end_indication_update_dscp() - update dscp value to default
1291 * @psoc: psoc handle
1292 * @vdev_id: vdev id
1293 * @dscp: dscp value to be updated
1294 *
1295 * Return: void
1296 */
1297 void
1298 ucfg_dp_traffic_end_indication_update_dscp(struct wlan_objmgr_psoc *psoc,
1299 uint8_t vdev_id,
1300 unsigned char *dscp);
1301 #else
1302 static inline QDF_STATUS
ucfg_dp_traffic_end_indication_get(struct wlan_objmgr_vdev * vdev,struct dp_traffic_end_indication * info)1303 ucfg_dp_traffic_end_indication_get(struct wlan_objmgr_vdev *vdev,
1304 struct dp_traffic_end_indication *info)
1305 {
1306 return QDF_STATUS_SUCCESS;
1307 }
1308
1309 static inline QDF_STATUS
ucfg_dp_traffic_end_indication_set(struct wlan_objmgr_vdev * vdev,struct dp_traffic_end_indication info)1310 ucfg_dp_traffic_end_indication_set(struct wlan_objmgr_vdev *vdev,
1311 struct dp_traffic_end_indication info)
1312 {
1313 return QDF_STATUS_SUCCESS;
1314 }
1315
1316 static inline void
ucfg_dp_traffic_end_indication_update_dscp(struct wlan_objmgr_psoc * psoc,uint8_t vdev_id,unsigned char * dscp)1317 ucfg_dp_traffic_end_indication_update_dscp(struct wlan_objmgr_psoc *psoc,
1318 uint8_t vdev_id,
1319 unsigned char *dscp)
1320 {}
1321 #endif
1322
1323 /*
1324 * ucfg_dp_prealloc_init() - Pre-allocate DP memory
1325 * @ctrl_psoc: objmgr psoc
1326 *
1327 * Return: QDF_STATUS_SUCCESS on success, error qdf status on failure
1328 */
1329 QDF_STATUS ucfg_dp_prealloc_init(struct cdp_ctrl_objmgr_psoc *ctrl_psoc);
1330
1331 /*
1332 * ucfg_dp_prealloc_deinit() - Free pre-alloced DP memory
1333 *
1334 * Return: None
1335 */
1336 void ucfg_dp_prealloc_deinit(void);
1337
1338 #ifdef DP_MEM_PRE_ALLOC
1339 /**
1340 * ucfg_dp_prealloc_get_consistent_mem_unaligned() - gets pre-alloc unaligned
1341 * consistent memory
1342 * @size: total memory size
1343 * @base_addr: pointer to dma address
1344 * @ring_type: HAL ring type that requires memory
1345 *
1346 * Return: memory virtual address pointer on success, NULL on failure
1347 */
1348 void *ucfg_dp_prealloc_get_consistent_mem_unaligned(qdf_size_t size,
1349 qdf_dma_addr_t *base_addr,
1350 uint32_t ring_type);
1351
1352 /**
1353 * ucfg_dp_prealloc_put_consistent_mem_unaligned() - puts back pre-alloc
1354 * unaligned consistent memory
1355 * @va_unaligned: memory virtual address pointer
1356 *
1357 * Return: None
1358 */
1359 void ucfg_dp_prealloc_put_consistent_mem_unaligned(void *va_unaligned);
1360
1361 /**
1362 * ucfg_dp_prealloc_get_multi_pages() - gets pre-alloc DP multi-pages memory
1363 * @desc_type: descriptor type
1364 * @elem_size: single element size
1365 * @elem_num: total number of elements should be allocated
1366 * @pages: multi page information storage
1367 * @cacheable: coherent memory or cacheable memory
1368 *
1369 * Return: None
1370 */
1371 void ucfg_dp_prealloc_get_multi_pages(uint32_t desc_type, qdf_size_t elem_size,
1372 uint16_t elem_num,
1373 struct qdf_mem_multi_page_t *pages,
1374 bool cacheable);
1375
1376 /**
1377 * ucfg_dp_prealloc_put_multi_pages() - puts back pre-alloc DP multi-pages
1378 * memory
1379 * @desc_type: descriptor type
1380 * @pages: multi page information storage
1381 *
1382 * Return: None
1383 */
1384 void ucfg_dp_prealloc_put_multi_pages(uint32_t desc_type,
1385 struct qdf_mem_multi_page_t *pages);
1386 #endif
1387
1388 #ifdef FEATURE_DIRECT_LINK
1389 /**
1390 * ucfg_dp_direct_link_init() - Initializes Direct Link datapath
1391 * @psoc: psoc handle
1392 *
1393 * Return: QDF status
1394 */
1395 QDF_STATUS ucfg_dp_direct_link_init(struct wlan_objmgr_psoc *psoc);
1396
1397 /**
1398 * ucfg_dp_direct_link_deinit() - De-initializes Direct Link datapath
1399 * @psoc: psoc handle
1400 * @is_ssr: true if SSR is in progress else false
1401 *
1402 * Return: None
1403 */
1404 void ucfg_dp_direct_link_deinit(struct wlan_objmgr_psoc *psoc, bool is_ssr);
1405
1406 /**
1407 * ucfg_dp_wfds_handle_request_mem_ind() - Process request memory indication
1408 * received from QMI server
1409 * @mem_msg: pointer to memory request indication message
1410 *
1411 * Return: None
1412 */
1413 void
1414 ucfg_dp_wfds_handle_request_mem_ind(struct wlan_qmi_wfds_mem_ind_msg *mem_msg);
1415
1416 /**
1417 * ucfg_dp_wfds_handle_ipcc_map_n_cfg_ind() - Process IPCC map and configure
1418 * indication received from QMI server
1419 * @ipcc_msg: pointer to IPCC map and configure indication message
1420 *
1421 * Return: None
1422 */
1423 void
1424 ucfg_dp_wfds_handle_ipcc_map_n_cfg_ind(struct wlan_qmi_wfds_ipcc_map_n_cfg_ind_msg *ipcc_msg);
1425
1426 /**
1427 * ucfg_dp_wfds_new_server() - New server callback triggered when service is up.
1428 * Connect to the service as part of this call.
1429 *
1430 * Return: QDF status
1431 */
1432 QDF_STATUS ucfg_dp_wfds_new_server(void);
1433
1434 /**
1435 * ucfg_dp_wfds_del_server() - Del server callback triggered when service is
1436 * down.
1437 *
1438 * Return: None
1439 */
1440 void ucfg_dp_wfds_del_server(void);
1441
1442 /**
1443 * ucfg_dp_config_direct_link() - Set direct link config for vdev
1444 * @dev: netdev
1445 * @config_direct_link: Flag to enable direct link path
1446 * @enable_low_latency: Flag to enable low link latency
1447 *
1448 * Return: QDF Status
1449 */
1450 QDF_STATUS ucfg_dp_config_direct_link(qdf_netdev_t dev,
1451 bool config_direct_link,
1452 bool enable_low_latency);
1453 #else
1454 static inline
ucfg_dp_direct_link_init(struct wlan_objmgr_psoc * psoc)1455 QDF_STATUS ucfg_dp_direct_link_init(struct wlan_objmgr_psoc *psoc)
1456 {
1457 return QDF_STATUS_SUCCESS;
1458 }
1459
1460 static inline
ucfg_dp_direct_link_deinit(struct wlan_objmgr_psoc * psoc,bool is_ssr)1461 void ucfg_dp_direct_link_deinit(struct wlan_objmgr_psoc *psoc, bool is_ssr)
1462 {
1463 }
1464
1465 #ifdef QMI_WFDS
1466 static inline void
ucfg_dp_wfds_handle_request_mem_ind(struct wlan_qmi_wfds_mem_ind_msg * mem_msg)1467 ucfg_dp_wfds_handle_request_mem_ind(struct wlan_qmi_wfds_mem_ind_msg *mem_msg)
1468 {
1469 }
1470
1471 static inline void
ucfg_dp_wfds_handle_ipcc_map_n_cfg_ind(struct wlan_qmi_wfds_ipcc_map_n_cfg_ind_msg * ipcc_msg)1472 ucfg_dp_wfds_handle_ipcc_map_n_cfg_ind(struct wlan_qmi_wfds_ipcc_map_n_cfg_ind_msg *ipcc_msg)
1473 {
1474 }
1475
ucfg_dp_wfds_new_server(void)1476 static inline QDF_STATUS ucfg_dp_wfds_new_server(void)
1477 {
1478 return QDF_STATUS_SUCCESS;
1479 }
1480
ucfg_dp_wfds_del_server(void)1481 static inline void ucfg_dp_wfds_del_server(void)
1482 {
1483 }
1484 #endif
1485
1486 static inline
ucfg_dp_config_direct_link(qdf_netdev_t dev,bool config_direct_link,bool enable_low_latency)1487 QDF_STATUS ucfg_dp_config_direct_link(qdf_netdev_t dev,
1488 bool config_direct_link,
1489 bool enable_low_latency)
1490 {
1491 return QDF_STATUS_SUCCESS;
1492 }
1493 #endif
1494
1495 /**
1496 * ucfg_dp_bus_suspend() - BUS suspend DP handler
1497 * @soc: CDP SoC handle
1498 * @pdev_id: DP PDEV ID
1499 *
1500 * Return: QDF_STATUS
1501 */
1502 QDF_STATUS ucfg_dp_bus_suspend(ol_txrx_soc_handle soc, uint8_t pdev_id);
1503
1504 /**
1505 * ucfg_dp_bus_resume() - BUS resume DP handler
1506 * @soc: CDP SoC handle
1507 * @pdev_id: DP PDEV ID
1508 *
1509 * Return: QDF_STATUS
1510 */
1511 QDF_STATUS ucfg_dp_bus_resume(ol_txrx_soc_handle soc, uint8_t pdev_id);
1512
1513 /**
1514 * ucfg_dp_txrx_soc_attach() - Datapath soc attach
1515 * @params: SoC attach params
1516 * @is_wifi3_0_target: [OUT] Pointer to update if the target is wifi3.0
1517 *
1518 * Return: SoC handle
1519 */
1520 void *ucfg_dp_txrx_soc_attach(struct dp_txrx_soc_attach_params *params,
1521 bool *is_wifi3_0_target);
1522
1523 /**
1524 * ucfg_dp_txrx_soc_detach() - Datapath SoC detach
1525 * @soc: DP SoC handle
1526 *
1527 * Return: None
1528 */
1529 void ucfg_dp_txrx_soc_detach(ol_txrx_soc_handle soc);
1530
1531 /**
1532 * ucfg_dp_txrx_attach_target() - DP target attach
1533 * @soc: DP SoC handle
1534 * @pdev_id: DP pdev id
1535 *
1536 * Return: QDF_STATUS
1537 */
1538 QDF_STATUS ucfg_dp_txrx_attach_target(ol_txrx_soc_handle soc, uint8_t pdev_id);
1539
1540 /**
1541 * ucfg_dp_txrx_pdev_attach() - DP pdev attach
1542 * @soc: DP SoC handle
1543 *
1544 * Return: QDF_STATUS
1545 */
1546 QDF_STATUS ucfg_dp_txrx_pdev_attach(ol_txrx_soc_handle soc);
1547
1548 /**
1549 * ucfg_dp_txrx_pdev_detach() - DP pdev detach
1550 * @soc: DP SoC handle
1551 * @pdev_id: DP pdev id
1552 * @force: indicates if force detach is to be done or not
1553 *
1554 * Return: QDF_STATUS
1555 */
1556 QDF_STATUS ucfg_dp_txrx_pdev_detach(ol_txrx_soc_handle soc, uint8_t pdev_id,
1557 int force);
1558
1559 /**
1560 * ucfg_dp_txrx_init() - initialize DP TXRX module
1561 * @soc: ol_txrx_soc_handle
1562 * @pdev_id: id of dp pdev handle
1563 * @config: configuration for DP TXRX modules
1564 *
1565 * Return: QDF_STATUS_SUCCESS on success, error qdf status on failure
1566 */
1567 QDF_STATUS ucfg_dp_txrx_init(ol_txrx_soc_handle soc, uint8_t pdev_id,
1568 struct dp_txrx_config *config);
1569
1570 /**
1571 * ucfg_dp_txrx_deinit() - de-initialize DP TXRX module
1572 * @soc: ol_txrx_soc_handle
1573 *
1574 * Return: QDF_STATUS_SUCCESS on success, error qdf status on failure
1575 */
1576 QDF_STATUS ucfg_dp_txrx_deinit(ol_txrx_soc_handle soc);
1577
1578 /**
1579 * ucfg_dp_txrx_ext_dump_stats() - dump txrx external module stats
1580 * @soc: ol_txrx_soc_handle object
1581 * @stats_id: id for the module whose stats are needed
1582 *
1583 * Return: QDF_STATUS_SUCCESS on success, error qdf status on failure
1584 */
1585 QDF_STATUS ucfg_dp_txrx_ext_dump_stats(ol_txrx_soc_handle soc,
1586 uint8_t stats_id);
1587 /**
1588 * ucfg_dp_txrx_set_cpu_mask() - set CPU mask for RX threads
1589 * @soc: ol_txrx_soc_handle object
1590 * @new_mask: New CPU mask pointer
1591 *
1592 * Return: QDF_STATUS_SUCCESS on success, error qdf status on failure
1593 */
1594 QDF_STATUS ucfg_dp_txrx_set_cpu_mask(ol_txrx_soc_handle soc,
1595 qdf_cpu_mask *new_mask);
1596
1597 /**
1598 * ucfg_dp_get_per_link_peer_stats() - Call to get per link peer stats
1599 * @soc: soc handle
1600 * @vdev_id: vdev_id of vdev object
1601 * @peer_mac: mac address of the peer
1602 * @peer_stats: destination buffer
1603 * @peer_type: Peer type
1604 * @num_link: Number of ML links
1605 *
1606 * NOTE: For peer_type = CDP_MLD_PEER_TYPE peer_stats should point to
1607 * buffer of size = (sizeof(*peer_stats) * num_link)
1608 *
1609 * Return: QDF_STATUS
1610 */
1611 QDF_STATUS
1612 ucfg_dp_get_per_link_peer_stats(ol_txrx_soc_handle soc, uint8_t vdev_id,
1613 uint8_t *peer_mac,
1614 struct cdp_peer_stats *peer_stats,
1615 enum cdp_peer_type peer_type,
1616 uint8_t num_link);
1617
1618 #ifdef WLAN_FEATURE_LOCAL_PKT_CAPTURE
1619 /**
1620 * ucfg_dp_is_local_pkt_capture_enabled() - Get local packet capture config
1621 * @psoc: pointer to psoc object
1622 *
1623 * Return: true if local packet capture is enabled from ini
1624 * false otherwise
1625 */
1626 bool
1627 ucfg_dp_is_local_pkt_capture_enabled(struct wlan_objmgr_psoc *psoc);
1628 #else
1629 static inline bool
ucfg_dp_is_local_pkt_capture_enabled(struct wlan_objmgr_psoc * psoc)1630 ucfg_dp_is_local_pkt_capture_enabled(struct wlan_objmgr_psoc *psoc)
1631 {
1632 return false;
1633 }
1634 #endif /* WLAN_FEATURE_LOCAL_PKT_CAPTURE */
1635
1636 /**
1637 * ucfg_dp_get_vdev_stats () - API to get vdev stats
1638 * @soc: dp soc object
1639 * @vdev_id: Vdev ID of vdev for which stats is requested
1640 * @buf: Pointer to buffer in which stats need to be updated
1641 *
1642 * Return: QDF_STATUS_SUCCESS on success else error code
1643 */
1644 QDF_STATUS ucfg_dp_get_vdev_stats(ol_txrx_soc_handle soc, uint8_t vdev_id,
1645 struct cdp_vdev_stats *buf);
1646
1647 /*
1648 * ucfg_dp_set_mon_conf_flags(): Set monitor configuration flags
1649 * @psoc: psoc handle
1650 * @flags: monitor configuration flags
1651 *
1652 * Return: None
1653 */
1654 void ucfg_dp_set_mon_conf_flags(struct wlan_objmgr_psoc *psoc, uint32_t flags);
1655 #endif /* _WLAN_DP_UCFG_API_H_ */
1656