diff -rNu linux/drivers/net/Space.c linux-custom/drivers/net/Space.c --- linux/drivers/net/Space.c Wed Jun 7 23:26:43 2000 +++ linux-custom/drivers/net/Space.c Sat Jul 15 11:19:45 2000 @@ -106,6 +106,7 @@ extern int ncr885e_probe(struct device *); extern int cs89x0_probe(struct device *dev); extern int ethertap_probe(struct device *dev); +extern int bond_init(struct device *dev); extern int ether1_probe (struct device *dev); extern int ether3_probe (struct device *dev); extern int etherh_probe (struct device *dev); @@ -631,6 +632,12 @@ static struct device tap0_dev = { "tap0", 0, 0, 0, 0, NETLINK_TAPBASE, 0, 0 , 0, 0, NEXT_DEV, ethertap_probe, }; # undef NEXT_DEV # define NEXT_DEV (&tap0_dev) +#endif + +#ifdef CONFIG_BONDING +static struct device bonding_dev = { "bond0", 0, 0, 0, 0, 0, 0, 0, 0, 0, NEXT_D EV, bond_init, }; +# undef NEXT_DEV +# define NEXT_DEV (&bonding_dev) #endif #ifdef CONFIG_LANMEDIA diff -rNu linux/net/core/dev.c linux-custom/net/core/dev.c --- linux/net/core/dev.c Wed Jun 7 23:26:44 2000 +++ linux-custom/net/core/dev.c Sat Jul 15 11:18:37 2000 @@ -773,6 +773,10 @@ if (backlog.qlen <= netdev_max_backlog) { if (backlog.qlen) { if (netdev_dropping == 0) { + if (skb->dev->flags & IFF_SLAVE && + skb->dev->slave) { + skb->dev = skb->dev->slave; + } skb_queue_tail(&backlog,skb); mark_bh(NET_BH); return;