linux/net/l2tp
James Chapman 38d40b3f4e l2tp: fix reorder timeout recovery
When L2TP data packet reordering is enabled, packets are held in a
queue while waiting for out-of-sequence packets. If a packet gets
lost, packets will be held until the reorder timeout expires, when we
are supposed to then advance to the sequence number of the next packet
but we don't currently do so. As a result, the data channel is stuck
because we are waiting for a packet that will never arrive - all
packets age out and none are passed.

The fix is to add a flag to the session context, which is set when the
reorder timeout expires and tells the receive code to reset the next
expected sequence number to that of the next packet in the queue.

Tested in a production L2TP network with Starent and Nortel L2TP gear.

Signed-off-by: James Chapman <jchapman@katalix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-05-10 23:27:34 -04:00
..
Kconfig l2tp: Add debugfs files for dumping l2tp debug info 2010-04-03 14:56:07 -07:00
Makefile l2tp: introduce L2TPv3 IP encapsulation support for IPv6 2012-05-01 09:30:55 -04:00
l2tp_core.c l2tp: fix reorder timeout recovery 2012-05-10 23:27:34 -04:00
l2tp_core.h l2tp: fix reorder timeout recovery 2012-05-10 23:27:34 -04:00
l2tp_debugfs.c l2tp: show IPv6 addresses in l2tp debugfs file 2012-05-01 09:30:55 -04:00
l2tp_eth.c net: replace random_ether_addr() with eth_hw_addr_random() 2012-02-15 15:34:16 -05:00
l2tp_ip.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-05-07 23:35:40 -04:00
l2tp_ip6.c l2tp: introduce L2TPv3 IP encapsulation support for IPv6 2012-05-01 09:30:55 -04:00
l2tp_netlink.c l2tp: netlink api for l2tpv3 ipv6 unmanaged tunnels 2012-05-01 09:30:55 -04:00
l2tp_ppp.c l2tp: pppol2tp_connect() handles ipv6 sockaddr variants 2012-05-01 09:30:55 -04:00