tipc: ensure that first packets on link are sent in order
authorJon Paul Maloy <jon.maloy@ericsson.com>
Fri, 15 Apr 2016 17:33:06 +0000 (13:33 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 15 Apr 2016 20:09:06 +0000 (16:09 -0400)
In some link establishment scenarios we see that packet #2 may be sent
out before packet #1, forcing the receiver to demand retransmission of
the missing packet. This is harmless, but may cause confusion among
people tracing the packet flow.

Since this is extremely easy to fix, we do so by adding en extra send
call to the bearer immediately after the link has come up.

Acked-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/tipc/node.c

index ace178fd385038523bc498222e9497245ccae4b0..b00e12cda66c6c0f62a850eec1c9789ff9cfa14f 100644 (file)
@@ -581,8 +581,12 @@ static void __tipc_node_link_up(struct tipc_node *n, int bearer_id,
 static void tipc_node_link_up(struct tipc_node *n, int bearer_id,
                              struct sk_buff_head *xmitq)
 {
+       struct tipc_media_addr *maddr;
+
        tipc_node_write_lock(n);
        __tipc_node_link_up(n, bearer_id, xmitq);
+       maddr = &n->links[bearer_id].maddr;
+       tipc_bearer_xmit(n->net, bearer_id, xmitq, maddr);
        tipc_node_write_unlock(n);
 }