aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/node.c
diff options
context:
space:
mode:
authorJon Paul Maloy <jon.maloy@ericsson.com>2016-04-15 13:33:06 -0400
committerDavid S. Miller <davem@davemloft.net>2016-04-15 16:09:06 -0400
commitde7e07f9ee14f47d05aa43046404c2904f0247dc (patch)
treefc4bf780d2d2b3273d7533deb3d5e08a4ddec6ba /net/tipc/node.c
parent42b18f605feaf7aa1825b35656bb7d6fdc132b45 (diff)
tipc: ensure that first packets on link are sent in order
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>
Diffstat (limited to 'net/tipc/node.c')
-rw-r--r--net/tipc/node.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/net/tipc/node.c b/net/tipc/node.c
index ace178fd3850..b00e12cda66c 100644
--- a/net/tipc/node.c
+++ b/net/tipc/node.c
@@ -581,8 +581,12 @@ static void __tipc_node_link_up(struct tipc_node *n, int bearer_id,
581static void tipc_node_link_up(struct tipc_node *n, int bearer_id, 581static void tipc_node_link_up(struct tipc_node *n, int bearer_id,
582 struct sk_buff_head *xmitq) 582 struct sk_buff_head *xmitq)
583{ 583{
584 struct tipc_media_addr *maddr;
585
584 tipc_node_write_lock(n); 586 tipc_node_write_lock(n);
585 __tipc_node_link_up(n, bearer_id, xmitq); 587 __tipc_node_link_up(n, bearer_id, xmitq);
588 maddr = &n->links[bearer_id].maddr;
589 tipc_bearer_xmit(n->net, bearer_id, xmitq, maddr);
586 tipc_node_write_unlock(n); 590 tipc_node_write_unlock(n);
587} 591}
588 592