linux/net/tipc
Parthasarathy Bhuvaragan d2f394dc48 tipc: fix random link resets while adding a second bearer
In a dual bearer configuration, if the second tipc link becomes
active while the first link still has pending nametable "bulk"
updates, it randomly leads to reset of the second link.

When a link is established, the function named_distribute(),
fills the skb based on node mtu (allows room for TUNNEL_PROTOCOL)
with NAME_DISTRIBUTOR message for each PUBLICATION.
However, the function named_distribute() allocates the buffer by
increasing the node mtu by INT_H_SIZE (to insert NAME_DISTRIBUTOR).
This consumes the space allocated for TUNNEL_PROTOCOL.

When establishing the second link, the link shall tunnel all the
messages in the first link queue including the "bulk" update.
As size of the NAME_DISTRIBUTOR messages while tunnelling, exceeds
the link mtu the transmission fails (-EMSGSIZE).

Thus, the synch point based on the message count of the tunnel
packets is never reached leading to link timeout.

In this commit, we adjust the size of name distributor message so that
they can be tunnelled.

Reviewed-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-09-01 10:12:26 -07:00
..
addr.c
addr.h tipc: introduce constants for tipc address validation 2016-07-26 14:26:42 -07:00
bcast.c
bcast.h
bearer.c tipc: add a function to get the bearer name 2016-07-26 14:26:42 -07:00
bearer.h tipc: add a function to get the bearer name 2016-07-26 14:26:42 -07:00
core.c tipc: add neighbor monitoring framework 2016-06-15 14:06:28 -07:00
core.h tipc: add neighbor monitoring framework 2016-06-15 14:06:28 -07:00
discover.c tipc: honor msg2addr return value 2016-06-29 05:17:37 -04:00
discover.h
eth_media.c
ib_media.c
Kconfig
link.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-07-24 00:53:32 -04:00
link.h
Makefile tipc: add neighbor monitoring framework 2016-06-15 14:06:28 -07:00
monitor.c tipc: fix variable dereference before NULL check 2016-08-10 17:56:52 -07:00
monitor.h tipc: dump monitor attributes 2016-07-26 14:26:42 -07:00
msg.c tipc: unclone unbundled buffers before forwarding 2016-06-22 16:33:35 -04:00
msg.h tipc: unclone unbundled buffers before forwarding 2016-06-22 16:33:35 -04:00
name_distr.c tipc: fix random link resets while adding a second bearer 2016-09-01 10:12:26 -07:00
name_distr.h
name_table.c
name_table.h
net.c
net.h
netlink_compat.c tipc: fix nl compat regression for link statistics 2016-07-01 16:47:38 -04:00
netlink.c tipc: dump monitor attributes 2016-07-26 14:26:42 -07:00
netlink.h tipc: make cluster size threshold for monitoring configurable 2016-07-26 14:26:42 -07:00
node.c tipc: dump monitor attributes 2016-07-26 14:26:42 -07:00
node.h tipc: dump monitor attributes 2016-07-26 14:26:42 -07:00
server.c tipc: Use kmemdup instead of kmalloc and memcpy 2016-06-27 09:56:58 -04:00
server.h
socket.c tipc: fix NULL pointer dereference in shutdown() 2016-08-15 13:55:36 -07:00
socket.h
subscr.c
subscr.h
sysctl.c
udp_media.c tipc: fix the error handling in tipc_udp_enable() 2016-08-25 16:32:34 -07:00