Jesper Dangaard Brouer
b8358d70ce
net_sched: restore qdisc quota fairness limits after bulk dequeue
...
Restore the quota fairness between qdisc's, that we broke with commit
5772e9a346 ("qdisc: bulk dequeue support for qdiscs with TCQ_F_ONETXQUEUE").
Before that commit, the quota in __qdisc_run() were in packets as
dequeue_skb() would only dequeue a single packet, that assumption
broke with bulk dequeue.
We choose not to account for the number of packets inside the TSO/GSO
packets (accessable via "skb_gso_segs"). As the previous fairness
also had this "defect". Thus, GSO/TSO packets counts as a single
packet.
Further more, we choose to slack on accuracy, by allowing a bulk
dequeue try_bulk_dequeue_skb() to exceed the "packets" limit, only
limited by the BQL bytelimit. This is done because BQL prefers to get
its full budget for appropriate feedback from TX completion.
In future, we might consider reworking this further and, if it allows,
switch to a time-based model, as suggested by Eric. Right now, we only
restore old semantics.
Joint work with Eric, Hannes, Daniel and Jesper. Hannes wrote the
first patch in cooperation with Daniel and Jesper. Eric rewrote the
patch.
Fixes: 5772e9a346 ("qdisc: bulk dequeue support for qdiscs with TCQ_F_ONETXQUEUE")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-10-09 19:12:26 -04:00
..
act_api.c
net: sched: enable per cpu qstats
2014-09-30 01:02:26 -04:00
act_csum.c
net_sched: act: move tcf_hashinfo_init() into tcf_register_action()
2014-02-12 19:23:32 -05:00
act_gact.c
net_sched: act: move tcf_hashinfo_init() into tcf_register_action()
2014-02-12 19:23:32 -05:00
act_ipt.c
net_sched: act: move tcf_hashinfo_init() into tcf_register_action()
2014-02-12 19:23:32 -05:00
act_mirred.c
net_sched: hold tcf_lock in netdevice notifier
2014-07-20 20:31:42 -07:00
act_nat.c
net_sched: act: move tcf_hashinfo_init() into tcf_register_action()
2014-02-12 19:23:32 -05:00
act_pedit.c
net_sched: act: move tcf_hashinfo_init() into tcf_register_action()
2014-02-12 19:23:32 -05:00
act_police.c
net: sched: make bstats per cpu and estimator RCU safe
2014-09-30 01:02:26 -04:00
act_simple.c
net_sched: act: move tcf_hashinfo_init() into tcf_register_action()
2014-02-12 19:23:32 -05:00
act_skbedit.c
net_sched: act: move tcf_hashinfo_init() into tcf_register_action()
2014-02-12 19:23:32 -05:00
cls_api.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2014-10-08 16:22:22 -04:00
cls_basic.c
net: sched: do not use tcf_proto 'tp' argument from call_rcu
2014-10-06 18:02:33 -04:00
cls_bpf.c
net: sched: do not use tcf_proto 'tp' argument from call_rcu
2014-10-06 18:02:33 -04:00
cls_cgroup.c
net: sched: cls_cgroup tear down exts and ematch from rcu callback
2014-10-06 18:02:32 -04:00
cls_flow.c
net: better IFF_XMIT_DST_RELEASE support
2014-10-07 13:22:11 -04:00
cls_fw.c
net: sched: do not use tcf_proto 'tp' argument from call_rcu
2014-10-06 18:02:33 -04:00
cls_route.c
net: better IFF_XMIT_DST_RELEASE support
2014-10-07 13:22:11 -04:00
cls_rsvp.c
cls_rsvp.h
net: sched: cls_rcvp, complete rcu conversion
2014-09-29 00:04:55 -04:00
cls_rsvp6.c
cls_tcindex.c
net_sched: fix another crash in cls_tcindex
2014-10-01 22:00:42 -04:00
cls_u32.c
net_sched: avoid calling tcf_unbind_filter() in call_rcu callback
2014-10-01 22:00:42 -04:00
em_canid.c
net: sched: remove tcf_proto from ematch calls
2014-10-06 18:02:32 -04:00
em_cmp.c
em_ipset.c
net: sched: remove tcf_proto from ematch calls
2014-10-06 18:02:32 -04:00
em_meta.c
net: sched: remove tcf_proto from ematch calls
2014-10-06 18:02:32 -04:00
em_nbyte.c
net: sched: remove tcf_proto from ematch calls
2014-10-06 18:02:32 -04:00
em_text.c
net: sched: remove tcf_proto from ematch calls
2014-10-06 18:02:32 -04:00
em_u32.c
ematch.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2014-10-08 16:22:22 -04:00
Kconfig
Makefile
sch_api.c
net: sched: avoid costly atomic operation in fq_dequeue()
2014-10-06 00:55:10 -04:00
sch_atm.c
net: sched: enable per cpu qstats
2014-09-30 01:02:26 -04:00
sch_blackhole.c
sch_cbq.c
net: sched: enable per cpu qstats
2014-09-30 01:02:26 -04:00
sch_choke.c
net: sched: implement qstat helper routines
2014-09-30 01:02:26 -04:00
sch_codel.c
net: sched: implement qstat helper routines
2014-09-30 01:02:26 -04:00
sch_drr.c
net: sched: enable per cpu qstats
2014-09-30 01:02:26 -04:00
sch_dsmark.c
net: sched: implement qstat helper routines
2014-09-30 01:02:26 -04:00
sch_fifo.c
net: sched: implement qstat helper routines
2014-09-30 01:02:26 -04:00
sch_fq.c
net: sched: avoid costly atomic operation in fq_dequeue()
2014-10-06 00:55:10 -04:00
sch_fq_codel.c
net: sched: enable per cpu qstats
2014-09-30 01:02:26 -04:00
sch_generic.c
net_sched: restore qdisc quota fairness limits after bulk dequeue
2014-10-09 19:12:26 -04:00
sch_gred.c
net: sched: implement qstat helper routines
2014-09-30 01:02:26 -04:00
sch_hfsc.c
net: sched: enable per cpu qstats
2014-09-30 01:02:26 -04:00
sch_hhf.c
net: sched: implement qstat helper routines
2014-09-30 01:02:26 -04:00
sch_htb.c
net: sched: enable per cpu qstats
2014-09-30 01:02:26 -04:00
sch_ingress.c
net: sched: implement qstat helper routines
2014-09-30 01:02:26 -04:00
sch_mq.c
net: sched: enable per cpu qstats
2014-09-30 01:02:26 -04:00
sch_mqprio.c
net: sched: enable per cpu qstats
2014-09-30 01:02:26 -04:00
sch_multiq.c
net: sched: enable per cpu qstats
2014-09-30 01:02:26 -04:00
sch_netem.c
net: sched: implement qstat helper routines
2014-09-30 01:02:26 -04:00
sch_pie.c
net: sched: implement qstat helper routines
2014-09-30 01:02:26 -04:00
sch_plug.c
sch_prio.c
net: sched: enable per cpu qstats
2014-09-30 01:02:26 -04:00
sch_qfq.c
net: sched: enable per cpu qstats
2014-09-30 01:02:26 -04:00
sch_red.c
net: sched: implement qstat helper routines
2014-09-30 01:02:26 -04:00
sch_sfb.c
net: sched: implement qstat helper routines
2014-09-30 01:02:26 -04:00
sch_sfq.c
net: sched: enable per cpu qstats
2014-09-30 01:02:26 -04:00
sch_tbf.c
net: sched: avoid costly atomic operation in fq_dequeue()
2014-10-06 00:55:10 -04:00
sch_teql.c
net: better IFF_XMIT_DST_RELEASE support
2014-10-07 13:22:11 -04:00