1
linux/net
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
..
9p net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
802 802: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:17 -04:00
8021q 8021q: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:17 -04:00
appletalk net: Convert all sysctl registrations to register_net_sysctl 2012-04-20 21:22:30 -04:00
atm atm: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:17 -04:00
ax25 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-04-23 23:15:17 -04:00
batman-adv batman-adv: skip the window protection test when the originator has no neighbours 2012-04-18 09:54:02 +02:00
bluetooth bluetooth: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:18 -04:00
bridge bridge: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:17 -04:00
caif net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
can can: fix sparse warning for cgw_list 2012-04-16 21:08:18 +02:00
ceph crush: include header for global symbols 2012-04-27 00:03:34 -04:00
core ethtool: Extend the ethtool API to obtain plugin module eeprom data 2012-05-10 02:22:17 +01:00
dcb net: dcb: add CEE notify calls 2012-04-25 19:47:17 -04:00
dccp net: Convert all sysctl registrations to register_net_sysctl 2012-04-20 21:22:30 -04:00
decnet net decnet: Convert to use register_net_sysctl 2012-04-20 21:22:29 -04:00
dns_resolver net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
dsa dsa: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:19 -04:00
econet sock: Introduce named constants for sk_reuse 2012-04-21 15:52:25 -04:00
ethernet net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
ieee802154 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-05-07 23:35:40 -04:00
ipv4 tcp: Out-line tcp_try_rmem_schedule 2012-05-10 23:24:36 -04:00
ipv6 netfilter: ip6_tables: add flags parameter to ipv6_find_hdr() 2012-05-09 12:53:47 +02:00
ipx net: Convert all sysctl registrations to register_net_sysctl 2012-04-20 21:22:30 -04:00
irda net: Convert all sysctl registrations to register_net_sysctl 2012-04-20 21:22:30 -04:00
iucv Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2012-03-22 18:15:32 -07:00
key net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
l2tp l2tp: fix reorder timeout recovery 2012-05-10 23:27:34 -04:00
lapb Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
llc net: add a limit parameter to sk_add_backlog() 2012-04-23 22:28:28 -04:00
mac80211 mac80211: Convert compare_ether_addr to ether_addr_equal by hand 2012-05-09 20:49:18 -04:00
netfilter netfilter: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:18 -04:00
netlabel netlabel: use GFP flags from caller instead of GFP_ATOMIC 2012-03-22 19:29:57 -04:00
netlink af_netlink: drop_monitor/dropwatch friendly 2012-04-24 00:35:14 -04:00
netrom net: Convert all sysctl registrations to register_net_sysctl 2012-04-20 21:22:30 -04:00
nfc Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2012-04-18 14:27:48 -04:00
openvswitch net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
packet af_packet: packet_getsockopt() cleanup 2012-04-21 16:36:42 -04:00
phonet net: Convert all sysctl registrations to register_net_sysctl 2012-04-20 21:22:30 -04:00
rds sock: Introduce named constants for sk_reuse 2012-04-21 15:52:25 -04:00
rfkill device.h: cleanup users outside of linux/include (C files) 2012-03-11 14:27:37 -04:00
rose net: Convert all sysctl registrations to register_net_sysctl 2012-04-20 21:22:30 -04:00
rxrpc net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
sched Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-05-07 23:35:40 -04:00
sctp net: add a limit parameter to sk_add_backlog() 2012-04-23 22:28:28 -04:00
sunrpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-05-07 23:35:40 -04:00
tipc tipc: compress out gratuitous extra carriage returns 2012-04-30 15:53:56 -04:00
unix net: sock_diag_handler structs can be const 2012-04-25 20:46:59 -04:00
wanrouter
wimax net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
wireless wireless: Convert compare_ether_addr to ether_addr_equal by hand 2012-05-09 20:49:19 -04:00
x25 net: add a limit parameter to sk_add_backlog() 2012-04-23 22:28:28 -04:00
xfrm net: Convert all sysctl registrations to register_net_sysctl 2012-04-20 21:22:30 -04:00
compat.c net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
Kconfig
Makefile
nonet.c
socket.c net: change big iov allocations 2012-04-21 16:24:20 -04:00
sysctl_net.c net: Remove register_net_sysctl_table 2012-04-20 21:22:30 -04:00