diff options
Diffstat (limited to 'extras/recipes-kernel/linux/linux-omap/linus/0015-ppp-allow-disabling-multilink-protocol-ID-compressio.patch')
-rw-r--r-- | extras/recipes-kernel/linux/linux-omap/linus/0015-ppp-allow-disabling-multilink-protocol-ID-compressio.patch | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/extras/recipes-kernel/linux/linux-omap/linus/0015-ppp-allow-disabling-multilink-protocol-ID-compressio.patch b/extras/recipes-kernel/linux/linux-omap/linus/0015-ppp-allow-disabling-multilink-protocol-ID-compressio.patch new file mode 100644 index 00000000..b06d2c56 --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap/linus/0015-ppp-allow-disabling-multilink-protocol-ID-compressio.patch @@ -0,0 +1,64 @@ +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 + |