aboutsummaryrefslogtreecommitdiffstats
path: root/net/sched/sch_generic.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-07-30 10:13:37 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2008-07-30 10:13:37 -0700
commita4319d9fa02fb3f032596d18c6fcc8b05d01a3a5 (patch)
tree55bfcb36dcaf1935d1877810a79e398b34e46014 /net/sched/sch_generic.c
parentafd962a9e8708c571c5c0c4a6d098f931742c229 (diff)
parent031cf19e6f63941506c9baf76ac7adac06edcf08 (diff)
downloadkernel_replicant_linux-a4319d9fa02fb3f032596d18c6fcc8b05d01a3a5.tar.gz
kernel_replicant_linux-a4319d9fa02fb3f032596d18c6fcc8b05d01a3a5.tar.bz2
kernel_replicant_linux-a4319d9fa02fb3f032596d18c6fcc8b05d01a3a5.zip
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (47 commits) net: Make "networking" one-click deselectable. ipv6: Fix useless proc net sockstat6 removal tcp: MD5: Use MIB counter instead of warning for MD5 mismatch. pkt_sched: Fix OOPS on ingress qdisc add. niu: Fix error checking in niu_ethflow_to_class. IPv6: datagram_send_ctl() should exit immediately when an error occured mac80211: fix mesh beaconing PS3: gelic: use unsigned long for irqflags mac80211: fix cfg80211 hooks for master interface nl80211: fix dump callbacks mac80211: partially fix skb->cb use rtl8187: Improve wireless statistics for RTL8187B rtl8187: Fix for TX sequence number problem mac80211: append CONFIG_ to MAC80211_VERBOSE_PS_DEBUG in net/mac80211/tx.c. mac80211: fix sparse integer as NULL pointer warning drivers/net/wireless/iwlwifi/iwl-led.c: printk fix mac80211: return correct error return from ieee80211_wep_init mac80211: tx, use dev_kfree_skb_any for beacon_get rt2x00: Clear queue entry flags during initialization rt2x00: Force full register config after start() ...
Diffstat (limited to 'net/sched/sch_generic.c')
-rw-r--r--net/sched/sch_generic.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index fd2a6cadb115..345838a2e369 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -596,7 +596,7 @@ static void transition_one_qdisc(struct net_device *dev,
int *need_watchdog_p = _need_watchdog;
rcu_assign_pointer(dev_queue->qdisc, new_qdisc);
- if (new_qdisc != &noqueue_qdisc)
+ if (need_watchdog_p && new_qdisc != &noqueue_qdisc)
*need_watchdog_p = 1;
}
@@ -619,6 +619,7 @@ void dev_activate(struct net_device *dev)
need_watchdog = 0;
netdev_for_each_tx_queue(dev, transition_one_qdisc, &need_watchdog);
+ transition_one_qdisc(dev, &dev->rx_queue, NULL);
if (need_watchdog) {
dev->trans_start = jiffies;
@@ -677,6 +678,7 @@ void dev_deactivate(struct net_device *dev)
bool running;
netdev_for_each_tx_queue(dev, dev_deactivate_queue, &noop_qdisc);
+ dev_deactivate_queue(dev, &dev->rx_queue, &noop_qdisc);
dev_watchdog_down(dev);
@@ -718,7 +720,7 @@ static void dev_init_scheduler_queue(struct net_device *dev,
void dev_init_scheduler(struct net_device *dev)
{
netdev_for_each_tx_queue(dev, dev_init_scheduler_queue, &noop_qdisc);
- dev_init_scheduler_queue(dev, &dev->rx_queue, NULL);
+ dev_init_scheduler_queue(dev, &dev->rx_queue, &noop_qdisc);
setup_timer(&dev->watchdog_timer, dev_watchdog, (unsigned long)dev);
}
@@ -745,6 +747,6 @@ static void shutdown_scheduler_queue(struct net_device *dev,
void dev_shutdown(struct net_device *dev)
{
netdev_for_each_tx_queue(dev, shutdown_scheduler_queue, &noop_qdisc);
- shutdown_scheduler_queue(dev, &dev->rx_queue, NULL);
+ shutdown_scheduler_queue(dev, &dev->rx_queue, &noop_qdisc);
WARN_ON(timer_pending(&dev->watchdog_timer));
}