# grep -r 'netif_carrier_o[nf]' linux-2.6.12 | wc -l 246 # size vmlinux.org vmlinux.carrier text data bss dec hex filename 4339634 1054414 259296 5653344 564360 vmlinux.org 4337710 1054414 259296 5651420 563bdc vmlinux.carrier And this ain't an allyesconfig kernel! diff -urpN linux-2.6.12.org/include/linux/netdevice.h linux-2.6.12.carrier/include/linux/netdevice.h --- linux-2.6.12.org/include/linux/netdevice.h Sun Jun 19 16:10:56 2005 +++ linux-2.6.12.carrier/include/linux/netdevice.h Wed Aug 10 21:13:28 2005 @@ -706,19 +706,9 @@ static inline int netif_carrier_ok(const extern void __netdev_watchdog_up(struct net_device *dev); -static inline void netif_carrier_on(struct net_device *dev) -{ - if (test_and_clear_bit(__LINK_STATE_NOCARRIER, &dev->state)) - linkwatch_fire_event(dev); - if (netif_running(dev)) - __netdev_watchdog_up(dev); -} +extern void netif_carrier_on(struct net_device *dev); -static inline void netif_carrier_off(struct net_device *dev) -{ - if (!test_and_set_bit(__LINK_STATE_NOCARRIER, &dev->state)) - linkwatch_fire_event(dev); -} +extern void netif_carrier_off(struct net_device *dev); /* Hot-plugging. */ static inline int netif_device_present(struct net_device *dev) diff -urpN linux-2.6.12.org/net/sched/sch_generic.c linux-2.6.12.carrier/net/sched/sch_generic.c --- linux-2.6.12.org/net/sched/sch_generic.c Wed Aug 10 21:15:26 2005 +++ linux-2.6.12.carrier/net/sched/sch_generic.c Wed Aug 10 22:23:33 2005 @@ -238,6 +238,20 @@ static void dev_watchdog_down(struct net spin_unlock_bh(&dev->xmit_lock); } +void netif_carrier_on(struct net_device *dev) +{ + if (test_and_clear_bit(__LINK_STATE_NOCARRIER, &dev->state)) + linkwatch_fire_event(dev); + if (netif_running(dev)) + __netdev_watchdog_up(dev); +} + +void netif_carrier_off(struct net_device *dev) +{ + if (!test_and_set_bit(__LINK_STATE_NOCARRIER, &dev->state)) + linkwatch_fire_event(dev); +} + /* "NOOP" scheduler: the best scheduler, recommended for all interfaces under all circumstances. It is difficult to invent anything faster or cheaper. @@ -604,6 +618,8 @@ void dev_shutdown(struct net_device *dev } EXPORT_SYMBOL(__netdev_watchdog_up); +EXPORT_SYMBOL(netif_carrier_on); +EXPORT_SYMBOL(netif_carrier_off); EXPORT_SYMBOL(noop_qdisc); EXPORT_SYMBOL(noop_qdisc_ops); EXPORT_SYMBOL(qdisc_create_dflt);