mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 07:12:09 +00:00
tipc: add trace_events for tipc link
The commit adds the new trace_events for TIPC link object: trace_tipc_link_timeout() trace_tipc_link_fsm() trace_tipc_link_reset() trace_tipc_link_too_silent() trace_tipc_link_retrans() trace_tipc_link_bc_ack() trace_tipc_link_conges() And the traces for PROTOCOL messages at building and receiving: trace_tipc_proto_build() trace_tipc_proto_rcv() Note: a) The 'tipc_link_too_silent' event will only happen when the 'silent_intv_cnt' is about to reach the 'abort_limit' value (and the event is enabled). The benefit for this kind of event is that we can get an early indication about TIPC link loss issue due to timeout, then can do some necessary actions for troubleshooting. For example: To trigger the 'tipc_proto_rcv' when the 'too_silent' event occurs: echo 'enable_event:tipc:tipc_proto_rcv' > \ events/tipc/tipc_link_too_silent/trigger And disable it when TIPC link is reset: echo 'disable_event:tipc:tipc_proto_rcv' > \ events/tipc/tipc_link_reset/trigger b) The 'tipc_link_retrans' or 'tipc_link_bc_ack' event is useful to trace TIPC retransmission issues. In addition, the commit adds the 'trace_tipc_list/link_dump()' at the 'retransmission failure' case. Then, if the issue occurs, the link 'transmq' along with the link data can be dumped for post-analysis. These dump events should be enabled by default since it will only take effect when the failure happens. The same approach is also applied for the faulty case that the validation of protocol message is failed. 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>
This commit is contained in:
parent
b4b9771bcb
commit
26574db0c1
4 changed files with 164 additions and 2 deletions
|
@ -784,6 +784,7 @@ static void __tipc_node_link_down(struct tipc_node *n, int *bearer_id,
|
|||
if (tipc_link_peer_is_down(l))
|
||||
tipc_node_fsm_evt(n, PEER_LOST_CONTACT_EVT);
|
||||
tipc_node_fsm_evt(n, SELF_LOST_CONTACT_EVT);
|
||||
trace_tipc_link_reset(l, TIPC_DUMP_ALL, "link down!");
|
||||
tipc_link_fsm_evt(l, LINK_RESET_EVT);
|
||||
tipc_link_reset(l);
|
||||
tipc_link_build_reset_msg(l, xmitq);
|
||||
|
@ -801,6 +802,7 @@ static void __tipc_node_link_down(struct tipc_node *n, int *bearer_id,
|
|||
tipc_node_fsm_evt(n, NODE_SYNCH_END_EVT);
|
||||
n->sync_point = tipc_link_rcv_nxt(tnl) + (U16_MAX / 2 - 1);
|
||||
tipc_link_tnl_prepare(l, tnl, FAILOVER_MSG, xmitq);
|
||||
trace_tipc_link_reset(l, TIPC_DUMP_ALL, "link down -> failover!");
|
||||
tipc_link_reset(l);
|
||||
tipc_link_fsm_evt(l, LINK_RESET_EVT);
|
||||
tipc_link_fsm_evt(l, LINK_FAILOVER_BEGIN_EVT);
|
||||
|
@ -1022,6 +1024,7 @@ void tipc_node_check_dest(struct net *net, u32 addr,
|
|||
*respond = false;
|
||||
goto exit;
|
||||
}
|
||||
trace_tipc_link_reset(l, TIPC_DUMP_ALL, "link created!");
|
||||
tipc_link_reset(l);
|
||||
tipc_link_fsm_evt(l, LINK_RESET_EVT);
|
||||
if (n->state == NODE_FAILINGOVER)
|
||||
|
@ -1599,8 +1602,11 @@ static bool tipc_node_check_state(struct tipc_node *n, struct sk_buff *skb,
|
|||
}
|
||||
}
|
||||
|
||||
if (!tipc_link_validate_msg(l, hdr))
|
||||
if (!tipc_link_validate_msg(l, hdr)) {
|
||||
trace_tipc_skb_dump(skb, false, "PROTO invalid (2)!");
|
||||
trace_tipc_link_dump(l, TIPC_DUMP_NONE, "PROTO invalid (2)!");
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Check and update node accesibility if applicable */
|
||||
if (state == SELF_UP_PEER_COMING) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue