diff options
Diffstat (limited to 'net/core/dev.c')
| -rw-r--r-- | net/core/dev.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 8d13a9b9f1df..69320a56a084 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
| @@ -2100,7 +2100,7 @@ static int ing_filter(struct sk_buff *skb) | |||
| 2100 | rxq = &dev->rx_queue; | 2100 | rxq = &dev->rx_queue; |
| 2101 | 2101 | ||
| 2102 | q = rxq->qdisc; | 2102 | q = rxq->qdisc; |
| 2103 | if (q) { | 2103 | if (q != &noop_qdisc) { |
| 2104 | spin_lock(qdisc_lock(q)); | 2104 | spin_lock(qdisc_lock(q)); |
| 2105 | result = qdisc_enqueue_root(skb, q); | 2105 | result = qdisc_enqueue_root(skb, q); |
| 2106 | spin_unlock(qdisc_lock(q)); | 2106 | spin_unlock(qdisc_lock(q)); |
| @@ -2113,7 +2113,7 @@ static inline struct sk_buff *handle_ing(struct sk_buff *skb, | |||
| 2113 | struct packet_type **pt_prev, | 2113 | struct packet_type **pt_prev, |
| 2114 | int *ret, struct net_device *orig_dev) | 2114 | int *ret, struct net_device *orig_dev) |
| 2115 | { | 2115 | { |
| 2116 | if (!skb->dev->rx_queue.qdisc) | 2116 | if (skb->dev->rx_queue.qdisc == &noop_qdisc) |
| 2117 | goto out; | 2117 | goto out; |
| 2118 | 2118 | ||
| 2119 | if (*pt_prev) { | 2119 | if (*pt_prev) { |
| @@ -4200,6 +4200,7 @@ static void netdev_init_queues(struct net_device *dev) | |||
| 4200 | { | 4200 | { |
| 4201 | netdev_init_one_queue(dev, &dev->rx_queue, NULL); | 4201 | netdev_init_one_queue(dev, &dev->rx_queue, NULL); |
| 4202 | netdev_for_each_tx_queue(dev, netdev_init_one_queue, NULL); | 4202 | netdev_for_each_tx_queue(dev, netdev_init_one_queue, NULL); |
| 4203 | spin_lock_init(&dev->tx_global_lock); | ||
| 4203 | } | 4204 | } |
| 4204 | 4205 | ||
| 4205 | /** | 4206 | /** |
