diff options
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 357111431ec9..676c9418f8e4 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -3468,6 +3468,15 @@ static inline int __dev_xmit_skb(struct sk_buff *skb, struct Qdisc *q, | |||
3468 | if (unlikely(test_bit(__QDISC_STATE_DEACTIVATED, &q->state))) { | 3468 | if (unlikely(test_bit(__QDISC_STATE_DEACTIVATED, &q->state))) { |
3469 | __qdisc_drop(skb, &to_free); | 3469 | __qdisc_drop(skb, &to_free); |
3470 | rc = NET_XMIT_DROP; | 3470 | rc = NET_XMIT_DROP; |
3471 | } else if ((q->flags & TCQ_F_CAN_BYPASS) && q->empty && | ||
3472 | qdisc_run_begin(q)) { | ||
3473 | qdisc_bstats_cpu_update(q, skb); | ||
3474 | |||
3475 | if (sch_direct_xmit(skb, q, dev, txq, NULL, true)) | ||
3476 | __qdisc_run(q); | ||
3477 | |||
3478 | qdisc_run_end(q); | ||
3479 | rc = NET_XMIT_SUCCESS; | ||
3471 | } else { | 3480 | } else { |
3472 | rc = q->enqueue(skb, q, &to_free) & NET_XMIT_MASK; | 3481 | rc = q->enqueue(skb, q, &to_free) & NET_XMIT_MASK; |
3473 | qdisc_run(q); | 3482 | qdisc_run(q); |