--- linux-2.6.10-bk7/net/sched/sch_generic.c Wed Jan 5 16:27:13 2005 +++ linux-2.6.10-work/net/sched/sch_generic.c Wed Jan 5 16:28:53 2005 @@ -134,7 +134,7 @@ /* And release queue */ spin_unlock(&dev->queue_lock); - if (!netif_queue_stopped(dev)) { + if (!netif_queue_stopped(dev) && netif_carrier_ok(dev)) { int ret; if (netdev_nit) dev_queue_xmit_nit(skb, dev); @@ -162,6 +162,11 @@ } spin_lock(&dev->queue_lock); q = dev->qdisc; + if (!netif_carrier_ok(dev)) { + kfree_skb(skb); + q->qstats.drops++; + return -1; + } } /* Device kicked us out :(