linux-stable/net/tipc
Jon Paul Maloy f006c9c70f tipc: change reception of tunnelled failover packets
When a link is reset, and there is a redundant link available, all
sender sockets will steer their subsequent traffic through the
remaining link. In order to guarantee preserved packet order and
cardinality during the transition, we tunnel the failing link's send
queue through the remaining link before we allow any sockets to use it.

In this commit, we change the algorithm for receiving failover
("ORIGINAL_MSG") packets in tipc_link_tunnel_rcv(), at the same time
delegating it to a new subfuncton, tipc_link_failover_rcv(). Instead
of directly returning an extracted inner packet to the packet reception
loop in tipc_rcv(), we first check if it is a message fragment, in which
case we append it to the reset link's fragment chain. If the fragment
chain is complete, we return the whole chain instead of the individual
buffer, eliminating any need for the tipc_rcv() loop to do reassembly of
tunneled packets.

This change makes it possible to further simplify tipc_link_tunnel_rcv(),
as well as the calling tipc_rcv() loop. We will do that in later
commits. It also makes it possible to identify a single spot in the code
where we can tell that a failover procedure is finished, something that
is useful when we are deleting links after a failover. This will also
be done in a later commit.

Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Reviewed-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-02-13 17:57:06 -05:00
..
addr.c
addr.h tipc: explicitly include core.h in addr.h 2014-02-13 17:49:13 -05:00
bcast.c tipc: stricter behavior of message reassembly function 2014-02-13 17:57:05 -05:00
bcast.h tipc: cosmetic realignment of function arguments 2013-06-17 15:53:01 -07:00
bearer.c tipc: remove 'links' list from tipc_bearer struct 2014-02-13 17:57:05 -05:00
bearer.h tipc: remove 'links' list from tipc_bearer struct 2014-02-13 17:57:05 -05:00
config.c tipc: convert config_lock from spinlock to mutex 2013-06-17 15:53:01 -07:00
config.h
core.c tipc: remove 'links' list from tipc_bearer struct 2014-02-13 17:57:05 -05:00
core.h tipc: Use <linux/uaccess.h> instead of <asm/uaccess.h> 2013-12-16 12:48:35 -05:00
discover.c tipc: introduce new spinlock to protect struct link_req 2014-01-07 18:44:25 -05:00
discover.h
eth_media.c tipc: eliminate code duplication in media layer 2013-12-11 00:17:43 -05:00
handler.c tipc: protect handler_enabled variable with qitem_lock spin lock 2013-12-10 22:35:49 -05:00
ib_media.c tipc: eliminate code duplication in media layer 2013-12-11 00:17:43 -05:00
Kconfig tipc: add InfiniBand media type 2013-04-17 14:18:33 -04:00
link.c tipc: change reception of tunnelled failover packets 2014-02-13 17:57:06 -05:00
link.h tipc: remove 'links' list from tipc_bearer struct 2014-02-13 17:57:05 -05:00
log.c
Makefile tipc: introduce new TIPC server infrastructure 2013-06-17 15:53:00 -07:00
msg.c tipc: remove iovec length parameter from all sending functions 2013-10-18 13:20:42 -04:00
msg.h tipc: message reassembly using fragment chain 2013-11-07 18:30:11 -05:00
name_distr.c tipc: eliminate an unnecessary cast of node variable 2012-11-22 14:33:28 -05:00
name_distr.h
name_table.c tipc: remove unnecessary variables and conditions 2013-12-16 12:48:35 -05:00
name_table.h tipc: cosmetic realignment of function arguments 2013-06-17 15:53:01 -07:00
net.c
net.h
netlink.c genetlink: only pass array to genl_register_family_with_ops() 2013-11-19 16:39:05 -05:00
node.c tipc: rename functions related to link failover and improve comments 2014-01-07 18:44:25 -05:00
node.h tipc: remove 'has_redundant_link' flag from STATE link protocol messages 2014-01-07 18:44:25 -05:00
node_subscr.c tipc: cosmetic realignment of function arguments 2013-06-17 15:53:01 -07:00
node_subscr.h
port.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-01-06 17:37:45 -05:00
port.h tipc: fix deadlock during socket release 2013-12-29 22:24:07 -05:00
ref.c
ref.h
server.c tipc: spelling fixes 2014-01-14 18:18:22 -08:00
server.h tipc: introduce new TIPC server infrastructure 2013-06-17 15:53:00 -07:00
socket.c net: add build-time checks for msg->msg_name size 2014-01-18 23:04:16 -08:00
subscr.c tipc: spelling fixes 2014-01-14 18:18:22 -08:00
subscr.h tipc: cosmetic realignment of function arguments 2013-06-17 15:53:01 -07:00
sysctl.c tipc: change socket buffer overflow control to respect sk_rcvbuf 2013-06-17 15:53:00 -07:00