Revert "net: dev: introduce support for sch BYPASS for lockless qdisc"
[ Upstream commit379349e9bc
] This reverts commitba27b4cdaa
Ahmed reported ouf-of-order issues bisected to commitba27b4cdaa
("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:ba27b4cdaa
("net: dev: introduce support for sch BYPASS for lockless qdisc") Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
129a1e235c
commit
63d5320a0c
|
@ -3386,26 +3386,8 @@ static inline int __dev_xmit_skb(struct sk_buff *skb, struct Qdisc *q,
|
||||||
qdisc_calculate_pkt_len(skb, q);
|
qdisc_calculate_pkt_len(skb, q);
|
||||||
|
|
||||||
if (q->flags & TCQ_F_NOLOCK) {
|
if (q->flags & TCQ_F_NOLOCK) {
|
||||||
if ((q->flags & TCQ_F_CAN_BYPASS) && READ_ONCE(q->empty) &&
|
rc = q->enqueue(skb, q, &to_free) & NET_XMIT_MASK;
|
||||||
qdisc_run_begin(q)) {
|
qdisc_run(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);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (unlikely(to_free))
|
if (unlikely(to_free))
|
||||||
kfree_skb_list(to_free);
|
kfree_skb_list(to_free);
|
||||||
|
|
Loading…
Reference in a new issue