lkml.org 
[lkml]   [2020]   [Mar]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.5 011/176] Revert "net: dev: introduce support for sch BYPASS for lockless qdisc"
    Date
    From: Paolo Abeni <pabeni@redhat.com>

    [ Upstream commit 379349e9bc3b42b8b2f8f7a03f64a97623fff323 ]

    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>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    net/core/dev.c | 22 ++--------------------
    1 file changed, 2 insertions(+), 20 deletions(-)

    --- a/net/core/dev.c
    +++ b/net/core/dev.c
    @@ -3607,26 +3607,8 @@ static inline int __dev_xmit_skb(struct
    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);

    \
     
     \ /
      Last update: 2020-03-03 18:44    [W:2.104 / U:0.268 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site