mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 14:20:55 +07:00
pkt_sched: QFQ - quick fair queue scheduler
This is an implementation of the Quick Fair Queue scheduler developed by Fabio Checconi. The same algorithm is already implemented in ipfw in FreeBSD. Fabio had an earlier version developed on Linux, I just cleaned it up. Thanks to Eric Dumazet for testing this under load. Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
fc3e594124
commit
0545a30377
@ -588,4 +588,19 @@ struct tc_sfb_xstats {
|
|||||||
|
|
||||||
#define SFB_MAX_PROB 0xFFFF
|
#define SFB_MAX_PROB 0xFFFF
|
||||||
|
|
||||||
|
/* QFQ */
|
||||||
|
enum {
|
||||||
|
TCA_QFQ_UNSPEC,
|
||||||
|
TCA_QFQ_WEIGHT,
|
||||||
|
TCA_QFQ_LMAX,
|
||||||
|
__TCA_QFQ_MAX
|
||||||
|
};
|
||||||
|
|
||||||
|
#define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1)
|
||||||
|
|
||||||
|
struct tc_qfq_stats {
|
||||||
|
__u32 weight;
|
||||||
|
__u32 lmax;
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -239,6 +239,17 @@ config NET_SCH_CHOKE
|
|||||||
To compile this code as a module, choose M here: the
|
To compile this code as a module, choose M here: the
|
||||||
module will be called sch_choke.
|
module will be called sch_choke.
|
||||||
|
|
||||||
|
config NET_SCH_QFQ
|
||||||
|
tristate "Quick Fair Queueing scheduler (QFQ)"
|
||||||
|
help
|
||||||
|
Say Y here if you want to use the Quick Fair Queueing Scheduler (QFQ)
|
||||||
|
packet scheduling algorithm.
|
||||||
|
|
||||||
|
To compile this driver as a module, choose M here: the module
|
||||||
|
will be called sch_qfq.
|
||||||
|
|
||||||
|
If unsure, say N.
|
||||||
|
|
||||||
config NET_SCH_INGRESS
|
config NET_SCH_INGRESS
|
||||||
tristate "Ingress Qdisc"
|
tristate "Ingress Qdisc"
|
||||||
depends on NET_CLS_ACT
|
depends on NET_CLS_ACT
|
||||||
|
@ -35,6 +35,7 @@ obj-$(CONFIG_NET_SCH_NETEM) += sch_netem.o
|
|||||||
obj-$(CONFIG_NET_SCH_DRR) += sch_drr.o
|
obj-$(CONFIG_NET_SCH_DRR) += sch_drr.o
|
||||||
obj-$(CONFIG_NET_SCH_MQPRIO) += sch_mqprio.o
|
obj-$(CONFIG_NET_SCH_MQPRIO) += sch_mqprio.o
|
||||||
obj-$(CONFIG_NET_SCH_CHOKE) += sch_choke.o
|
obj-$(CONFIG_NET_SCH_CHOKE) += sch_choke.o
|
||||||
|
obj-$(CONFIG_NET_SCH_QFQ) += sch_qfq.o
|
||||||
|
|
||||||
obj-$(CONFIG_NET_CLS_U32) += cls_u32.o
|
obj-$(CONFIG_NET_CLS_U32) += cls_u32.o
|
||||||
obj-$(CONFIG_NET_CLS_ROUTE4) += cls_route.o
|
obj-$(CONFIG_NET_CLS_ROUTE4) += cls_route.o
|
||||||
|
1137
net/sched/sch_qfq.c
Normal file
1137
net/sched/sch_qfq.c
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user