Skip to content
  • James Chapman's avatar
    l2tp: fix reorder timeout recovery · 38d40b3f
    James Chapman authored
    
    
    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: default avatarJames Chapman <jchapman@katalix.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    38d40b3f