diff options
Diffstat (limited to 'net/sched/sch_generic.c')
| -rw-r--r-- | net/sched/sch_generic.c | 5 | 
1 files changed, 5 insertions, 0 deletions
| diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index 8c01e023f02e..87e48a4e1051 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c @@ -179,6 +179,7 @@ requeue:  		netif_schedule(dev);  		return 1;  	} +	BUG_ON((int) q->q.qlen < 0);  	return q->q.qlen;  } @@ -539,6 +540,10 @@ void dev_activate(struct net_device *dev)  		write_unlock_bh(&qdisc_tree_lock);  	} +	if (!netif_carrier_ok(dev)) +		/* Delay activation until next carrier-on event */ +		return; +  	spin_lock_bh(&dev->queue_lock);  	rcu_assign_pointer(dev->qdisc, dev->qdisc_sleeping);  	if (dev->qdisc != &noqueue_qdisc) { | 
