summaryrefslogtreecommitdiffstats
path: root/net/tipc
diff options
context:
space:
mode:
authorZhenbo Gao <zhenbo.gao@windriver.com>2018-12-18 17:43:52 +0800
committerDavid S. Miller <davem@davemloft.net>2018-12-18 21:50:48 -0800
commit5679ee784c89793537d233022b55a331a64aed9d (patch)
treea2022268b413b1f80d31dea8846066aa101cca98 /net/tipc
parent935b8a59ac80bf3d3caae6460fb95d028f7c92c8 (diff)
downloadlinux-5679ee784c89793537d233022b55a331a64aed9d.tar.gz
linux-5679ee784c89793537d233022b55a331a64aed9d.tar.bz2
linux-5679ee784c89793537d233022b55a331a64aed9d.zip
tipc: handle broadcast NAME_DISTRIBUTOR packet when receiving it
NAME_DISTRIBUTOR messages are transmitted through unicast link on TIPC 2.0, by contrast, the messages are delivered through broadcast link on TIPC 1.7. But at present, NAME_DISTRIBUTOR messages received by broadcast link cannot be handled in tipc_rcv() until an unicast message arrives, which may lead to a significant delay to update name table. To avoid this delay, we will also deal with broadcast NAME_DISTRIBUTOR message on broadcast receive path. Signed-off-by: Zhenbo Gao <zhenbo.gao@windriver.com> Reviewed-by: Ying Xue <ying.xue@windriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc')
-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 32556f480a60..5980abb7839b 100644
--- a/net/tipc/node.c
+++ b/net/tipc/node.c
@@ -1549,6 +1549,10 @@ static void tipc_node_bc_rcv(struct net *net, struct sk_buff *skb, int bearer_id
if (!skb_queue_empty(&be->inputq1))
tipc_node_mcast_rcv(n);
+ /* Handle NAME_DISTRIBUTOR messages sent from 1.7 nodes */
+ if (!skb_queue_empty(&n->bc_entry.namedq))
+ tipc_named_rcv(net, &n->bc_entry.namedq);
+
/* If reassembly or retransmission failure => reset all links to peer */
if (rc & TIPC_LINK_DOWN_EVT)
tipc_node_reset_links(n);