patch-2.0.34 linux/drivers/isdn/isdn_net.c

Next file: linux/drivers/isdn/sc/includes.h
Previous file: linux/drivers/isdn/avmb1/capiutil.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.0.33/linux/drivers/isdn/isdn_net.c linux/drivers/isdn/isdn_net.c
@@ -208,9 +208,7 @@
 #include <net/icmp.h>
 #include "isdn_common.h"
 #include "isdn_net.h"
-#ifdef CONFIG_ISDN_PPP
 #include "isdn_ppp.h"
-#endif
 
 /* Prototypes */
 
@@ -822,6 +820,9 @@
 
 	addinfo[0] = '\0';
 	switch (lp->p_encap) {
+                case ISDN_NET_ENCAP_SYNCPPP:
+                        p = &buf[IPPP_MAX_HEADER];
+                        break;
 		case ISDN_NET_ENCAP_IPTYP:
 			proto = ntohs(*(unsigned short *) &buf[0]);
 			p = &buf[2];
@@ -1344,6 +1345,7 @@
 	isdn_net_local *lp = dev->priv;
 	ushort len = 0;
 
+	skb->mac.raw = skb->data;
 	switch (lp->p_encap) {
 		case ISDN_NET_ENCAP_ETHER:
 			len = my_eth_header(skb, dev, type, daddr, saddr, plen);
@@ -2256,6 +2258,7 @@
 			p->local.chargeint = cfg->chargeint * HZ;
 		}
 		if (cfg->p_encap != p->local.p_encap) {
+			/* FIXME: What if there are alias devices too? */
 			if (cfg->p_encap == ISDN_NET_ENCAP_RAWIP) {
 				p->dev.hard_header = NULL;
 #if (LINUX_VERSION_CODE < 0x02010F)
@@ -2282,7 +2285,7 @@
 					p->dev.hard_header_cache = NULL;
 #endif
 					p->dev.header_cache_update = NULL;
-					p->dev.flags = IFF_NOARP;
+					p->dev.flags = IFF_NOARP | IFF_SOFTHEADERS;
 				}
 			}
 		}

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov