xref: /openbmc/linux/include/trace/events/sctp.h (revision 8dd06ef34b6e2f41b29fbf5fc1663780f2524285)
1*103d750cSMasami Hiramatsu /* SPDX-License-Identifier: GPL-2.0 */
2*103d750cSMasami Hiramatsu #undef TRACE_SYSTEM
3*103d750cSMasami Hiramatsu #define TRACE_SYSTEM sctp
4*103d750cSMasami Hiramatsu 
5*103d750cSMasami Hiramatsu #if !defined(_TRACE_SCTP_H) || defined(TRACE_HEADER_MULTI_READ)
6*103d750cSMasami Hiramatsu #define _TRACE_SCTP_H
7*103d750cSMasami Hiramatsu 
8*103d750cSMasami Hiramatsu #include <net/sctp/structs.h>
9*103d750cSMasami Hiramatsu #include <linux/tracepoint.h>
10*103d750cSMasami Hiramatsu 
11*103d750cSMasami Hiramatsu TRACE_EVENT(sctp_probe_path,
12*103d750cSMasami Hiramatsu 
13*103d750cSMasami Hiramatsu 	TP_PROTO(struct sctp_transport *sp,
14*103d750cSMasami Hiramatsu 		 const struct sctp_association *asoc),
15*103d750cSMasami Hiramatsu 
16*103d750cSMasami Hiramatsu 	TP_ARGS(sp, asoc),
17*103d750cSMasami Hiramatsu 
18*103d750cSMasami Hiramatsu 	TP_STRUCT__entry(
19*103d750cSMasami Hiramatsu 		__field(__u64, asoc)
20*103d750cSMasami Hiramatsu 		__field(__u32, primary)
21*103d750cSMasami Hiramatsu 		__array(__u8, ipaddr, sizeof(union sctp_addr))
22*103d750cSMasami Hiramatsu 		__field(__u32, state)
23*103d750cSMasami Hiramatsu 		__field(__u32, cwnd)
24*103d750cSMasami Hiramatsu 		__field(__u32, ssthresh)
25*103d750cSMasami Hiramatsu 		__field(__u32, flight_size)
26*103d750cSMasami Hiramatsu 		__field(__u32, partial_bytes_acked)
27*103d750cSMasami Hiramatsu 		__field(__u32, pathmtu)
28*103d750cSMasami Hiramatsu 	),
29*103d750cSMasami Hiramatsu 
30*103d750cSMasami Hiramatsu 	TP_fast_assign(
31*103d750cSMasami Hiramatsu 		__entry->asoc = (unsigned long)asoc;
32*103d750cSMasami Hiramatsu 		__entry->primary = (sp == asoc->peer.primary_path);
33*103d750cSMasami Hiramatsu 		memcpy(__entry->ipaddr, &sp->ipaddr, sizeof(union sctp_addr));
34*103d750cSMasami Hiramatsu 		__entry->state = sp->state;
35*103d750cSMasami Hiramatsu 		__entry->cwnd = sp->cwnd;
36*103d750cSMasami Hiramatsu 		__entry->ssthresh = sp->ssthresh;
37*103d750cSMasami Hiramatsu 		__entry->flight_size = sp->flight_size;
38*103d750cSMasami Hiramatsu 		__entry->partial_bytes_acked = sp->partial_bytes_acked;
39*103d750cSMasami Hiramatsu 		__entry->pathmtu = sp->pathmtu;
40*103d750cSMasami Hiramatsu 	),
41*103d750cSMasami Hiramatsu 
42*103d750cSMasami Hiramatsu 	TP_printk("asoc=%#llx%s ipaddr=%pISpc state=%u cwnd=%u ssthresh=%u "
43*103d750cSMasami Hiramatsu 		  "flight_size=%u partial_bytes_acked=%u pathmtu=%u",
44*103d750cSMasami Hiramatsu 		  __entry->asoc, __entry->primary ? "(*)" : "",
45*103d750cSMasami Hiramatsu 		  __entry->ipaddr, __entry->state, __entry->cwnd,
46*103d750cSMasami Hiramatsu 		  __entry->ssthresh, __entry->flight_size,
47*103d750cSMasami Hiramatsu 		  __entry->partial_bytes_acked, __entry->pathmtu)
48*103d750cSMasami Hiramatsu );
49*103d750cSMasami Hiramatsu 
50*103d750cSMasami Hiramatsu TRACE_EVENT(sctp_probe,
51*103d750cSMasami Hiramatsu 
52*103d750cSMasami Hiramatsu 	TP_PROTO(const struct sctp_endpoint *ep,
53*103d750cSMasami Hiramatsu 		 const struct sctp_association *asoc,
54*103d750cSMasami Hiramatsu 		 struct sctp_chunk *chunk),
55*103d750cSMasami Hiramatsu 
56*103d750cSMasami Hiramatsu 	TP_ARGS(ep, asoc, chunk),
57*103d750cSMasami Hiramatsu 
58*103d750cSMasami Hiramatsu 	TP_STRUCT__entry(
59*103d750cSMasami Hiramatsu 		__field(__u64, asoc)
60*103d750cSMasami Hiramatsu 		__field(__u32, mark)
61*103d750cSMasami Hiramatsu 		__field(__u16, bind_port)
62*103d750cSMasami Hiramatsu 		__field(__u16, peer_port)
63*103d750cSMasami Hiramatsu 		__field(__u32, pathmtu)
64*103d750cSMasami Hiramatsu 		__field(__u32, rwnd)
65*103d750cSMasami Hiramatsu 		__field(__u16, unack_data)
66*103d750cSMasami Hiramatsu 	),
67*103d750cSMasami Hiramatsu 
68*103d750cSMasami Hiramatsu 	TP_fast_assign(
69*103d750cSMasami Hiramatsu 		struct sk_buff *skb = chunk->skb;
70*103d750cSMasami Hiramatsu 
71*103d750cSMasami Hiramatsu 		__entry->asoc = (unsigned long)asoc;
72*103d750cSMasami Hiramatsu 		__entry->mark = skb->mark;
73*103d750cSMasami Hiramatsu 		__entry->bind_port = ep->base.bind_addr.port;
74*103d750cSMasami Hiramatsu 		__entry->peer_port = asoc->peer.port;
75*103d750cSMasami Hiramatsu 		__entry->pathmtu = asoc->pathmtu;
76*103d750cSMasami Hiramatsu 		__entry->rwnd = asoc->peer.rwnd;
77*103d750cSMasami Hiramatsu 		__entry->unack_data = asoc->unack_data;
78*103d750cSMasami Hiramatsu 	),
79*103d750cSMasami Hiramatsu 
80*103d750cSMasami Hiramatsu 	TP_printk("asoc=%#llx mark=%#x bind_port=%d peer_port=%d pathmtu=%d "
81*103d750cSMasami Hiramatsu 		  "rwnd=%u unack_data=%d",
82*103d750cSMasami Hiramatsu 		  __entry->asoc, __entry->mark, __entry->bind_port,
83*103d750cSMasami Hiramatsu 		  __entry->peer_port, __entry->pathmtu, __entry->rwnd,
84*103d750cSMasami Hiramatsu 		  __entry->unack_data)
85*103d750cSMasami Hiramatsu );
86*103d750cSMasami Hiramatsu 
87*103d750cSMasami Hiramatsu #endif /* _TRACE_SCTP_H */
88*103d750cSMasami Hiramatsu 
89*103d750cSMasami Hiramatsu /* This part must be outside protection */
90*103d750cSMasami Hiramatsu #include <trace/define_trace.h>
91