1 /* SPDX-License-Identifier: GPL-2.0 */
3 #define TRACE_SYSTEM sctp
5 #if !defined(_TRACE_SCTP_H) || defined(TRACE_HEADER_MULTI_READ)
8 #include <net/sctp/structs.h>
9 #include <linux/tracepoint.h>
11 TRACE_EVENT(sctp_probe_path
,
13 TP_PROTO(struct sctp_transport
*sp
,
14 const struct sctp_association
*asoc
),
20 __field(__u32
, primary
)
21 __array(__u8
, ipaddr
, sizeof(union sctp_addr
))
24 __field(__u32
, ssthresh
)
25 __field(__u32
, flight_size
)
26 __field(__u32
, partial_bytes_acked
)
27 __field(__u32
, pathmtu
)
31 __entry
->asoc
= (unsigned long)asoc
;
32 __entry
->primary
= (sp
== asoc
->peer
.primary_path
);
33 memcpy(__entry
->ipaddr
, &sp
->ipaddr
, sizeof(union sctp_addr
));
34 __entry
->state
= sp
->state
;
35 __entry
->cwnd
= sp
->cwnd
;
36 __entry
->ssthresh
= sp
->ssthresh
;
37 __entry
->flight_size
= sp
->flight_size
;
38 __entry
->partial_bytes_acked
= sp
->partial_bytes_acked
;
39 __entry
->pathmtu
= sp
->pathmtu
;
42 TP_printk("asoc=%#llx%s ipaddr=%pISpc state=%u cwnd=%u ssthresh=%u "
43 "flight_size=%u partial_bytes_acked=%u pathmtu=%u",
44 __entry
->asoc
, __entry
->primary
? "(*)" : "",
45 __entry
->ipaddr
, __entry
->state
, __entry
->cwnd
,
46 __entry
->ssthresh
, __entry
->flight_size
,
47 __entry
->partial_bytes_acked
, __entry
->pathmtu
)
50 TRACE_EVENT(sctp_probe
,
52 TP_PROTO(const struct sctp_endpoint
*ep
,
53 const struct sctp_association
*asoc
,
54 struct sctp_chunk
*chunk
),
56 TP_ARGS(ep
, asoc
, chunk
),
61 __field(__u16
, bind_port
)
62 __field(__u16
, peer_port
)
63 __field(__u32
, pathmtu
)
65 __field(__u16
, unack_data
)
69 struct sk_buff
*skb
= chunk
->skb
;
71 __entry
->asoc
= (unsigned long)asoc
;
72 __entry
->mark
= skb
->mark
;
73 __entry
->bind_port
= ep
->base
.bind_addr
.port
;
74 __entry
->peer_port
= asoc
->peer
.port
;
75 __entry
->pathmtu
= asoc
->pathmtu
;
76 __entry
->rwnd
= asoc
->peer
.rwnd
;
77 __entry
->unack_data
= asoc
->unack_data
;
79 if (trace_sctp_probe_path_enabled()) {
80 struct sctp_transport
*sp
;
82 list_for_each_entry(sp
, &asoc
->peer
.transport_addr_list
,
84 trace_sctp_probe_path(sp
, asoc
);
89 TP_printk("asoc=%#llx mark=%#x bind_port=%d peer_port=%d pathmtu=%d "
90 "rwnd=%u unack_data=%d",
91 __entry
->asoc
, __entry
->mark
, __entry
->bind_port
,
92 __entry
->peer_port
, __entry
->pathmtu
, __entry
->rwnd
,
96 #endif /* _TRACE_SCTP_H */
98 /* This part must be outside protection */
99 #include <trace/define_trace.h>