Skip to content

Commit

Permalink
pkt_sched: QFQ - quick fair queue scheduler
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Eric Dumazet <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
stephen hemminger authored and davem330 committed Apr 4, 2011
1 parent fc3e594 commit 0545a30
Show file tree
Hide file tree
Showing 4 changed files with 1,164 additions and 0 deletions.
15 changes: 15 additions & 0 deletions include/linux/pkt_sched.h
Original file line number Diff line number Diff line change
Expand Up @@ -588,4 +588,19 @@ struct tc_sfb_xstats {

#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
11 changes: 11 additions & 0 deletions net/sched/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,17 @@ config NET_SCH_CHOKE
To compile this code as a module, choose M here: the
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
tristate "Ingress Qdisc"
depends on NET_CLS_ACT
Expand Down
1 change: 1 addition & 0 deletions net/sched/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ obj-$(CONFIG_NET_SCH_NETEM) += sch_netem.o
obj-$(CONFIG_NET_SCH_DRR) += sch_drr.o
obj-$(CONFIG_NET_SCH_MQPRIO) += sch_mqprio.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_ROUTE4) += cls_route.o
Expand Down
Loading

0 comments on commit 0545a30

Please sign in to comment.