With the introduction of NOLOCK qdiscs, pfifo_fast performances in the uncontended scenario degraded measurably, especially after the commit eb82a9944792 ("net: sched, fix OOO packets with pfifo_fast").
This series restore the pfifo_fast performances in such scenario back the previous level, mainly reducing the number of atomic operations required to perform the qdisc_run() call. Even performances in the contended scenario increase measurably. Note: This series is on top of: sched: manipulate __QDISC_STATE_RUNNING in qdisc_run_* helpers Paolo Abeni (2): sched: replace __QDISC_STATE_RUNNING bit with a spin lock pfifo_fast: drop unneeded additional lock on dequeue include/linux/skb_array.h | 5 +++++ include/net/sch_generic.h | 10 +++++----- net/sched/sch_generic.c | 15 +++++++++++++-- 3 files changed, 23 insertions(+), 7 deletions(-) -- 2.14.3