]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
l2tp: fix reorder timeout recovery
authorJames Chapman <jchapman@katalix.com>
Wed, 9 May 2012 23:43:08 +0000 (23:43 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 11 May 2012 03:27:34 +0000 (23:27 -0400)
commit38d40b3f4e223336422b7e87cb483e758ef87e3a
tree59a1e49485c3fa596cf7538fd11c1aca589ad5ff
parent1070b1b831404455d79d15fe94ae9216fb5f8ab4
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>
net/l2tp/l2tp_core.c
net/l2tp/l2tp_core.h