1  /**
2   * Copyright (c) 2013-2020, The Linux Foundation. All rights reserved.
3   *
4   * Permission to use, copy, modify, and/or distribute this software for any
5   * purpose with or without fee is hereby granted, provided that the above
6   * copyright notice and this permission notice appear in all copies.
7   *
8   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15   */
16  
17  #include "ol_txrx_types.h"
18  #include "ol_htt_tx_api.h"
19  #include "ol_tx_desc.h"
20  #include "qdf_mem.h"
21  #include "htt.h"
22  #include "htt_internal.h"
23  #include "pktlog_ac_i.h"
24  #include "wma_api.h"
25  #include "wlan_logging_sock_svc.h"
26  
27  #define TX_DESC_ID_LOW_MASK     0xffff
28  #define TX_DESC_ID_LOW_SHIFT    0
29  #define TX_DESC_ID_HIGH_MASK    0xffff0000
30  #define TX_DESC_ID_HIGH_SHIFT   16
31  
32  #ifndef REMOVE_PKT_LOG
33  /**
34   * process_tx_info() - process tx pktlog buffers
35   * @txrx_pdev: ol pdev handle
36   * @data: pktlog buffer
37   *
38   * Return: 0 - success/non-zero - failure
39   */
40  A_STATUS process_tx_info(struct cdp_pdev *txrx_pdev, void *data);
41  
42  /**
43   * process_rx_info_remote() - process rx pktlog buffers
44   * @txrx_pdev: ol pdev handle
45   * @data: pktlog buffer
46   *
47   * Return: 0 - success/non-zero - failure
48   */
49  A_STATUS process_rx_info_remote(void *pdev, void *data);
50  
51  /**
52   * process_rx_info() - process rx pktlog buffers
53   * @txrx_pdev: ol pdev handle
54   * @data: pktlog buffer
55   *
56   * Return: 0 - success/non-zero - failure
57   */
58  A_STATUS process_rx_info(void *pdev, void *data);
59  
60  /**
61   * process_rate_find() - process rate event pktlog buffers
62   * @txrx_pdev: ol pdev handle
63   * @data: pktlog buffer
64   *
65   * Return: 0 - success/non-zero - failure
66   */
67  A_STATUS process_rate_find(void *pdev, void *data);
68  
69  /**
70   * process_rate_update() - process rate event pktlog buffers
71   * @txrx_pdev: ol pdev handle
72   * @data: pktlog buffer
73   *
74   * Return: 0 - success/non-zero - failure
75   */
76  A_STATUS process_rate_update(void *pdev, void *data);
77  
78  /**
79   * process_sw_event() - process sw event pktlog buffers
80   * @txrx_pdev: ol pdev handle
81   * @data: pktlog buffer
82   *
83   * Return: 0 - success/non-zero - failure
84   */
85  A_STATUS process_sw_event(void *pdev, void *data);
86  #else
87  static inline
process_tx_info(struct cdp_pdev * txrx_pdev,void * data)88  A_STATUS process_tx_info(struct cdp_pdev *txrx_pdev, void *data)
89  {
90  	return 0;
91  }
92  
93  static inline
process_rx_info_remote(void * pdev,void * data)94  A_STATUS process_rx_info_remote(void *pdev, void *data)
95  {
96  	return 0;
97  }
98  
99  static inline
process_rx_info(void * pdev,void * data)100  A_STATUS process_rx_info(void *pdev, void *data)
101  {
102  	return 0;
103  }
104  
105  static inline
process_rate_find(void * pdev,void * data)106  A_STATUS process_rate_find(void *pdev, void *data)
107  {
108  	return 0;
109  }
110  
111  static inline
process_rate_update(void * pdev,void * data)112  A_STATUS process_rate_update(void *pdev, void *data)
113  {
114  	return 0;
115  }
116  
117  static inline
process_sw_event(void * pdev,void * data)118  A_STATUS process_sw_event(void *pdev, void *data)
119  {
120  	return 0;
121  }
122  #endif /* REMOVE_PKT_LOG */
123  
124  /**
125   * process_offload_pktlog_wifi3() - Process full pktlog events
126   * pdev: abstract pdev handle
127   * data: pktlog buffer
128   *
129   * Return: zero on success, non-zero on failure
130   */
131  static inline A_STATUS
process_offload_pktlog_wifi3(struct cdp_pdev * pdev,void * data)132  process_offload_pktlog_wifi3(struct cdp_pdev *pdev, void *data)
133  {
134  	return 0;
135  }
136  
137  /**
138   * process_rx_desc_remote_wifi3() - Process pktlog buffers received
139   *                                  from monitor status ring
140   * @pdev: pdev handle
141   * @data: pktlog buffer pointer
142   *
143   * Return: 0 - success/non-zero - failure
144   */
145  static inline int
process_rx_desc_remote_wifi3(void * pdev,void * data)146  process_rx_desc_remote_wifi3(void *pdev, void *data)
147  {
148  	return 0;
149  }
150  
151  /**
152   * process_pktlog_lite_wifi3() - Process pktlog buffers received
153   *                               from monitor status ring
154   * @pdev: pdev handle
155   * @data: pktlog buffer pointer
156   *
157   * Return: 0 - success/non-zero - failure
158   */
159  static inline int
process_pktlog_lite_wifi3(void * context,void * log_data,uint16_t log_type)160  process_pktlog_lite_wifi3(void *context, void *log_data,
161  			  uint16_t log_type)
162  {
163  	return 0;
164  }
165