linux/net/sched
John Fastabend b8970f0bfc net_sched: implement a root container qdisc sch_mqprio
This implements a mqprio queueing discipline that by default creates
a pfifo_fast qdisc per tx queue and provides the needed configuration
interface.

Using the mqprio qdisc the number of tcs currently in use along
with the range of queues alloted to each class can be configured. By
default skbs are mapped to traffic classes using the skb priority.
This mapping is configurable.

Configurable parameters,

struct tc_mqprio_qopt {
	__u8    num_tc;
	__u8    prio_tc_map[TC_BITMASK + 1];
	__u8    hw;
	__u16   count[TC_MAX_QUEUE];
	__u16   offset[TC_MAX_QUEUE];
};

Here the count/offset pairing give the queue alignment and the
prio_tc_map gives the mapping from skb->priority to tc.

The hw bit determines if the hardware should configure the count
and offset values. If the hardware bit is set then the operation
will fail if the hardware does not implement the ndo_setup_tc
operation. This is to avoid undetermined states where the hardware
may or may not control the queue mapping. Also minimal bounds
checking is done on the count/offset to verify a queue does not
exceed num_tx_queues and that queue ranges do not overlap. Otherwise
it is left to user policy or hardware configuration to create
useful mappings.

It is expected that hardware QOS schemes can be implemented by
creating appropriate mappings of queues in ndo_tc_setup().

One expected use case is drivers will use the ndo_setup_tc to map
queue ranges onto 802.1Q traffic classes. This provides a generic
mechanism to map network traffic onto these traffic classes and
removes the need for lower layer drivers to know specifics about
traffic types.

Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-01-19 23:31:11 -08:00
..
Kconfig net_sched: implement a root container qdisc sch_mqprio 2011-01-19 23:31:11 -08:00
Makefile net_sched: implement a root container qdisc sch_mqprio 2011-01-19 23:31:11 -08:00
act_api.c pkt_sched: gen_kill_estimator() rcu fixes 2010-06-11 18:37:08 -07:00
act_csum.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
act_gact.c net sched: fix some kernel memory leaks 2010-08-17 15:12:15 -07:00
act_ipt.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
act_mirred.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
act_nat.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
act_pedit.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
act_police.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
act_simple.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
act_skbedit.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
cls_api.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-04-11 14:53:53 -07:00
cls_basic.c classifier: report statistics for basic classifier 2010-11-08 12:17:05 -08:00
cls_cgroup.c cls_cgroup: Fix crash on module unload 2010-11-03 18:50:50 -07:00
cls_flow.c net_sched: cls_flow: add key rxhash 2010-08-21 23:40:14 -07:00
cls_fw.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cls_route.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cls_rsvp.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_rsvp.h cls_rsvp: add sanity check for the packet length 2010-08-04 21:53:15 -07:00
cls_rsvp6.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_tcindex.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cls_u32.c cls_u32: signedness bug 2010-10-05 00:40:39 -07:00
em_cmp.c net: em_cmp.c use unaligned access helpers 2008-09-22 19:20:51 -07:00
em_meta.c tc: add meta match on receive hash 2010-08-24 14:48:10 -07:00
em_nbyte.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
em_text.c text ematch: check for NULL pointer before destroying textsearch config 2010-10-31 09:37:38 -07:00
em_u32.c [PKT_SCHED]: annotate cls_u32 2008-03-17 22:46:46 -07:00
ematch.c net sched: printk message severity 2010-05-17 23:23:12 -07:00
sch_api.c net: dynamic ingress_queue allocation 2010-10-05 00:23:44 -07:00
sch_atm.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
sch_blackhole.c pkt_sched: Add qdisc->ops->peek() implementation. 2008-10-31 00:45:55 -07:00
sch_cbq.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
sch_drr.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
sch_dsmark.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
sch_fifo.c net_sched: pfifo_head_drop problem 2011-01-05 13:39:17 -08:00
sch_generic.c net_sched: implement a root container qdisc sch_mqprio 2011-01-19 23:31:11 -08:00
sch_gred.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sch_hfsc.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
sch_htb.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
sch_ingress.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
sch_mq.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_mqprio.c net_sched: implement a root container qdisc sch_mqprio 2011-01-19 23:31:11 -08:00
sch_multiq.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
sch_netem.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
sch_prio.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
sch_red.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
sch_sfq.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
sch_tbf.c net_sched: factorize qdisc stats handling 2011-01-10 16:07:54 -08:00
sch_teql.c net: remove dev_txq_stats_fold() 2011-01-13 21:44:34 -08:00