Skip to content

Commit

Permalink
tipc: eliminate checking netns if node established
Browse files Browse the repository at this point in the history
Currently, we scan over all network namespaces at each received
discovery message in order to check if the sending peer might be
present in a host local namespaces.

This is unnecessary since we can assume that a peer will not change its
location during an established session.

We now improve the condition for this testing so that we don't perform
any redundant scans.

Fixes: f73b128 ("tipc: improve throughput between nodes in netns")
Acked-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: Hoang Le <hoang.h.le@dektech.com.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Hoang Le authored and David S. Miller committed Nov 8, 2019
1 parent f8cc62c commit d408bef
Showing 1 changed file with 5 additions and 9 deletions.
14 changes: 5 additions & 9 deletions net/tipc/node.c
Original file line number Diff line number Diff line change
Expand Up @@ -472,10 +472,6 @@ static struct tipc_node *tipc_node_create(struct net *net, u32 addr,
tipc_bc_sndlink(net),
&n->bc_entry.link)) {
pr_warn("Broadcast rcv link creation failed, no memory\n");
if (n->peer_net) {
n->peer_net = NULL;
n->peer_hash_mix = 0;
}
kfree(n);
n = NULL;
goto exit;
Expand Down Expand Up @@ -1073,6 +1069,9 @@ void tipc_node_check_dest(struct net *net, u32 addr,
if (sign_match && addr_match && link_up) {
/* All is fine. Do nothing. */
reset = false;
/* Peer node is not a container/local namespace */
if (!n->peer_hash_mix)
n->peer_hash_mix = hash_mixes;
} else if (sign_match && addr_match && !link_up) {
/* Respond. The link will come up in due time */
*respond = true;
Expand Down Expand Up @@ -1398,11 +1397,8 @@ static void node_lost_contact(struct tipc_node *n,

/* Notify publications from this node */
n->action_flags |= TIPC_NOTIFY_NODE_DOWN;

if (n->peer_net) {
n->peer_net = NULL;
n->peer_hash_mix = 0;
}
n->peer_net = NULL;
n->peer_hash_mix = 0;
/* Notify sockets connected to node */
list_for_each_entry_safe(conn, safe, conns, list) {
skb = tipc_msg_create(TIPC_CRITICAL_IMPORTANCE, TIPC_CONN_MSG,
Expand Down

0 comments on commit d408bef

Please sign in to comment.