It is useful when using dynamic debug (dyndbg) to turn on/off
debug printouts.
In this commit, we provide as much as possible debug information
that we used to troubleshoot issues in our lab.

Signed-off-by: Hoang Le <[email protected]>
---
 net/tipc/bearer.c |  3 +++
 net/tipc/link.c   | 68 ++++++++++++++++++++++++++++++++++-------------
 net/tipc/link.h   |  4 +++
 net/tipc/node.c   | 14 ++++++++--
 net/tipc/socket.c | 34 ++++++++++++++++++++++--
 5 files changed, 100 insertions(+), 23 deletions(-)

diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c
index 91891041e5e1..1ad49f14c129 100644
--- a/net/tipc/bearer.c
+++ b/net/tipc/bearer.c
@@ -607,6 +607,9 @@ static int tipc_l2_device_event(struct notifier_block *nb, 
unsigned long evt,
        if (!b)
                return NOTIFY_DONE;
 
+       pr_debug("Bearer %s got event %lu from dev %s, status %lu, 
carrier:%d\n",
+                b->name, evt, dev->name, b->up, netif_carrier_ok(dev));
+
        switch (evt) {
        case NETDEV_CHANGE:
                if (netif_carrier_ok(dev))
diff --git a/net/tipc/link.c b/net/tipc/link.c
index b1f0bee54eac..25bed78816d0 100644
--- a/net/tipc/link.c
+++ b/net/tipc/link.c
@@ -542,15 +542,16 @@ bool tipc_link_bc_create(struct net *net, u32 ownnode, 
u32 peer,
 int tipc_link_fsm_evt(struct tipc_link *l, int evt)
 {
        int rc = 0;
+       int state = l->state;
 
-       switch (l->state) {
+       switch (state) {
        case LINK_RESETTING:
                switch (evt) {
                case LINK_PEER_RESET_EVT:
-                       l->state = LINK_PEER_RESET;
+                       state = LINK_PEER_RESET;
                        break;
                case LINK_RESET_EVT:
-                       l->state = LINK_RESET;
+                       state = LINK_RESET;
                        break;
                case LINK_FAILURE_EVT:
                case LINK_FAILOVER_BEGIN_EVT:
@@ -565,10 +566,10 @@ int tipc_link_fsm_evt(struct tipc_link *l, int evt)
        case LINK_RESET:
                switch (evt) {
                case LINK_PEER_RESET_EVT:
-                       l->state = LINK_ESTABLISHING;
+                       state = LINK_ESTABLISHING;
                        break;
                case LINK_FAILOVER_BEGIN_EVT:
-                       l->state = LINK_FAILINGOVER;
+                       state = LINK_FAILINGOVER;
                case LINK_FAILURE_EVT:
                case LINK_RESET_EVT:
                case LINK_ESTABLISH_EVT:
@@ -583,7 +584,7 @@ int tipc_link_fsm_evt(struct tipc_link *l, int evt)
        case LINK_PEER_RESET:
                switch (evt) {
                case LINK_RESET_EVT:
-                       l->state = LINK_ESTABLISHING;
+                       state = LINK_ESTABLISHING;
                        break;
                case LINK_PEER_RESET_EVT:
                case LINK_ESTABLISH_EVT:
@@ -600,7 +601,7 @@ int tipc_link_fsm_evt(struct tipc_link *l, int evt)
        case LINK_FAILINGOVER:
                switch (evt) {
                case LINK_FAILOVER_END_EVT:
-                       l->state = LINK_RESET;
+                       state = LINK_RESET;
                        break;
                case LINK_PEER_RESET_EVT:
                case LINK_RESET_EVT:
@@ -617,13 +618,13 @@ int tipc_link_fsm_evt(struct tipc_link *l, int evt)
        case LINK_ESTABLISHING:
                switch (evt) {
                case LINK_ESTABLISH_EVT:
-                       l->state = LINK_ESTABLISHED;
+                       state = LINK_ESTABLISHED;
                        break;
                case LINK_FAILOVER_BEGIN_EVT:
-                       l->state = LINK_FAILINGOVER;
+                       state = LINK_FAILINGOVER;
                        break;
                case LINK_RESET_EVT:
-                       l->state = LINK_RESET;
+                       state = LINK_RESET;
                        break;
                case LINK_FAILURE_EVT:
                case LINK_PEER_RESET_EVT:
@@ -638,21 +639,21 @@ int tipc_link_fsm_evt(struct tipc_link *l, int evt)
        case LINK_ESTABLISHED:
                switch (evt) {
                case LINK_PEER_RESET_EVT:
-                       l->state = LINK_PEER_RESET;
+                       state = LINK_PEER_RESET;
                        rc |= TIPC_LINK_DOWN_EVT;
                        break;
                case LINK_FAILURE_EVT:
-                       l->state = LINK_RESETTING;
+                       state = LINK_RESETTING;
                        rc |= TIPC_LINK_DOWN_EVT;
                        break;
                case LINK_RESET_EVT:
-                       l->state = LINK_RESET;
+                       state = LINK_RESET;
                        break;
                case LINK_ESTABLISH_EVT:
                case LINK_SYNCH_END_EVT:
                        break;
                case LINK_SYNCH_BEGIN_EVT:
-                       l->state = LINK_SYNCHING;
+                       state = LINK_SYNCHING;
                        break;
                case LINK_FAILOVER_BEGIN_EVT:
                case LINK_FAILOVER_END_EVT:
@@ -663,21 +664,21 @@ int tipc_link_fsm_evt(struct tipc_link *l, int evt)
        case LINK_SYNCHING:
                switch (evt) {
                case LINK_PEER_RESET_EVT:
-                       l->state = LINK_PEER_RESET;
+                       state = LINK_PEER_RESET;
                        rc |= TIPC_LINK_DOWN_EVT;
                        break;
                case LINK_FAILURE_EVT:
-                       l->state = LINK_RESETTING;
+                       state = LINK_RESETTING;
                        rc |= TIPC_LINK_DOWN_EVT;
                        break;
                case LINK_RESET_EVT:
-                       l->state = LINK_RESET;
+                       state = LINK_RESET;
                        break;
                case LINK_ESTABLISH_EVT:
                case LINK_SYNCH_BEGIN_EVT:
                        break;
                case LINK_SYNCH_END_EVT:
-                       l->state = LINK_ESTABLISHED;
+                       state = LINK_ESTABLISHED;
                        break;
                case LINK_FAILOVER_BEGIN_EVT:
                case LINK_FAILOVER_END_EVT:
@@ -688,6 +689,9 @@ int tipc_link_fsm_evt(struct tipc_link *l, int evt)
        default:
                pr_err("Unknown FSM state %x in %s\n", l->state, l->name);
        }
+       pr_debug("Link %s change state (0x%x)=>(0x%x), evt 0x%x\n",
+                l->name, l->state, state, evt);
+       l->state = state;
        return rc;
 illegal_evt:
        pr_err("Illegal FSM event %x in state %x on link %s\n",
@@ -1518,8 +1522,13 @@ static int tipc_link_proto_rcv(struct tipc_link *l, 
struct sk_buff *skb,
        hdr = buf_msg(skb);
        data = msg_data(hdr);
 
-       if (!tipc_link_validate_msg(l, hdr))
+       if (!tipc_link_validate_msg(l, hdr)) {
+               pr_debug("Link %s reject msg seqno %d, usr %d, mtype, state %d, 
peer_session %u, session %u, rcv_nxt_state %u\n",
+                        msg_seqno(hdr), msg_user(hdr), mtyp, l->state,
+                        l->peer_session, msg_session(hdr),
+                        l->rcv_nxt_state);
                goto exit;
+       }
 
        switch (mtyp) {
        case RESET_MSG:
@@ -2195,3 +2204,24 @@ void tipc_link_set_abort_limit(struct tipc_link *l, u32 
limit)
 {
        l->abort_limit = limit;
 }
+
+int tipc_link_state(struct tipc_link *l)
+{
+       return l->state;
+}
+
+int tipc_link_peer_session(struct tipc_link *l)
+{
+       return l->peer_session;
+}
+
+u16 tipc_link_rcv_next_state(struct tipc_link *l)
+{
+       return l->rcv_nxt_state;
+}
+
+u16 tipc_link_snd_next_state(struct tipc_link *l)
+{
+       return l->snd_nxt_state;
+}
+
diff --git a/net/tipc/link.h b/net/tipc/link.h
index 7bc494a33fdf..e1d3a334eb7c 100644
--- a/net/tipc/link.h
+++ b/net/tipc/link.h
@@ -144,4 +144,8 @@ int tipc_link_bc_sync_rcv(struct tipc_link *l,   struct 
tipc_msg *hdr,
                          struct sk_buff_head *xmitq);
 int tipc_link_bc_nack_rcv(struct tipc_link *l, struct sk_buff *skb,
                          struct sk_buff_head *xmitq);
+int tipc_link_state(struct tipc_link *l);
+int tipc_link_peer_session(struct tipc_link *l);
+u16 tipc_link_rcv_next_state(struct tipc_link *l);
+u16 tipc_link_snd_next_state(struct tipc_link *l);
 #endif
diff --git a/net/tipc/node.c b/net/tipc/node.c
index 68014f1b6976..69389c67f88a 100644
--- a/net/tipc/node.c
+++ b/net/tipc/node.c
@@ -1222,6 +1222,8 @@ static void tipc_node_fsm_evt(struct tipc_node *n, int 
evt)
                pr_err("Unknown node fsm state %x\n", state);
                break;
        }
+       pr_debug("Node %x change state (0x%x)=>(0x%x), evt 0x%x\n",
+                n->addr, n->state, state, evt);
        n->state = state;
        return;
 
@@ -1567,8 +1569,12 @@ static bool tipc_node_check_state(struct tipc_node *n, 
struct sk_buff *skb,
        l = n->links[bearer_id].link;
        if (!l)
                return false;
-       rcv_nxt = tipc_link_rcv_nxt(l);
 
+       pr_debug("Node %x, nstate:0x%x, link:%s, lstate:0x%x, usr:%d, mtype: 
%d\n",
+                n->addr, state, tipc_link_name(l), tipc_link_state(l),
+                usr, mtyp);
+
+       rcv_nxt = tipc_link_rcv_nxt(l);
 
        if (likely((state == SELF_UP_PEER_UP) && (usr != TUNNEL_PROTOCOL)))
                return true;
@@ -1581,8 +1587,12 @@ 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)) {
+               pr_debug("Reject msg seqno %d, lpeer_session %u, session %u, 
lrcv_nxt_state %u\n",
+                        oseqno, tipc_link_peer_session(l), msg_session(hdr),
+                        tipc_link_rcv_next_state(l));
                return false;
+       }
 
        /* Check and update node accesibility if applicable */
        if (state == SELF_UP_PEER_COMING) {
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index 3f03ddd0e35b..468748a7f3dc 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -262,8 +262,13 @@ static void tsk_rej_rx_queue(struct sock *sk)
 {
        struct sk_buff *skb;
 
-       while ((skb = __skb_dequeue(&sk->sk_receive_queue)))
+       while ((skb = __skb_dequeue(&sk->sk_receive_queue))) {
+               pr_debug("Reject msg seqno %d from node %x, port %u, err 
NO_PORT\n",
+                        msg_seqno(buf_msg(skb)),
+                        msg_prevnode(buf_msg(skb)),
+                        msg_origport(buf_msg(skb)));
                tipc_sk_respond(sk, skb, TIPC_ERR_NO_PORT);
+       }
 }
 
 static bool tipc_sk_connected(struct sock *sk)
@@ -520,6 +525,9 @@ static void __tipc_shutdown(struct socket *sock, int error)
                        tipc_set_sk_state(sk, TIPC_DISCONNECTING);
                        tipc_node_remove_conn(net, dnode, tsk->portid);
                }
+               pr_debug("Reject msg seqno %d from node %x, port %u, err %d\n",
+                        msg_seqno(buf_msg(skb)), msg_prevnode(buf_msg(skb)),
+                        msg_origport(buf_msg(skb)), error);
                tipc_sk_respond(sk, skb, error);
        }
 
@@ -1205,10 +1213,16 @@ static void tipc_sk_conn_proto_rcv(struct tipc_sock 
*tsk, struct sk_buff *skb,
        bool conn_cong;
 
        /* Ignore if connection cannot be validated: */
-       if (!tsk_peer_msg(tsk, hdr))
+       if (!tsk_peer_msg(tsk, hdr)) {
+               pr_debug("Drop mtype %u from node %x, port %u\n", mtyp,
+                        msg_prevnode(hdr), msg_origport(hdr));
                goto exit;
+       }
 
        if (unlikely(msg_errcode(hdr))) {
+               pr_debug("Drop mtype %u from node %x, port %u, err %d\n",
+                        mtyp, msg_prevnode(hdr), msg_origport(hdr),
+                        msg_errcode(hdr));
                tipc_set_sk_state(sk, TIPC_DISCONNECTING);
                tipc_node_remove_conn(sock_net(sk), tsk_peer_node(tsk),
                                      tsk_peer_port(tsk));
@@ -1219,6 +1233,8 @@ static void tipc_sk_conn_proto_rcv(struct tipc_sock *tsk, 
struct sk_buff *skb,
        tsk->probe_unacked = false;
 
        if (mtyp == CONN_PROBE) {
+               pr_debug("Reply PROBE seq %u to node %d, port %d\n",
+                        msg_seqno(hdr), msg_prevnode(hdr), msg_origport(hdr));
                msg_set_type(hdr, CONN_PROBE_REPLY);
                if (tipc_msg_reverse(onode, &skb, TIPC_OK))
                        __skb_queue_tail(xmitq, skb);
@@ -1949,6 +1965,8 @@ static void tipc_sk_proto_rcv(struct sock *sk,
                                      hdr, inputq, xmitq);
                break;
        default:
+               pr_debug("Drop msg, user %d from node %x, port %u\n",
+                        msg_user(hdr), msg_prevnode(hdr), msg_origport(hdr));
                break;
        }
 
@@ -2127,6 +2145,9 @@ static void tipc_sk_filter_rcv(struct sock *sk, struct 
sk_buff *skb,
                }
 
                if (unlikely(err)) {
+                       pr_debug("Reject msg from node %x, port %d, err %d\n",
+                                msg_prevnode(buf_msg(skb)),
+                                msg_origport(buf_msg(skb)), err);
                        tipc_skb_reject(net, err, skb, xmitq);
                        err = TIPC_OK;
                        continue;
@@ -2204,6 +2225,10 @@ static void tipc_sk_enqueue(struct sk_buff_head *inputq, 
struct sock *sk,
                /* Overload => reject message back to sender */
                onode = tipc_own_addr(sock_net(sk));
                atomic_inc(&sk->sk_drops);
+               pr_debug("Reject msg seqno %d from node %d, port %u, err 
OVERLOAD\n",
+                        msg_seqno(buf_msg(skb)),
+                        msg_prevnode(buf_msg(skb)),
+                        msg_origport(buf_msg(skb)));
                if (tipc_msg_reverse(onode, &skb, TIPC_ERR_OVERLOAD))
                        __skb_queue_tail(xmitq, skb);
                break;
@@ -2251,6 +2276,11 @@ void tipc_sk_rcv(struct net *net, struct sk_buff_head 
*inputq)
                if (tipc_msg_lookup_dest(net, skb, &err))
                        goto xmit;
 
+               pr_debug("Reject msg seqno %d from node %x, port %u, err 
NO_PORT\n",
+                        msg_seqno(buf_msg(skb)),
+                        msg_prevnode(buf_msg(skb)),
+                        msg_origport(buf_msg(skb)));
+
                /* Prepare for message rejection */
                if (!tipc_msg_reverse(tipc_own_addr(net), &skb, err))
                        continue;
-- 
2.17.1



_______________________________________________
tipc-discussion mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tipc-discussion

Reply via email to