Skip to content

Commit dfddb54

Browse files
Mani-Sadhasivamdavem330
authored andcommitted
net: qrtr: Add tracepoint support
Add tracepoint support for QRTR with NS as the first candidate. Later on this can be extended to core QRTR and transport drivers. The trace_printk() used in NS has been replaced by tracepoints. Signed-off-by: Manivannan Sadhasivam <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 540bde5 commit dfddb54

File tree

2 files changed

+126
-9
lines changed

2 files changed

+126
-9
lines changed

include/trace/events/qrtr.h

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
/* SPDX-License-Identifier: GPL-2.0 */
2+
#undef TRACE_SYSTEM
3+
#define TRACE_SYSTEM qrtr
4+
5+
#if !defined(_TRACE_QRTR_H) || defined(TRACE_HEADER_MULTI_READ)
6+
#define _TRACE_QRTR_H
7+
8+
#include <linux/qrtr.h>
9+
#include <linux/tracepoint.h>
10+
11+
TRACE_EVENT(qrtr_ns_service_announce_new,
12+
13+
TP_PROTO(__le32 service, __le32 instance, __le32 node, __le32 port),
14+
15+
TP_ARGS(service, instance, node, port),
16+
17+
TP_STRUCT__entry(
18+
__field(__le32, service)
19+
__field(__le32, instance)
20+
__field(__le32, node)
21+
__field(__le32, port)
22+
),
23+
24+
TP_fast_assign(
25+
__entry->service = service;
26+
__entry->instance = instance;
27+
__entry->node = node;
28+
__entry->port = port;
29+
),
30+
31+
TP_printk("advertising new server [%d:%x]@[%d:%d]",
32+
__entry->service, __entry->instance, __entry->node,
33+
__entry->port
34+
)
35+
);
36+
37+
TRACE_EVENT(qrtr_ns_service_announce_del,
38+
39+
TP_PROTO(__le32 service, __le32 instance, __le32 node, __le32 port),
40+
41+
TP_ARGS(service, instance, node, port),
42+
43+
TP_STRUCT__entry(
44+
__field(__le32, service)
45+
__field(__le32, instance)
46+
__field(__le32, node)
47+
__field(__le32, port)
48+
),
49+
50+
TP_fast_assign(
51+
__entry->service = service;
52+
__entry->instance = instance;
53+
__entry->node = node;
54+
__entry->port = port;
55+
),
56+
57+
TP_printk("advertising removal of server [%d:%x]@[%d:%d]",
58+
__entry->service, __entry->instance, __entry->node,
59+
__entry->port
60+
)
61+
);
62+
63+
TRACE_EVENT(qrtr_ns_server_add,
64+
65+
TP_PROTO(__le32 service, __le32 instance, __le32 node, __le32 port),
66+
67+
TP_ARGS(service, instance, node, port),
68+
69+
TP_STRUCT__entry(
70+
__field(__le32, service)
71+
__field(__le32, instance)
72+
__field(__le32, node)
73+
__field(__le32, port)
74+
),
75+
76+
TP_fast_assign(
77+
__entry->service = service;
78+
__entry->instance = instance;
79+
__entry->node = node;
80+
__entry->port = port;
81+
),
82+
83+
TP_printk("add server [%d:%x]@[%d:%d]",
84+
__entry->service, __entry->instance, __entry->node,
85+
__entry->port
86+
)
87+
);
88+
89+
TRACE_EVENT(qrtr_ns_message,
90+
91+
TP_PROTO(const char * const ctrl_pkt_str, __u32 sq_node, __u32 sq_port),
92+
93+
TP_ARGS(ctrl_pkt_str, sq_node, sq_port),
94+
95+
TP_STRUCT__entry(
96+
__string(ctrl_pkt_str, ctrl_pkt_str)
97+
__field(__u32, sq_node)
98+
__field(__u32, sq_port)
99+
),
100+
101+
TP_fast_assign(
102+
__assign_str(ctrl_pkt_str, ctrl_pkt_str);
103+
__entry->sq_node = sq_node;
104+
__entry->sq_port = sq_port;
105+
),
106+
107+
TP_printk("%s from %d:%d",
108+
__get_str(ctrl_pkt_str), __entry->sq_node, __entry->sq_port
109+
)
110+
);
111+
112+
#endif /* _TRACE_QRTR_H */
113+
114+
/* This part must be outside protection */
115+
#include <trace/define_trace.h>

net/qrtr/ns.c

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212

1313
#include "qrtr.h"
1414

15+
#define CREATE_TRACE_POINTS
16+
#include <trace/events/qrtr.h>
17+
1518
static RADIX_TREE(nodes, GFP_KERNEL);
1619

1720
static struct {
@@ -105,8 +108,8 @@ static int service_announce_new(struct sockaddr_qrtr *dest,
105108
struct msghdr msg = { };
106109
struct kvec iv;
107110

108-
trace_printk("advertising new server [%d:%x]@[%d:%d]\n",
109-
srv->service, srv->instance, srv->node, srv->port);
111+
trace_qrtr_ns_service_announce_new(srv->service, srv->instance,
112+
srv->node, srv->port);
110113

111114
iv.iov_base = &pkt;
112115
iv.iov_len = sizeof(pkt);
@@ -132,8 +135,8 @@ static int service_announce_del(struct sockaddr_qrtr *dest,
132135
struct kvec iv;
133136
int ret;
134137

135-
trace_printk("advertising removal of server [%d:%x]@[%d:%d]\n",
136-
srv->service, srv->instance, srv->node, srv->port);
138+
trace_qrtr_ns_service_announce_del(srv->service, srv->instance,
139+
srv->node, srv->port);
137140

138141
iv.iov_base = &pkt;
139142
iv.iov_len = sizeof(pkt);
@@ -244,8 +247,8 @@ static struct qrtr_server *server_add(unsigned int service,
244247

245248
radix_tree_insert(&node->servers, port, srv);
246249

247-
trace_printk("add server [%d:%x]@[%d:%d]\n", srv->service,
248-
srv->instance, srv->node, srv->port);
250+
trace_qrtr_ns_server_add(srv->service, srv->instance,
251+
srv->node, srv->port);
249252

250253
return srv;
251254

@@ -633,9 +636,8 @@ static void qrtr_ns_worker(struct work_struct *work)
633636
cmd = le32_to_cpu(pkt->cmd);
634637
if (cmd < ARRAY_SIZE(qrtr_ctrl_pkt_strings) &&
635638
qrtr_ctrl_pkt_strings[cmd])
636-
trace_printk("%s from %d:%d\n",
637-
qrtr_ctrl_pkt_strings[cmd], sq.sq_node,
638-
sq.sq_port);
639+
trace_qrtr_ns_message(qrtr_ctrl_pkt_strings[cmd],
640+
sq.sq_node, sq.sq_port);
639641

640642
ret = 0;
641643
switch (cmd) {

0 commit comments

Comments
 (0)