tipc: add trace_events for tipc bearer
authorTuong Lien <tuong.t.lien@dektech.com.au>
Wed, 19 Dec 2018 02:18:00 +0000 (09:18 +0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 19 Dec 2018 19:49:25 +0000 (11:49 -0800)
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.

Acked-by: Ying Xue <ying.xue@windriver.com>
Tested-by: Ying Xue <ying.xue@windriver.com>
Acked-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: Tuong Lien <tuong.t.lien@dektech.com.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/tipc/bearer.c
net/tipc/trace.h

index e32294f37c29a418987e6f1f13719644fdb2017d..fb2c0d8f359f604938e198c040c8cd032206b028 100644 (file)
@@ -43,6 +43,7 @@
 #include "bcast.h"
 #include "netlink.h"
 #include "udp_media.h"
+#include "trace.h"
 
 #define MAX_ADDR_STR 60
 
@@ -608,6 +609,7 @@ 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)) {
index 4d05141866aa02880edf765dda0f7c377e0588f1..4d8e00483afc353d45fcac307aeefa603eef50f7 100644 (file)
@@ -113,6 +113,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"     })
+
 extern unsigned long sysctl_tipc_sk_filter[5] __read_mostly;
 
 int tipc_skb_dump(struct sk_buff *skb, bool more, char *buf);
@@ -378,6 +389,38 @@ 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)
+               __field(u8, oper)
+       ),
+
+       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);
+               __entry->oper = netif_oper_up(dev);
+       ),
+
+       TP_printk("%s on: <%s>/<%s> oper: %s carrier: %s bearer: %s\n",
+                 dev_evt_sym(__entry->evt), __get_str(dev_name),
+                 __get_str(b_name), (__entry->oper) ? "up" : "down",
+                 (__entry->carrier) ? "ok" : "notok",
+                 (__entry->b_up) ? "up" : "down")
+);
+
 #endif /* _TIPC_TRACE_H */
 
 /* This part must be outside protection */