1  /*
2   * Copyright (c) 2021, 2023 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   * DOC: qdf_tracepoint.h
20   * This file defines HLOS agnostic functions providing external interface
21   * for triggering tracepoints.
22   */
23  #if  !defined(_QDF_TRACEPOINT_H)
24  #define _QDF_TRACEPOINT_H
25  
26  #include <i_qdf_tracepoint.h>
27  #include <qdf_nbuf.h>
28  #include <qdf_trace.h>
29  
30  #ifdef WLAN_TRACEPOINTS
31  /**
32   * qdf_trace_dp_packet() - Trace packet in tx or rx path
33   * @nbuf: network buffer pointer
34   * @dir: tx or rx direction
35   * @tso_desc: TSO descriptor
36   * @enq_time: tx hw enqueue wall clock time in milliseconds
37   *
38   * Return: None
39   */
40  void qdf_trace_dp_packet(qdf_nbuf_t nbuf, enum qdf_proto_dir dir,
41  			 struct qdf_tso_seg_elem_t *tso_desc,
42  			 uint64_t enq_time);
43  #else
44  static inline
qdf_trace_dp_packet(qdf_nbuf_t nbuf,enum qdf_proto_dir dir,struct qdf_tso_seg_elem_t * tso_desc,uint64_t enq_time)45  void qdf_trace_dp_packet(qdf_nbuf_t nbuf, enum qdf_proto_dir dir,
46  			 struct qdf_tso_seg_elem_t *tso_desc,
47  			 uint64_t enq_time)
48  {
49  }
50  #endif
51  
52  /**
53   * qdf_trace_dp_rx_tcp_pkt_enabled() - Get the dp_rx_tcp_pkt tracepoint
54   *  enabled or disabled state
55   *
56   * Return: True if the tracepoint is enabled else false
57   */
58  static inline
qdf_trace_dp_rx_tcp_pkt_enabled(void)59  bool qdf_trace_dp_rx_tcp_pkt_enabled(void)
60  {
61  	return __qdf_trace_dp_rx_tcp_pkt_enabled();
62  }
63  
64  /**
65   * qdf_trace_dp_rx_tcp_pkt() - Trace tcp packet in rx direction
66   * @nbuf: pointer to network buffer
67   * @tcp_seq_num: TCP sequence number
68   * @tcp_ack_num: TCP acknowlegment number
69   * @srcport: TCP source port
70   * @dstport: TCP destination port
71   * @latency: latency in milliseconds
72   *
73   * Return: None
74   */
75  static inline
qdf_trace_dp_rx_tcp_pkt(qdf_nbuf_t nbuf,uint32_t tcp_seq_num,uint32_t tcp_ack_num,uint16_t srcport,uint16_t dstport,uint64_t latency)76  void qdf_trace_dp_rx_tcp_pkt(qdf_nbuf_t nbuf, uint32_t tcp_seq_num,
77  			     uint32_t tcp_ack_num, uint16_t srcport,
78  			     uint16_t dstport, uint64_t latency)
79  {
80  	__qdf_trace_dp_rx_tcp_pkt(nbuf, tcp_seq_num, tcp_ack_num,
81  				  srcport, dstport, latency);
82  }
83  
84  /**
85   * qdf_trace_dp_tx_comp_tcp_pkt_enabled() - Get the dp_tx_comp_tcp_pkt
86   *  tracepoint enabled or disabled state
87   *
88   * Return: True if the tracepoint is enabled else false
89   */
90  static inline
qdf_trace_dp_tx_comp_tcp_pkt_enabled(void)91  bool qdf_trace_dp_tx_comp_tcp_pkt_enabled(void)
92  {
93  	return __qdf_trace_dp_tx_comp_tcp_pkt_enabled();
94  }
95  
96  /**
97   * qdf_trace_dp_tx_comp_tcp_pkt() - Trace tcp packet in tx completion
98   * @nbuf: pointer to network buffer
99   * @tcp_seq_num: TCP sequence number
100   * @tcp_ack_num: TCP acknowlegment number
101   * @srcport: TCP source port
102   * @dstport: TCP destination port
103   * @latency: latency in milliseconds
104   *
105   * Return: None
106   */
107  static inline
qdf_trace_dp_tx_comp_tcp_pkt(qdf_nbuf_t nbuf,uint32_t tcp_seq_num,uint32_t tcp_ack_num,uint16_t srcport,uint16_t dstport,uint64_t latency)108  void qdf_trace_dp_tx_comp_tcp_pkt(qdf_nbuf_t nbuf, uint32_t tcp_seq_num,
109  				  uint32_t tcp_ack_num, uint16_t srcport,
110  				  uint16_t dstport, uint64_t latency)
111  {
112  	__qdf_trace_dp_tx_comp_tcp_pkt(nbuf, tcp_seq_num, tcp_ack_num, srcport,
113  				       dstport, latency);
114  }
115  
116  /**
117   * qdf_trace_dp_rx_udp_pkt_enabled() - Get the dp_rx_udp_pkt tracepoint
118   *  enabled or disabled state
119   *
120   * Return: True if the tracepoint is enabled else false
121   */
122  static inline
qdf_trace_dp_rx_udp_pkt_enabled(void)123  bool qdf_trace_dp_rx_udp_pkt_enabled(void)
124  {
125  	return __qdf_trace_dp_rx_udp_pkt_enabled();
126  }
127  
128  /**
129   * qdf_trace_dp_rx_udp_pkt() - Trace udp packet in rx direction
130   * @nbuf: pointer to network buffer
131   * @ip_id: ip identification field
132   * @srcport: UDP source port
133   * @dstport: UDP destination port
134   * @latency: latency in milliseconds
135   *
136   * Return: None
137   */
138  static inline
qdf_trace_dp_rx_udp_pkt(qdf_nbuf_t nbuf,uint16_t ip_id,uint16_t srcport,uint16_t dstport,uint64_t latency)139  void qdf_trace_dp_rx_udp_pkt(qdf_nbuf_t nbuf, uint16_t ip_id,
140  			     uint16_t srcport, uint16_t dstport,
141  			     uint64_t latency)
142  {
143  	__qdf_trace_dp_rx_udp_pkt(nbuf, ip_id, srcport, dstport, latency);
144  }
145  
146  /**
147   * qdf_trace_dp_tx_comp_udp_pkt_enabled() - Get the dp_tx_comp_udp_pkt
148   *  tracepoint enabled or disabled state
149   *
150   * Return: True if the tracepoint is enabled else false
151   */
152  static inline
qdf_trace_dp_tx_comp_udp_pkt_enabled(void)153  bool qdf_trace_dp_tx_comp_udp_pkt_enabled(void)
154  {
155  	return __qdf_trace_dp_tx_comp_udp_pkt_enabled();
156  }
157  
158  /**
159   * qdf_trace_dp_tx_comp_udp_pkt() - Trace udp packet in tx completion
160   * @nbuf: pointer to network buffer
161   * @ip_id: ip identification field
162   * @srcport: UDP source port
163   * @dstport: UDP destination port
164   * @latency: latency in milliseconds
165   *
166   * Return: None
167   */
168  static inline
qdf_trace_dp_tx_comp_udp_pkt(qdf_nbuf_t nbuf,uint16_t ip_id,uint16_t srcport,uint16_t dstport,uint64_t latency)169  void qdf_trace_dp_tx_comp_udp_pkt(qdf_nbuf_t nbuf, uint16_t ip_id,
170  				  uint16_t srcport, uint16_t dstport,
171  				  uint64_t latency)
172  {
173  	__qdf_trace_dp_tx_comp_udp_pkt(nbuf, ip_id, srcport, dstport, latency);
174  }
175  
176  /**
177   * qdf_trace_dp_rx_pkt_enabled() - Get the dp_rx_pkt tracepoint
178   *  enabled or disabled state
179   *
180   * Return: True if the tracepoint is enabled else false
181   */
182  static inline
qdf_trace_dp_rx_pkt_enabled(void)183  bool qdf_trace_dp_rx_pkt_enabled(void)
184  {
185  	return __qdf_trace_dp_rx_pkt_enabled();
186  }
187  
188  /**
189   * qdf_trace_dp_rx_pkt() - Trace non-tcp/udp packet in rx direction
190   * @nbuf: pointer to network buffer
191   * @ether_type: type in ethernet header
192   * @latency: latency in milliseconds
193   *
194   * Return: None
195   */
196  static inline
qdf_trace_dp_rx_pkt(qdf_nbuf_t nbuf,uint16_t ether_type,uint64_t latency)197  void qdf_trace_dp_rx_pkt(qdf_nbuf_t nbuf, uint16_t ether_type,
198  			 uint64_t latency)
199  {
200  	__qdf_trace_dp_rx_pkt(nbuf, ether_type, latency);
201  }
202  
203  /**
204   * qdf_trace_dp_tx_comp_pkt_enabled() - Get the dp_tx_comp_pkt tracepoint
205   *  enabled or disabled state
206   *
207   * Return: True if the tracepoint is enabled else false
208   */
209  static inline
qdf_trace_dp_tx_comp_pkt_enabled(void)210  bool qdf_trace_dp_tx_comp_pkt_enabled(void)
211  {
212  	return __qdf_trace_dp_tx_comp_pkt_enabled();
213  }
214  
215  /**
216   * qdf_trace_dp_tx_comp_pkt() - Trace non-tcp/udp packet in rx direction
217   * @nbuf: pointer to network buffer
218   * @ether_type: type in ethernet header
219   * @latency: latency in milliseconds
220   *
221   * Return: None
222   */
223  static inline
qdf_trace_dp_tx_comp_pkt(qdf_nbuf_t nbuf,uint16_t ether_type,uint64_t latency)224  void qdf_trace_dp_tx_comp_pkt(qdf_nbuf_t nbuf, uint16_t ether_type,
225  			      uint64_t latency)
226  {
227  	__qdf_trace_dp_tx_comp_pkt(nbuf, ether_type, latency);
228  }
229  
230  /**
231   * qdf_trace_dp_del_reg_write_enabled() - Get the dp_del_reg_write tracepoint
232   *  enabled or disabled state
233   *
234   * Return: True if the tracepoint is enabled else false
235   */
236  static inline
qdf_trace_dp_del_reg_write_enabled(void)237  bool qdf_trace_dp_del_reg_write_enabled(void)
238  {
239  	return __qdf_trace_dp_del_reg_write_enabled();
240  }
241  
242  /**
243   * qdf_trace_dp_del_reg_write() - Trace delayed register writes
244   * @srng_id: srng id
245   * @enq_val: enqueue value
246   * @deq_val: dequeue value
247   * @enq_time: enqueue time in qtimer ticks
248   * @deq_time: dequeue time in qtimer ticks
249   *
250   * Return: None
251   */
252  static inline
qdf_trace_dp_del_reg_write(uint8_t srng_id,uint32_t enq_val,uint32_t deq_val,uint64_t enq_time,uint64_t deq_time)253  void qdf_trace_dp_del_reg_write(uint8_t srng_id, uint32_t enq_val,
254  				uint32_t deq_val, uint64_t enq_time,
255  				uint64_t deq_time)
256  {
257  	__qdf_trace_dp_del_reg_write(srng_id, enq_val, deq_val, enq_time,
258  				     deq_time);
259  }
260  
261  /**
262   * qdf_trace_dp_ce_tasklet_sched_latency_enabled() - Get the
263   *   dp_ce_tasklet_sched_latency tracepoint enabled or disabled state
264   *
265   * Return: True if the tracepoint is enabled else false
266   */
267  static inline
qdf_trace_dp_ce_tasklet_sched_latency_enabled(void)268  bool qdf_trace_dp_ce_tasklet_sched_latency_enabled(void)
269  {
270  	return __qdf_trace_dp_ce_tasklet_sched_latency_enabled();
271  }
272  
273  /**
274   * qdf_trace_dp_ce_tasklet_sched_latency() - Trace ce tasklet scheduling
275   *  latency
276   * @ce_id: ce id
277   * @sched_latency: ce tasklet sched latency in nanoseconds
278   *
279   * Return: None
280   */
281  static inline void
qdf_trace_dp_ce_tasklet_sched_latency(uint8_t ce_id,uint64_t sched_latency)282  qdf_trace_dp_ce_tasklet_sched_latency(uint8_t ce_id, uint64_t sched_latency)
283  {
284  	__qdf_trace_dp_ce_tasklet_sched_latency(ce_id, sched_latency);
285  }
286  #endif /* _QDF_TRACEPOINT_H */
287