mirror of
https://git.yoctoproject.org/meta-ti
synced 2026-07-16 14:27:48 +00:00
07e8c30da9
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
65 lines
2.4 KiB
Diff
65 lines
2.4 KiB
Diff
From 3b4878d988f13c50a8a6d68e9359eb28cc432a4f Mon Sep 17 00:00:00 2001
|
|
From: stephen hemminger <shemminger@vyatta.com>
|
|
Date: Mon, 20 Dec 2010 17:58:33 +0000
|
|
Subject: [PATCH 15/65] ppp: allow disabling multilink protocol ID compression
|
|
|
|
Linux would not connect to other router running old version Cisco IOS (12.0).
|
|
This is most likely a bug in that version of IOS, since it is fixed
|
|
in later versions. As a workaround this patch allows a module parameter
|
|
to be set to disable compressing the protocol ID.
|
|
|
|
See: https://bugzilla.vyatta.com/show_bug.cgi?id=3979
|
|
|
|
RFC 1990 allows an implementation to formulate MP fragments as if protocol
|
|
compression had been negotiated. This allows us to always send compressed
|
|
protocol IDs. But some implementations don't accept MP fragments with
|
|
compressed protocol IDs. This parameter allows us to interoperate with
|
|
them. The default value of the configurable parameter is the same as the
|
|
current behavior: protocol compression is enabled. If protocol compression
|
|
is disabled we will not send compressed protocol IDs.
|
|
|
|
This is based on an earlier patch by Bob Gilligan (using a sysctl).
|
|
Module parameter is writable to allow for enabling even if ppp
|
|
is already loaded for other uses.
|
|
|
|
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
|
|
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
|
|
Acked-by: Paul Mackerras <paulus@samba.org>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/ppp_generic.c | 9 +++++++--
|
|
1 files changed, 7 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c
|
|
index 3965997..89294b4 100644
|
|
--- a/drivers/net/ppp_generic.c
|
|
+++ b/drivers/net/ppp_generic.c
|
|
@@ -1285,6 +1285,11 @@ ppp_push(struct ppp *ppp)
|
|
}
|
|
|
|
#ifdef CONFIG_PPP_MULTILINK
|
|
+static bool mp_protocol_compress __read_mostly = true;
|
|
+module_param(mp_protocol_compress, bool, S_IRUGO | S_IWUSR);
|
|
+MODULE_PARM_DESC(mp_protocol_compress,
|
|
+ "compress protocol id in multilink fragments");
|
|
+
|
|
/*
|
|
* Divide a packet to be transmitted into fragments and
|
|
* send them out the individual links.
|
|
@@ -1347,10 +1352,10 @@ static int ppp_mp_explode(struct ppp *ppp, struct sk_buff *skb)
|
|
if (nfree == 0 || nfree < navail / 2)
|
|
return 0; /* can't take now, leave it in xmit_pending */
|
|
|
|
- /* Do protocol field compression (XXX this should be optional) */
|
|
+ /* Do protocol field compression */
|
|
p = skb->data;
|
|
len = skb->len;
|
|
- if (*p == 0) {
|
|
+ if (*p == 0 && mp_protocol_compress) {
|
|
++p;
|
|
--len;
|
|
}
|
|
--
|
|
1.6.6.1
|
|
|