The commit adds the new trace_event for TIPC bearer, L2 device event:

trace_tipc_l2_device_event()

Also, it puts the trace at the tipc_l2_device_event() function, then
the device/bearer events and related info can be traced out during
runtime when needed.

Signed-off-by: Tuong Lien <tuong.t.l...@dektech.com.au>
---
 net/tipc/bearer.c |  3 +++
 net/tipc/trace.h  | 39 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+)

diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c
index e65c3a8551e4..85bd24ce0c1e 100644
--- a/net/tipc/bearer.c
+++ b/net/tipc/bearer.c
@@ -43,6 +43,7 @@
 #include "bcast.h"
 #include "netlink.h"
 #include "udp_media.h"
+#include "trace.h"
 
 #define MAX_ADDR_STR 60
 
@@ -607,6 +608,8 @@ static int tipc_l2_device_event(struct notifier_block *nb, 
unsigned long evt,
        if (!b)
                return NOTIFY_DONE;
 
+       trace_tipc_l2_device_event(dev, b, evt);
+
        switch (evt) {
        case NETDEV_CHANGE:
                if (netif_carrier_ok(dev) && netif_oper_up(dev)) {
diff --git a/net/tipc/trace.h b/net/tipc/trace.h
index 7d95d05d597b..e03eb97c7b1b 100644
--- a/net/tipc/trace.h
+++ b/net/tipc/trace.h
@@ -110,6 +110,17 @@ enum {
                        {(0xcbe),       "SYNCH_BEGIN_EVT"               },\
                        {(0xcee),       "SYNCH_END_EVT"                 })
 
+/* Bearer, net device events: */
+#define dev_evt_sym(val)                                                 \
+       __print_symbolic(val,                                             \
+                       {(NETDEV_CHANGE),       "NETDEV_CHANGE"         },\
+                       {(NETDEV_GOING_DOWN),   "NETDEV_GOING_DOWN"     },\
+                       {(NETDEV_UP),           "NETDEV_UP"             },\
+                       {(NETDEV_CHANGEMTU),    "NETDEV_CHANGEMTU"      },\
+                       {(NETDEV_CHANGEADDR),   "NETDEV_CHANGEADDR"     },\
+                       {(NETDEV_UNREGISTER),   "NETDEV_UNREGISTER"     },\
+                       {(NETDEV_CHANGENAME),   "NETDEV_CHANGENAME"     })
+
 int tipc_skb_dump(struct sk_buff *skb, bool more, char *buf);
 int tipc_list_dump(struct sk_buff_head *list, bool more, char *buf);
 int tipc_sk_dump(struct sock *sk, u16 dqueues, char *buf);
@@ -369,6 +380,34 @@ DEFINE_EVENT(tipc_fsm_class, fsm_name, \
 DEFINE_FSM_EVENT(tipc_link_fsm);
 DEFINE_FSM_EVENT(tipc_node_fsm);
 
+TRACE_EVENT(tipc_l2_device_event,
+
+       TP_PROTO(struct net_device *dev, struct tipc_bearer *b,
+                unsigned long evt),
+
+       TP_ARGS(dev, b, evt),
+
+       TP_STRUCT__entry(
+               __string(dev_name, dev->name)
+               __string(b_name, b->name)
+               __field(unsigned long, evt)
+               __field(u8, b_up)
+               __field(u8, carrier)
+       ),
+
+       TP_fast_assign(
+               __assign_str(dev_name, dev->name);
+               __assign_str(b_name, b->name);
+               __entry->evt = evt;
+               __entry->b_up = test_bit(0, &b->up);
+               __entry->carrier = netif_carrier_ok(dev);
+       ),
+
+       TP_printk("%s on: <%s>/<%s> bearer up: %u carrier ok: %u\n",
+                 dev_evt_sym(__entry->evt), __get_str(dev_name),
+                 __get_str(b_name), __entry->b_up, __entry->carrier)
+);
+
 #endif /* _TIPC_TRACE_H */
 
 /* This part must be outside protection */
-- 
2.13.7



_______________________________________________
tipc-discussion mailing list
tipc-discussion@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tipc-discussion

Reply via email to