xref: /wlan-dirver/qca-wifi-host-cmn/utils/pktlog/include/pktlog_ac_i.h (revision 11f5a63a6cbdda84849a730de22f0a71e635d58c)
1 /*
2  * Copyright (c) 2012-2019 The Linux Foundation. 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 #ifndef _PKTLOG_AC_I_
20 #define _PKTLOG_AC_I_
21 
22 #ifndef REMOVE_PKT_LOG
23 
24 #include <ol_txrx_internal.h>
25 #include <pktlog_ac.h>
26 
27 
28 #define PKTLOG_TAG                      "ATH_PKTLOG"
29 #define PKTLOG_DEFAULT_BUFSIZE          (10 * 1024 * 1024) /* 10MB */
30 #define PKTLOG_DEFAULT_SACK_THR         3
31 #define PKTLOG_DEFAULT_TAIL_LENGTH      100
32 #define PKTLOG_DEFAULT_THRUPUT_THRESH   (64 * 1024)
33 #define PKTLOG_DEFAULT_PER_THRESH       30
34 #define PKTLOG_DEFAULT_PHYERR_THRESH    300
35 #define PKTLOG_DEFAULT_TRIGGER_INTERVAL 500
36 
37 /* Max Pktlog buffer size received from fw/hw */
38 #define MAX_PKTLOG_RECV_BUF_SIZE        2048
39 
40 struct ath_pktlog_arg {
41 	struct ath_pktlog_info *pl_info;
42 	uint32_t flags;
43 	uint16_t missed_cnt;
44 #ifdef HELIUMPLUS
45 	uint8_t log_type;
46 	uint8_t macId;
47 #else
48 	uint16_t log_type;
49 #endif
50 	size_t log_size;
51 	uint16_t timestamp;
52 #ifdef PKTLOG_HAS_SPECIFIC_DATA
53 	uint32_t type_specific_data;
54 #endif
55 	char *buf;
56 };
57 
58 void pktlog_getbuf_intsafe(struct ath_pktlog_arg *plarg);
59 char *pktlog_getbuf(struct pktlog_dev_t *pl_dev,
60 		    struct ath_pktlog_info *pl_info,
61 		    size_t log_size, struct ath_pktlog_hdr *pl_hdr);
62 
63 A_STATUS process_tx_info(struct cdp_pdev *pdev, void *data);
64 A_STATUS process_rx_info(void *pdev, void *data);
65 A_STATUS process_rx_info_remote(void *pdev, void *data);
66 A_STATUS process_rate_find(void *pdev, void *data);
67 A_STATUS process_rate_update(void *pdev, void *data);
68 A_STATUS process_sw_event(void *pdev, void *data);
69 int process_pktlog_lite(void *context, void *log_data, uint16_t log_type);
70 int process_rx_desc_remote(void *pdev, void *data);
71 A_STATUS process_offload_pktlog(struct cdp_pdev *pdev, void *data);
72 #endif /* REMOVE_PKT_LOG */
73 #endif
74