aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/l2tp/l2tp_core.c9
-rw-r--r--net/l2tp/l2tp_core.h1
2 files changed, 10 insertions, 0 deletions
diff --git a/net/l2tp/l2tp_core.c b/net/l2tp/l2tp_core.c
index 456b52d8f6d8..d1ab3a236cca 100644
--- a/net/l2tp/l2tp_core.c
+++ b/net/l2tp/l2tp_core.c
@@ -428,6 +428,7 @@ start:
428 session->name, L2TP_SKB_CB(skb)->ns, 428 session->name, L2TP_SKB_CB(skb)->ns,
429 L2TP_SKB_CB(skb)->length, session->nr, 429 L2TP_SKB_CB(skb)->length, session->nr,
430 skb_queue_len(&session->reorder_q)); 430 skb_queue_len(&session->reorder_q));
431 session->reorder_skip = 1;
431 __skb_unlink(skb, &session->reorder_q); 432 __skb_unlink(skb, &session->reorder_q);
432 kfree_skb(skb); 433 kfree_skb(skb);
433 if (session->deref) 434 if (session->deref)
@@ -436,6 +437,14 @@ start:
436 } 437 }
437 438
438 if (L2TP_SKB_CB(skb)->has_seq) { 439 if (L2TP_SKB_CB(skb)->has_seq) {
440 if (session->reorder_skip) {
441 PRINTK(session->debug, L2TP_MSG_SEQ, KERN_DEBUG,
442 "%s: advancing nr to next pkt: %u -> %u",
443 session->name, session->nr,
444 L2TP_SKB_CB(skb)->ns);
445 session->reorder_skip = 0;
446 session->nr = L2TP_SKB_CB(skb)->ns;
447 }
439 if (L2TP_SKB_CB(skb)->ns != session->nr) { 448 if (L2TP_SKB_CB(skb)->ns != session->nr) {
440 PRINTK(session->debug, L2TP_MSG_SEQ, KERN_DEBUG, 449 PRINTK(session->debug, L2TP_MSG_SEQ, KERN_DEBUG,
441 "%s: holding oos pkt %u len %d, " 450 "%s: holding oos pkt %u len %d, "
diff --git a/net/l2tp/l2tp_core.h b/net/l2tp/l2tp_core.h
index 0bf60fc88bb7..90026341a1e5 100644
--- a/net/l2tp/l2tp_core.h
+++ b/net/l2tp/l2tp_core.h
@@ -123,6 +123,7 @@ struct l2tp_session {
123 * categories */ 123 * categories */
124 int reorder_timeout; /* configured reorder timeout 124 int reorder_timeout; /* configured reorder timeout
125 * (in jiffies) */ 125 * (in jiffies) */
126 int reorder_skip; /* set if skip to next nr */
126 int mtu; 127 int mtu;
127 int mru; 128 int mru;
128 enum l2tp_pwtype pwtype; 129 enum l2tp_pwtype pwtype;