Message ID | 26b6bdd93aadb81d643da8279e2e340637f3a07e.1582019010.git.pabeni@redhat.com |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
Series | [net] Revert "net: dev: introduce support for sch BYPASS for lockless qdisc" | expand |
From: Paolo Abeni <pabeni@redhat.com> Date: Tue, 18 Feb 2020 18:15:44 +0100 > This reverts commit ba27b4cdaaa66561aaedb2101876e563738d36fe > > Ahmed reported ouf-of-order issues bisected to commit ba27b4cdaaa6 > ("net: dev: introduce support for sch BYPASS for lockless qdisc"). > I can't find any working solution other than a plain revert. > > This will introduce some minor performance regressions for > pfifo_fast qdisc. I plan to address them in net-next with more > indirect call wrapper boilerplate for qdiscs. > > Reported-by: Ahmad Fatoum <a.fatoum@pengutronix.de> > Fixes: ba27b4cdaaa6 ("net: dev: introduce support for sch BYPASS for lockless qdisc") > Signed-off-by: Paolo Abeni <pabeni@redhat.com> Applied and queued up for -stable, thanks.
diff --git a/net/core/dev.c b/net/core/dev.c index 2577ebfed293..e10bd680dc03 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -3662,26 +3662,8 @@ static inline int __dev_xmit_skb(struct sk_buff *skb, struct Qdisc *q, qdisc_calculate_pkt_len(skb, q); if (q->flags & TCQ_F_NOLOCK) { - if ((q->flags & TCQ_F_CAN_BYPASS) && READ_ONCE(q->empty) && - qdisc_run_begin(q)) { - if (unlikely(test_bit(__QDISC_STATE_DEACTIVATED, - &q->state))) { - __qdisc_drop(skb, &to_free); - rc = NET_XMIT_DROP; - goto end_run; - } - qdisc_bstats_cpu_update(q, skb); - - rc = NET_XMIT_SUCCESS; - if (sch_direct_xmit(skb, q, dev, txq, NULL, true)) - __qdisc_run(q); - -end_run: - qdisc_run_end(q); - } else { - rc = q->enqueue(skb, q, &to_free) & NET_XMIT_MASK; - qdisc_run(q); - } + rc = q->enqueue(skb, q, &to_free) & NET_XMIT_MASK; + qdisc_run(q); if (unlikely(to_free)) kfree_skb_list(to_free);
This reverts commit ba27b4cdaaa66561aaedb2101876e563738d36fe Ahmed reported ouf-of-order issues bisected to commit ba27b4cdaaa6 ("net: dev: introduce support for sch BYPASS for lockless qdisc"). I can't find any working solution other than a plain revert. This will introduce some minor performance regressions for pfifo_fast qdisc. I plan to address them in net-next with more indirect call wrapper boilerplate for qdiscs. Reported-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Fixes: ba27b4cdaaa6 ("net: dev: introduce support for sch BYPASS for lockless qdisc") Signed-off-by: Paolo Abeni <pabeni@redhat.com> --- Due to pathological lack of coffee, a previous copy did not land on the netdev ML, I'm sorry for the noise on CC addresses --- net/core/dev.c | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-)