13089cf6dSJesse Brandeburg /* SPDX-License-Identifier: GPL-2.0 */
23089cf6dSJesse Brandeburg /* Copyright (C) 2021 Intel Corporation. */
33089cf6dSJesse Brandeburg 
43089cf6dSJesse Brandeburg /* Modeled on trace-events-sample.h */
53089cf6dSJesse Brandeburg 
63089cf6dSJesse Brandeburg /* The trace subsystem name for ice will be "ice".
73089cf6dSJesse Brandeburg  *
83089cf6dSJesse Brandeburg  * This file is named ice_trace.h.
93089cf6dSJesse Brandeburg  *
103089cf6dSJesse Brandeburg  * Since this include file's name is different from the trace
113089cf6dSJesse Brandeburg  * subsystem name, we'll have to define TRACE_INCLUDE_FILE at the end
123089cf6dSJesse Brandeburg  * of this file.
133089cf6dSJesse Brandeburg  */
143089cf6dSJesse Brandeburg #undef TRACE_SYSTEM
153089cf6dSJesse Brandeburg #define TRACE_SYSTEM ice
163089cf6dSJesse Brandeburg 
173089cf6dSJesse Brandeburg /* See trace-events-sample.h for a detailed description of why this
183089cf6dSJesse Brandeburg  * guard clause is different from most normal include files.
193089cf6dSJesse Brandeburg  */
203089cf6dSJesse Brandeburg #if !defined(_ICE_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
213089cf6dSJesse Brandeburg #define _ICE_TRACE_H_
223089cf6dSJesse Brandeburg 
233089cf6dSJesse Brandeburg #include <linux/tracepoint.h>
24*d129c2a2SPawel Chmielewski #include "ice_eswitch_br.h"
253089cf6dSJesse Brandeburg 
263089cf6dSJesse Brandeburg /* ice_trace() macro enables shared code to refer to trace points
273089cf6dSJesse Brandeburg  * like:
283089cf6dSJesse Brandeburg  *
293089cf6dSJesse Brandeburg  * trace_ice_example(args...)
303089cf6dSJesse Brandeburg  *
313089cf6dSJesse Brandeburg  * ... as:
323089cf6dSJesse Brandeburg  *
333089cf6dSJesse Brandeburg  * ice_trace(example, args...)
343089cf6dSJesse Brandeburg  *
353089cf6dSJesse Brandeburg  * ... to resolve to the PF version of the tracepoint without
363089cf6dSJesse Brandeburg  * ifdefs, and to allow tracepoints to be disabled entirely at build
373089cf6dSJesse Brandeburg  * time.
383089cf6dSJesse Brandeburg  *
393089cf6dSJesse Brandeburg  * Trace point should always be referred to in the driver via this
403089cf6dSJesse Brandeburg  * macro.
413089cf6dSJesse Brandeburg  *
423089cf6dSJesse Brandeburg  * Similarly, ice_trace_enabled(trace_name) wraps references to
433089cf6dSJesse Brandeburg  * trace_ice_<trace_name>_enabled() functions.
443089cf6dSJesse Brandeburg  * @trace_name: name of tracepoint
453089cf6dSJesse Brandeburg  */
463089cf6dSJesse Brandeburg #define _ICE_TRACE_NAME(trace_name) (trace_##ice##_##trace_name)
473089cf6dSJesse Brandeburg #define ICE_TRACE_NAME(trace_name) _ICE_TRACE_NAME(trace_name)
483089cf6dSJesse Brandeburg 
493089cf6dSJesse Brandeburg #define ice_trace(trace_name, args...) ICE_TRACE_NAME(trace_name)(args)
503089cf6dSJesse Brandeburg 
513089cf6dSJesse Brandeburg #define ice_trace_enabled(trace_name) ICE_TRACE_NAME(trace_name##_enabled)()
523089cf6dSJesse Brandeburg 
533089cf6dSJesse Brandeburg /* This is for events common to PF. Corresponding versions will be named
543089cf6dSJesse Brandeburg  * trace_ice_*. The ice_trace() macro above will select the right trace point
553089cf6dSJesse Brandeburg  * name for the driver.
563089cf6dSJesse Brandeburg  */
573089cf6dSJesse Brandeburg 
583089cf6dSJesse Brandeburg /* Begin tracepoints */
593089cf6dSJesse Brandeburg 
603089cf6dSJesse Brandeburg /* Global tracepoints */
613089cf6dSJesse Brandeburg 
623089cf6dSJesse Brandeburg /* Events related to DIM, q_vectors and ring containers */
633089cf6dSJesse Brandeburg DECLARE_EVENT_CLASS(ice_rx_dim_template,
643089cf6dSJesse Brandeburg 		    TP_PROTO(struct ice_q_vector *q_vector, struct dim *dim),
653089cf6dSJesse Brandeburg 		    TP_ARGS(q_vector, dim),
663089cf6dSJesse Brandeburg 		    TP_STRUCT__entry(__field(struct ice_q_vector *, q_vector)
673089cf6dSJesse Brandeburg 				     __field(struct dim *, dim)
68e72bba21SMaciej Fijalkowski 				     __string(devname, q_vector->rx.rx_ring->netdev->name)),
693089cf6dSJesse Brandeburg 
703089cf6dSJesse Brandeburg 		    TP_fast_assign(__entry->q_vector = q_vector;
713089cf6dSJesse Brandeburg 				   __entry->dim = dim;
72e72bba21SMaciej Fijalkowski 				   __assign_str(devname, q_vector->rx.rx_ring->netdev->name);),
733089cf6dSJesse Brandeburg 
743089cf6dSJesse Brandeburg 		    TP_printk("netdev: %s Rx-Q: %d dim-state: %d dim-profile: %d dim-tune: %d dim-st-right: %d dim-st-left: %d dim-tired: %d",
753089cf6dSJesse Brandeburg 			      __get_str(devname),
76e72bba21SMaciej Fijalkowski 			      __entry->q_vector->rx.rx_ring->q_index,
773089cf6dSJesse Brandeburg 			      __entry->dim->state,
783089cf6dSJesse Brandeburg 			      __entry->dim->profile_ix,
793089cf6dSJesse Brandeburg 			      __entry->dim->tune_state,
803089cf6dSJesse Brandeburg 			      __entry->dim->steps_right,
813089cf6dSJesse Brandeburg 			      __entry->dim->steps_left,
823089cf6dSJesse Brandeburg 			      __entry->dim->tired)
833089cf6dSJesse Brandeburg );
843089cf6dSJesse Brandeburg 
853089cf6dSJesse Brandeburg DEFINE_EVENT(ice_rx_dim_template, ice_rx_dim_work,
863089cf6dSJesse Brandeburg 	     TP_PROTO(struct ice_q_vector *q_vector, struct dim *dim),
873089cf6dSJesse Brandeburg 	     TP_ARGS(q_vector, dim)
883089cf6dSJesse Brandeburg );
893089cf6dSJesse Brandeburg 
903089cf6dSJesse Brandeburg DECLARE_EVENT_CLASS(ice_tx_dim_template,
913089cf6dSJesse Brandeburg 		    TP_PROTO(struct ice_q_vector *q_vector, struct dim *dim),
923089cf6dSJesse Brandeburg 		    TP_ARGS(q_vector, dim),
933089cf6dSJesse Brandeburg 		    TP_STRUCT__entry(__field(struct ice_q_vector *, q_vector)
943089cf6dSJesse Brandeburg 				     __field(struct dim *, dim)
95e72bba21SMaciej Fijalkowski 				     __string(devname, q_vector->tx.tx_ring->netdev->name)),
963089cf6dSJesse Brandeburg 
973089cf6dSJesse Brandeburg 		    TP_fast_assign(__entry->q_vector = q_vector;
983089cf6dSJesse Brandeburg 				   __entry->dim = dim;
99e72bba21SMaciej Fijalkowski 				   __assign_str(devname, q_vector->tx.tx_ring->netdev->name);),
1003089cf6dSJesse Brandeburg 
1013089cf6dSJesse Brandeburg 		    TP_printk("netdev: %s Tx-Q: %d dim-state: %d dim-profile: %d dim-tune: %d dim-st-right: %d dim-st-left: %d dim-tired: %d",
1023089cf6dSJesse Brandeburg 			      __get_str(devname),
103e72bba21SMaciej Fijalkowski 			      __entry->q_vector->tx.tx_ring->q_index,
1043089cf6dSJesse Brandeburg 			      __entry->dim->state,
1053089cf6dSJesse Brandeburg 			      __entry->dim->profile_ix,
1063089cf6dSJesse Brandeburg 			      __entry->dim->tune_state,
1073089cf6dSJesse Brandeburg 			      __entry->dim->steps_right,
1083089cf6dSJesse Brandeburg 			      __entry->dim->steps_left,
1093089cf6dSJesse Brandeburg 			      __entry->dim->tired)
1103089cf6dSJesse Brandeburg );
1113089cf6dSJesse Brandeburg 
1123089cf6dSJesse Brandeburg DEFINE_EVENT(ice_tx_dim_template, ice_tx_dim_work,
1133089cf6dSJesse Brandeburg 	     TP_PROTO(struct ice_q_vector *q_vector, struct dim *dim),
1143089cf6dSJesse Brandeburg 	     TP_ARGS(q_vector, dim)
1153089cf6dSJesse Brandeburg );
1163089cf6dSJesse Brandeburg 
1173089cf6dSJesse Brandeburg /* Events related to a vsi & ring */
1183089cf6dSJesse Brandeburg DECLARE_EVENT_CLASS(ice_tx_template,
119e72bba21SMaciej Fijalkowski 		    TP_PROTO(struct ice_tx_ring *ring, struct ice_tx_desc *desc,
1203089cf6dSJesse Brandeburg 			     struct ice_tx_buf *buf),
1213089cf6dSJesse Brandeburg 
1223089cf6dSJesse Brandeburg 		    TP_ARGS(ring, desc, buf),
1233089cf6dSJesse Brandeburg 		    TP_STRUCT__entry(__field(void *, ring)
1243089cf6dSJesse Brandeburg 				     __field(void *, desc)
1253089cf6dSJesse Brandeburg 				     __field(void *, buf)
1263089cf6dSJesse Brandeburg 				     __string(devname, ring->netdev->name)),
1273089cf6dSJesse Brandeburg 
1283089cf6dSJesse Brandeburg 		    TP_fast_assign(__entry->ring = ring;
1293089cf6dSJesse Brandeburg 				   __entry->desc = desc;
1303089cf6dSJesse Brandeburg 				   __entry->buf = buf;
1313089cf6dSJesse Brandeburg 				   __assign_str(devname, ring->netdev->name);),
1323089cf6dSJesse Brandeburg 
1333089cf6dSJesse Brandeburg 		    TP_printk("netdev: %s ring: %pK desc: %pK buf %pK", __get_str(devname),
1343089cf6dSJesse Brandeburg 			      __entry->ring, __entry->desc, __entry->buf)
1353089cf6dSJesse Brandeburg );
1363089cf6dSJesse Brandeburg 
1373089cf6dSJesse Brandeburg #define DEFINE_TX_TEMPLATE_OP_EVENT(name) \
1383089cf6dSJesse Brandeburg DEFINE_EVENT(ice_tx_template, name, \
139e72bba21SMaciej Fijalkowski 	     TP_PROTO(struct ice_tx_ring *ring, \
1403089cf6dSJesse Brandeburg 		      struct ice_tx_desc *desc, \
1413089cf6dSJesse Brandeburg 		      struct ice_tx_buf *buf), \
1423089cf6dSJesse Brandeburg 	     TP_ARGS(ring, desc, buf))
1433089cf6dSJesse Brandeburg 
1443089cf6dSJesse Brandeburg DEFINE_TX_TEMPLATE_OP_EVENT(ice_clean_tx_irq);
1453089cf6dSJesse Brandeburg DEFINE_TX_TEMPLATE_OP_EVENT(ice_clean_tx_irq_unmap);
1463089cf6dSJesse Brandeburg DEFINE_TX_TEMPLATE_OP_EVENT(ice_clean_tx_irq_unmap_eop);
1473089cf6dSJesse Brandeburg 
1483089cf6dSJesse Brandeburg DECLARE_EVENT_CLASS(ice_rx_template,
149e72bba21SMaciej Fijalkowski 		    TP_PROTO(struct ice_rx_ring *ring, union ice_32b_rx_flex_desc *desc),
1503089cf6dSJesse Brandeburg 
1513089cf6dSJesse Brandeburg 		    TP_ARGS(ring, desc),
1523089cf6dSJesse Brandeburg 
1533089cf6dSJesse Brandeburg 		    TP_STRUCT__entry(__field(void *, ring)
1543089cf6dSJesse Brandeburg 				     __field(void *, desc)
1553089cf6dSJesse Brandeburg 				     __string(devname, ring->netdev->name)),
1563089cf6dSJesse Brandeburg 
1573089cf6dSJesse Brandeburg 		    TP_fast_assign(__entry->ring = ring;
1583089cf6dSJesse Brandeburg 				   __entry->desc = desc;
1593089cf6dSJesse Brandeburg 				   __assign_str(devname, ring->netdev->name);),
1603089cf6dSJesse Brandeburg 
1613089cf6dSJesse Brandeburg 		    TP_printk("netdev: %s ring: %pK desc: %pK", __get_str(devname),
1623089cf6dSJesse Brandeburg 			      __entry->ring, __entry->desc)
1633089cf6dSJesse Brandeburg );
1643089cf6dSJesse Brandeburg DEFINE_EVENT(ice_rx_template, ice_clean_rx_irq,
165e72bba21SMaciej Fijalkowski 	     TP_PROTO(struct ice_rx_ring *ring, union ice_32b_rx_flex_desc *desc),
1663089cf6dSJesse Brandeburg 	     TP_ARGS(ring, desc)
1673089cf6dSJesse Brandeburg );
1683089cf6dSJesse Brandeburg 
1693089cf6dSJesse Brandeburg DECLARE_EVENT_CLASS(ice_rx_indicate_template,
170e72bba21SMaciej Fijalkowski 		    TP_PROTO(struct ice_rx_ring *ring, union ice_32b_rx_flex_desc *desc,
1713089cf6dSJesse Brandeburg 			     struct sk_buff *skb),
1723089cf6dSJesse Brandeburg 
1733089cf6dSJesse Brandeburg 		    TP_ARGS(ring, desc, skb),
1743089cf6dSJesse Brandeburg 
1753089cf6dSJesse Brandeburg 		    TP_STRUCT__entry(__field(void *, ring)
1763089cf6dSJesse Brandeburg 				     __field(void *, desc)
1773089cf6dSJesse Brandeburg 				     __field(void *, skb)
1783089cf6dSJesse Brandeburg 				     __string(devname, ring->netdev->name)),
1793089cf6dSJesse Brandeburg 
1803089cf6dSJesse Brandeburg 		    TP_fast_assign(__entry->ring = ring;
1813089cf6dSJesse Brandeburg 				   __entry->desc = desc;
1823089cf6dSJesse Brandeburg 				   __entry->skb = skb;
1833089cf6dSJesse Brandeburg 				   __assign_str(devname, ring->netdev->name);),
1843089cf6dSJesse Brandeburg 
1853089cf6dSJesse Brandeburg 		    TP_printk("netdev: %s ring: %pK desc: %pK skb %pK", __get_str(devname),
1863089cf6dSJesse Brandeburg 			      __entry->ring, __entry->desc, __entry->skb)
1873089cf6dSJesse Brandeburg );
1883089cf6dSJesse Brandeburg 
1893089cf6dSJesse Brandeburg DEFINE_EVENT(ice_rx_indicate_template, ice_clean_rx_irq_indicate,
190e72bba21SMaciej Fijalkowski 	     TP_PROTO(struct ice_rx_ring *ring, union ice_32b_rx_flex_desc *desc,
1913089cf6dSJesse Brandeburg 		      struct sk_buff *skb),
1923089cf6dSJesse Brandeburg 	     TP_ARGS(ring, desc, skb)
1933089cf6dSJesse Brandeburg );
1943089cf6dSJesse Brandeburg 
1953089cf6dSJesse Brandeburg DECLARE_EVENT_CLASS(ice_xmit_template,
196e72bba21SMaciej Fijalkowski 		    TP_PROTO(struct ice_tx_ring *ring, struct sk_buff *skb),
1973089cf6dSJesse Brandeburg 
1983089cf6dSJesse Brandeburg 		    TP_ARGS(ring, skb),
1993089cf6dSJesse Brandeburg 
2003089cf6dSJesse Brandeburg 		    TP_STRUCT__entry(__field(void *, ring)
2013089cf6dSJesse Brandeburg 				     __field(void *, skb)
2023089cf6dSJesse Brandeburg 				     __string(devname, ring->netdev->name)),
2033089cf6dSJesse Brandeburg 
2043089cf6dSJesse Brandeburg 		    TP_fast_assign(__entry->ring = ring;
2053089cf6dSJesse Brandeburg 				   __entry->skb = skb;
2063089cf6dSJesse Brandeburg 				   __assign_str(devname, ring->netdev->name);),
2073089cf6dSJesse Brandeburg 
2083089cf6dSJesse Brandeburg 		    TP_printk("netdev: %s skb: %pK ring: %pK", __get_str(devname),
2093089cf6dSJesse Brandeburg 			      __entry->skb, __entry->ring)
2103089cf6dSJesse Brandeburg );
2113089cf6dSJesse Brandeburg 
2123089cf6dSJesse Brandeburg #define DEFINE_XMIT_TEMPLATE_OP_EVENT(name) \
2133089cf6dSJesse Brandeburg DEFINE_EVENT(ice_xmit_template, name, \
214e72bba21SMaciej Fijalkowski 	     TP_PROTO(struct ice_tx_ring *ring, struct sk_buff *skb), \
2153089cf6dSJesse Brandeburg 	     TP_ARGS(ring, skb))
2163089cf6dSJesse Brandeburg 
2173089cf6dSJesse Brandeburg DEFINE_XMIT_TEMPLATE_OP_EVENT(ice_xmit_frame_ring);
2183089cf6dSJesse Brandeburg DEFINE_XMIT_TEMPLATE_OP_EVENT(ice_xmit_frame_ring_drop);
2193089cf6dSJesse Brandeburg 
2204c120218SJacob Keller DECLARE_EVENT_CLASS(ice_tx_tstamp_template,
2214c120218SJacob Keller 		    TP_PROTO(struct sk_buff *skb, int idx),
2224c120218SJacob Keller 
2234c120218SJacob Keller 		    TP_ARGS(skb, idx),
2244c120218SJacob Keller 
2254c120218SJacob Keller 		    TP_STRUCT__entry(__field(void *, skb)
2264c120218SJacob Keller 				     __field(int, idx)),
2274c120218SJacob Keller 
2284c120218SJacob Keller 		    TP_fast_assign(__entry->skb = skb;
2294c120218SJacob Keller 				   __entry->idx = idx;),
2304c120218SJacob Keller 
2314c120218SJacob Keller 		    TP_printk("skb %pK idx %d",
2324c120218SJacob Keller 			      __entry->skb, __entry->idx)
2334c120218SJacob Keller );
2344c120218SJacob Keller #define DEFINE_TX_TSTAMP_OP_EVENT(name) \
2354c120218SJacob Keller DEFINE_EVENT(ice_tx_tstamp_template, name, \
2364c120218SJacob Keller 	     TP_PROTO(struct sk_buff *skb, int idx), \
2374c120218SJacob Keller 	     TP_ARGS(skb, idx))
2384c120218SJacob Keller 
2394c120218SJacob Keller DEFINE_TX_TSTAMP_OP_EVENT(ice_tx_tstamp_request);
2404c120218SJacob Keller DEFINE_TX_TSTAMP_OP_EVENT(ice_tx_tstamp_fw_req);
2414c120218SJacob Keller DEFINE_TX_TSTAMP_OP_EVENT(ice_tx_tstamp_fw_done);
2424c120218SJacob Keller DEFINE_TX_TSTAMP_OP_EVENT(ice_tx_tstamp_complete);
2434c120218SJacob Keller 
244*d129c2a2SPawel Chmielewski DECLARE_EVENT_CLASS(ice_esw_br_fdb_template,
245*d129c2a2SPawel Chmielewski 		    TP_PROTO(struct ice_esw_br_fdb_entry *fdb),
246*d129c2a2SPawel Chmielewski 		    TP_ARGS(fdb),
247*d129c2a2SPawel Chmielewski 		    TP_STRUCT__entry(__array(char, dev_name, IFNAMSIZ)
248*d129c2a2SPawel Chmielewski 				     __array(unsigned char, addr, ETH_ALEN)
249*d129c2a2SPawel Chmielewski 				     __field(u16, vid)
250*d129c2a2SPawel Chmielewski 				     __field(int, flags)),
251*d129c2a2SPawel Chmielewski 		    TP_fast_assign(strscpy(__entry->dev_name,
252*d129c2a2SPawel Chmielewski 					   netdev_name(fdb->dev),
253*d129c2a2SPawel Chmielewski 					   IFNAMSIZ);
254*d129c2a2SPawel Chmielewski 				   memcpy(__entry->addr, fdb->data.addr, ETH_ALEN);
255*d129c2a2SPawel Chmielewski 				   __entry->vid = fdb->data.vid;
256*d129c2a2SPawel Chmielewski 				   __entry->flags = fdb->flags;),
257*d129c2a2SPawel Chmielewski 		    TP_printk("net_device=%s addr=%pM vid=%u flags=%x",
258*d129c2a2SPawel Chmielewski 			      __entry->dev_name,
259*d129c2a2SPawel Chmielewski 			      __entry->addr,
260*d129c2a2SPawel Chmielewski 			      __entry->vid,
261*d129c2a2SPawel Chmielewski 			      __entry->flags)
262*d129c2a2SPawel Chmielewski );
263*d129c2a2SPawel Chmielewski 
264*d129c2a2SPawel Chmielewski DEFINE_EVENT(ice_esw_br_fdb_template,
265*d129c2a2SPawel Chmielewski 	     ice_eswitch_br_fdb_entry_create,
266*d129c2a2SPawel Chmielewski 	     TP_PROTO(struct ice_esw_br_fdb_entry *fdb),
267*d129c2a2SPawel Chmielewski 	     TP_ARGS(fdb)
268*d129c2a2SPawel Chmielewski );
269*d129c2a2SPawel Chmielewski 
270*d129c2a2SPawel Chmielewski DEFINE_EVENT(ice_esw_br_fdb_template,
271*d129c2a2SPawel Chmielewski 	     ice_eswitch_br_fdb_entry_find_and_delete,
272*d129c2a2SPawel Chmielewski 	     TP_PROTO(struct ice_esw_br_fdb_entry *fdb),
273*d129c2a2SPawel Chmielewski 	     TP_ARGS(fdb)
274*d129c2a2SPawel Chmielewski );
275*d129c2a2SPawel Chmielewski 
276*d129c2a2SPawel Chmielewski DECLARE_EVENT_CLASS(ice_esw_br_vlan_template,
277*d129c2a2SPawel Chmielewski 		    TP_PROTO(struct ice_esw_br_vlan *vlan),
278*d129c2a2SPawel Chmielewski 		    TP_ARGS(vlan),
279*d129c2a2SPawel Chmielewski 		    TP_STRUCT__entry(__field(u16, vid)
280*d129c2a2SPawel Chmielewski 				     __field(u16, flags)),
281*d129c2a2SPawel Chmielewski 		    TP_fast_assign(__entry->vid = vlan->vid;
282*d129c2a2SPawel Chmielewski 				   __entry->flags = vlan->flags;),
283*d129c2a2SPawel Chmielewski 		    TP_printk("vid=%u flags=%x",
284*d129c2a2SPawel Chmielewski 			      __entry->vid,
285*d129c2a2SPawel Chmielewski 			      __entry->flags)
286*d129c2a2SPawel Chmielewski );
287*d129c2a2SPawel Chmielewski 
288*d129c2a2SPawel Chmielewski DEFINE_EVENT(ice_esw_br_vlan_template,
289*d129c2a2SPawel Chmielewski 	     ice_eswitch_br_vlan_create,
290*d129c2a2SPawel Chmielewski 	     TP_PROTO(struct ice_esw_br_vlan *vlan),
291*d129c2a2SPawel Chmielewski 	     TP_ARGS(vlan)
292*d129c2a2SPawel Chmielewski );
293*d129c2a2SPawel Chmielewski 
294*d129c2a2SPawel Chmielewski DEFINE_EVENT(ice_esw_br_vlan_template,
295*d129c2a2SPawel Chmielewski 	     ice_eswitch_br_vlan_cleanup,
296*d129c2a2SPawel Chmielewski 	     TP_PROTO(struct ice_esw_br_vlan *vlan),
297*d129c2a2SPawel Chmielewski 	     TP_ARGS(vlan)
298*d129c2a2SPawel Chmielewski );
299*d129c2a2SPawel Chmielewski 
300*d129c2a2SPawel Chmielewski #define ICE_ESW_BR_PORT_NAME_L 16
301*d129c2a2SPawel Chmielewski 
302*d129c2a2SPawel Chmielewski DECLARE_EVENT_CLASS(ice_esw_br_port_template,
303*d129c2a2SPawel Chmielewski 		    TP_PROTO(struct ice_esw_br_port *port),
304*d129c2a2SPawel Chmielewski 		    TP_ARGS(port),
305*d129c2a2SPawel Chmielewski 		    TP_STRUCT__entry(__field(u16, vport_num)
306*d129c2a2SPawel Chmielewski 				     __array(char, port_type, ICE_ESW_BR_PORT_NAME_L)),
307*d129c2a2SPawel Chmielewski 		    TP_fast_assign(__entry->vport_num = port->vsi_idx;
308*d129c2a2SPawel Chmielewski 					if (port->type == ICE_ESWITCH_BR_UPLINK_PORT)
309*d129c2a2SPawel Chmielewski 						strscpy(__entry->port_type,
310*d129c2a2SPawel Chmielewski 							"Uplink",
311*d129c2a2SPawel Chmielewski 							ICE_ESW_BR_PORT_NAME_L);
312*d129c2a2SPawel Chmielewski 					else
313*d129c2a2SPawel Chmielewski 						strscpy(__entry->port_type,
314*d129c2a2SPawel Chmielewski 							"VF Representor",
315*d129c2a2SPawel Chmielewski 							ICE_ESW_BR_PORT_NAME_L);),
316*d129c2a2SPawel Chmielewski 		    TP_printk("vport_num=%u port type=%s",
317*d129c2a2SPawel Chmielewski 			      __entry->vport_num,
318*d129c2a2SPawel Chmielewski 			      __entry->port_type)
319*d129c2a2SPawel Chmielewski );
320*d129c2a2SPawel Chmielewski 
321*d129c2a2SPawel Chmielewski DEFINE_EVENT(ice_esw_br_port_template,
322*d129c2a2SPawel Chmielewski 	     ice_eswitch_br_port_link,
323*d129c2a2SPawel Chmielewski 	     TP_PROTO(struct ice_esw_br_port *port),
324*d129c2a2SPawel Chmielewski 	     TP_ARGS(port)
325*d129c2a2SPawel Chmielewski );
326*d129c2a2SPawel Chmielewski 
327*d129c2a2SPawel Chmielewski DEFINE_EVENT(ice_esw_br_port_template,
328*d129c2a2SPawel Chmielewski 	     ice_eswitch_br_port_unlink,
329*d129c2a2SPawel Chmielewski 	     TP_PROTO(struct ice_esw_br_port *port),
330*d129c2a2SPawel Chmielewski 	     TP_ARGS(port)
331*d129c2a2SPawel Chmielewski );
332*d129c2a2SPawel Chmielewski 
3333089cf6dSJesse Brandeburg /* End tracepoints */
3343089cf6dSJesse Brandeburg 
3353089cf6dSJesse Brandeburg #endif /* _ICE_TRACE_H_ */
3363089cf6dSJesse Brandeburg /* This must be outside ifdef _ICE_TRACE_H */
3373089cf6dSJesse Brandeburg 
3383089cf6dSJesse Brandeburg /* This trace include file is not located in the .../include/trace
3393089cf6dSJesse Brandeburg  * with the kernel tracepoint definitions, because we're a loadable
3403089cf6dSJesse Brandeburg  * module.
3413089cf6dSJesse Brandeburg  */
3423089cf6dSJesse Brandeburg #undef TRACE_INCLUDE_PATH
3433089cf6dSJesse Brandeburg #define TRACE_INCLUDE_PATH .
3443089cf6dSJesse Brandeburg #undef TRACE_INCLUDE_FILE
3453089cf6dSJesse Brandeburg #define TRACE_INCLUDE_FILE ../../drivers/net/ethernet/intel/ice/ice_trace
3463089cf6dSJesse Brandeburg #include <trace/define_trace.h>
347