]> git.pld-linux.org Git - packages/kernel.git/blame - linux-2.4.18-mppe-pad.patch
- obsolete
[packages/kernel.git] / linux-2.4.18-mppe-pad.patch
CommitLineData
70c2972b
SZ
1--- linux/drivers/net/ppp_generic.c.orig Mon Feb 25 11:37:59 2002
2+++ linux/drivers/net/ppp_generic.c Mon Mar 25 10:19:53 2002
3@@ -1006,8 +1006,15 @@
4 /* try to do packet compression */
5 if ((ppp->xstate & SC_COMP_RUN) && ppp->xc_state != 0
6 && proto != PPP_LCP && proto != PPP_CCP) {
7- new_skb = alloc_skb(ppp->dev->mtu + ppp->dev->hard_header_len,
8- GFP_ATOMIC);
9+ int new_skb_size = ppp->dev->mtu + ppp->dev->hard_header_len;
10+ int compressor_skb_size = ppp->dev->mtu + PPP_HDRLEN;
11+
12+ if (ppp->xcomp->compress_proto == CI_MPPE) {
13+ /* CCP [must have] reduced MTU by MPPE_PAD. */
14+ new_skb_size += MPPE_PAD;
15+ compressor_skb_size += MPPE_PAD;
16+ }
17+ new_skb = alloc_skb(new_skb_size, GFP_ATOMIC);
18 if (new_skb == 0) {
19 printk(KERN_ERR "PPP: no memory (comp pkt)\n");
20 goto drop;
21@@ -1019,15 +1026,27 @@
22 /* compressor still expects A/C bytes in hdr */
23 len = ppp->xcomp->compress(ppp->xc_state, skb->data - 2,
24 new_skb->data, skb->len + 2,
25- ppp->dev->mtu + PPP_HDRLEN);
26+ compressor_skb_size);
27 if (len > 0 && (ppp->flags & SC_CCP_UP)) {
28 kfree_skb(skb);
29 skb = new_skb;
30 skb_put(skb, len);
31 skb_pull(skb, 2); /* pull off A/C bytes */
32- } else {
33+ } else if (len == 0) {
34 /* didn't compress, or CCP not up yet */
35 kfree_skb(new_skb);
36+ } else {
37+ /*
38+ * (len < 0)
39+ * MPPE requires that we do not send unencrypted
40+ * frames. The compressor will return -1 if we
41+ * should drop the frame. We cannot simply test
42+ * the compress_proto because MPPE and MPPC share
43+ * the same number.
44+ */
45+ printk(KERN_ERR "ppp: compressor dropped pkt\n");
46+ kfree_skb(new_skb);
47+ goto drop;
48 }
49 }
50
51@@ -1515,7 +1534,7 @@
52 int len;
53
54 if (proto == PPP_COMP) {
55- ns = dev_alloc_skb(ppp->mru + PPP_HDRLEN);
56+ ns = dev_alloc_skb(ppp->mru + 128 + PPP_HDRLEN);
57 if (ns == 0) {
58 printk(KERN_ERR "ppp_decompress_frame: no memory\n");
59 goto err;
This page took 0.197211 seconds and 4 git commands to generate.