xref: /linux/net/sched/Kconfig (revision 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2)
1*1da177e4SLinus Torvalds#
2*1da177e4SLinus Torvalds# Traffic control configuration.
3*1da177e4SLinus Torvalds#
4*1da177e4SLinus Torvaldschoice
5*1da177e4SLinus Torvalds	prompt "Packet scheduler clock source"
6*1da177e4SLinus Torvalds	depends on NET_SCHED
7*1da177e4SLinus Torvalds	default NET_SCH_CLK_JIFFIES
8*1da177e4SLinus Torvalds	help
9*1da177e4SLinus Torvalds	  Packet schedulers need a monotonic clock that increments at a static
10*1da177e4SLinus Torvalds	  rate. The kernel provides several suitable interfaces, each with
11*1da177e4SLinus Torvalds	  different properties:
12*1da177e4SLinus Torvalds
13*1da177e4SLinus Torvalds	  - high resolution (us or better)
14*1da177e4SLinus Torvalds	  - fast to read (minimal locking, no i/o access)
15*1da177e4SLinus Torvalds	  - synchronized on all processors
16*1da177e4SLinus Torvalds	  - handles cpu clock frequency changes
17*1da177e4SLinus Torvalds
18*1da177e4SLinus Torvalds	  but nothing provides all of the above.
19*1da177e4SLinus Torvalds
20*1da177e4SLinus Torvaldsconfig NET_SCH_CLK_JIFFIES
21*1da177e4SLinus Torvalds	bool "Timer interrupt"
22*1da177e4SLinus Torvalds	help
23*1da177e4SLinus Torvalds	  Say Y here if you want to use the timer interrupt (jiffies) as clock
24*1da177e4SLinus Torvalds	  source. This clock source is fast, synchronized on all processors and
25*1da177e4SLinus Torvalds	  handles cpu clock frequency changes, but its resolution is too low
26*1da177e4SLinus Torvalds	  for accurate shaping except at very low speed.
27*1da177e4SLinus Torvalds
28*1da177e4SLinus Torvaldsconfig NET_SCH_CLK_GETTIMEOFDAY
29*1da177e4SLinus Torvalds	bool "gettimeofday"
30*1da177e4SLinus Torvalds	help
31*1da177e4SLinus Torvalds	  Say Y here if you want to use gettimeofday as clock source. This clock
32*1da177e4SLinus Torvalds	  source has high resolution, is synchronized on all processors and
33*1da177e4SLinus Torvalds	  handles cpu clock frequency changes, but it is slow.
34*1da177e4SLinus Torvalds
35*1da177e4SLinus Torvalds	  Choose this if you need a high resolution clock source but can't use
36*1da177e4SLinus Torvalds	  the CPU's cycle counter.
37*1da177e4SLinus Torvalds
38*1da177e4SLinus Torvaldsconfig NET_SCH_CLK_CPU
39*1da177e4SLinus Torvalds	bool "CPU cycle counter"
40*1da177e4SLinus Torvalds	depends on X86_TSC || X86_64 || ALPHA || SPARC64 || PPC64 || IA64
41*1da177e4SLinus Torvalds	help
42*1da177e4SLinus Torvalds	  Say Y here if you want to use the CPU's cycle counter as clock source.
43*1da177e4SLinus Torvalds	  This is a cheap and high resolution clock source, but on some
44*1da177e4SLinus Torvalds	  architectures it is not synchronized on all processors and doesn't
45*1da177e4SLinus Torvalds	  handle cpu clock frequency changes.
46*1da177e4SLinus Torvalds
47*1da177e4SLinus Torvalds	  The useable cycle counters are:
48*1da177e4SLinus Torvalds
49*1da177e4SLinus Torvalds	  	x86/x86_64	- Timestamp Counter
50*1da177e4SLinus Torvalds		alpha		- Cycle Counter
51*1da177e4SLinus Torvalds		sparc64		- %ticks register
52*1da177e4SLinus Torvalds		ppc64		- Time base
53*1da177e4SLinus Torvalds		ia64		- Interval Time Counter
54*1da177e4SLinus Torvalds
55*1da177e4SLinus Torvalds	  Choose this if your CPU's cycle counter is working properly.
56*1da177e4SLinus Torvalds
57*1da177e4SLinus Torvaldsendchoice
58*1da177e4SLinus Torvalds
59*1da177e4SLinus Torvaldsconfig NET_SCH_CBQ
60*1da177e4SLinus Torvalds	tristate "CBQ packet scheduler"
61*1da177e4SLinus Torvalds	depends on NET_SCHED
62*1da177e4SLinus Torvalds	---help---
63*1da177e4SLinus Torvalds	  Say Y here if you want to use the Class-Based Queueing (CBQ) packet
64*1da177e4SLinus Torvalds	  scheduling algorithm for some of your network devices.  This
65*1da177e4SLinus Torvalds	  algorithm classifies the waiting packets into a tree-like hierarchy
66*1da177e4SLinus Torvalds	  of classes; the leaves of this tree are in turn scheduled by
67*1da177e4SLinus Torvalds	  separate algorithms (called "disciplines" in this context).
68*1da177e4SLinus Torvalds
69*1da177e4SLinus Torvalds	  See the top of <file:net/sched/sch_cbq.c> for references about the
70*1da177e4SLinus Torvalds	  CBQ algorithm.
71*1da177e4SLinus Torvalds
72*1da177e4SLinus Torvalds	  CBQ is a commonly used scheduler, so if you're unsure, you should
73*1da177e4SLinus Torvalds	  say Y here. Then say Y to all the queueing algorithms below that you
74*1da177e4SLinus Torvalds	  want to use as CBQ disciplines.  Then say Y to "Packet classifier
75*1da177e4SLinus Torvalds	  API" and say Y to all the classifiers you want to use; a classifier
76*1da177e4SLinus Torvalds	  is a routine that allows you to sort your outgoing traffic into
77*1da177e4SLinus Torvalds	  classes based on a certain criterion.
78*1da177e4SLinus Torvalds
79*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
80*1da177e4SLinus Torvalds	  module will be called sch_cbq.
81*1da177e4SLinus Torvalds
82*1da177e4SLinus Torvaldsconfig NET_SCH_HTB
83*1da177e4SLinus Torvalds	tristate "HTB packet scheduler"
84*1da177e4SLinus Torvalds	depends on NET_SCHED
85*1da177e4SLinus Torvalds	---help---
86*1da177e4SLinus Torvalds	  Say Y here if you want to use the Hierarchical Token Buckets (HTB)
87*1da177e4SLinus Torvalds	  packet scheduling algorithm for some of your network devices. See
88*1da177e4SLinus Torvalds	  <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and
89*1da177e4SLinus Torvalds	  in-depth articles.
90*1da177e4SLinus Torvalds
91*1da177e4SLinus Torvalds	  HTB is very similar to the CBQ regarding its goals however is has
92*1da177e4SLinus Torvalds	  different properties and different algorithm.
93*1da177e4SLinus Torvalds
94*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
95*1da177e4SLinus Torvalds	  module will be called sch_htb.
96*1da177e4SLinus Torvalds
97*1da177e4SLinus Torvaldsconfig NET_SCH_HFSC
98*1da177e4SLinus Torvalds	tristate "HFSC packet scheduler"
99*1da177e4SLinus Torvalds	depends on NET_SCHED
100*1da177e4SLinus Torvalds	---help---
101*1da177e4SLinus Torvalds	  Say Y here if you want to use the Hierarchical Fair Service Curve
102*1da177e4SLinus Torvalds	  (HFSC) packet scheduling algorithm for some of your network devices.
103*1da177e4SLinus Torvalds
104*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
105*1da177e4SLinus Torvalds	  module will be called sch_hfsc.
106*1da177e4SLinus Torvalds
107*1da177e4SLinus Torvalds#tristate '  H-PFQ packet scheduler' CONFIG_NET_SCH_HPFQ
108*1da177e4SLinus Torvaldsconfig NET_SCH_ATM
109*1da177e4SLinus Torvalds	tristate "ATM pseudo-scheduler"
110*1da177e4SLinus Torvalds	depends on NET_SCHED && ATM
111*1da177e4SLinus Torvalds	---help---
112*1da177e4SLinus Torvalds	  Say Y here if you want to use the ATM pseudo-scheduler.  This
113*1da177e4SLinus Torvalds	  provides a framework for invoking classifiers (aka "filters"), which
114*1da177e4SLinus Torvalds	  in turn select classes of this queuing discipline.  Each class maps
115*1da177e4SLinus Torvalds	  the flow(s) it is handling to a given virtual circuit (see the top of
116*1da177e4SLinus Torvalds	  <file:net/sched/sch_atm.c>).
117*1da177e4SLinus Torvalds
118*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
119*1da177e4SLinus Torvalds	  module will be called sch_atm.
120*1da177e4SLinus Torvalds
121*1da177e4SLinus Torvaldsconfig NET_SCH_PRIO
122*1da177e4SLinus Torvalds	tristate "The simplest PRIO pseudoscheduler"
123*1da177e4SLinus Torvalds	depends on NET_SCHED
124*1da177e4SLinus Torvalds	help
125*1da177e4SLinus Torvalds	  Say Y here if you want to use an n-band priority queue packet
126*1da177e4SLinus Torvalds	  "scheduler" for some of your network devices or as a leaf discipline
127*1da177e4SLinus Torvalds	  for the CBQ scheduling algorithm. If unsure, say Y.
128*1da177e4SLinus Torvalds
129*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
130*1da177e4SLinus Torvalds	  module will be called sch_prio.
131*1da177e4SLinus Torvalds
132*1da177e4SLinus Torvaldsconfig NET_SCH_RED
133*1da177e4SLinus Torvalds	tristate "RED queue"
134*1da177e4SLinus Torvalds	depends on NET_SCHED
135*1da177e4SLinus Torvalds	help
136*1da177e4SLinus Torvalds	  Say Y here if you want to use the Random Early Detection (RED)
137*1da177e4SLinus Torvalds	  packet scheduling algorithm for some of your network devices (see
138*1da177e4SLinus Torvalds	  the top of <file:net/sched/sch_red.c> for details and references
139*1da177e4SLinus Torvalds	  about the algorithm).
140*1da177e4SLinus Torvalds
141*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
142*1da177e4SLinus Torvalds	  module will be called sch_red.
143*1da177e4SLinus Torvalds
144*1da177e4SLinus Torvaldsconfig NET_SCH_SFQ
145*1da177e4SLinus Torvalds	tristate "SFQ queue"
146*1da177e4SLinus Torvalds	depends on NET_SCHED
147*1da177e4SLinus Torvalds	---help---
148*1da177e4SLinus Torvalds	  Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
149*1da177e4SLinus Torvalds	  packet scheduling algorithm for some of your network devices or as a
150*1da177e4SLinus Torvalds	  leaf discipline for the CBQ scheduling algorithm (see the top of
151*1da177e4SLinus Torvalds	  <file:net/sched/sch_sfq.c> for details and references about the SFQ
152*1da177e4SLinus Torvalds	  algorithm).
153*1da177e4SLinus Torvalds
154*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
155*1da177e4SLinus Torvalds	  module will be called sch_sfq.
156*1da177e4SLinus Torvalds
157*1da177e4SLinus Torvaldsconfig NET_SCH_TEQL
158*1da177e4SLinus Torvalds	tristate "TEQL queue"
159*1da177e4SLinus Torvalds	depends on NET_SCHED
160*1da177e4SLinus Torvalds	---help---
161*1da177e4SLinus Torvalds	  Say Y here if you want to use the True Link Equalizer (TLE) packet
162*1da177e4SLinus Torvalds	  scheduling algorithm for some of your network devices or as a leaf
163*1da177e4SLinus Torvalds	  discipline for the CBQ scheduling algorithm. This queueing
164*1da177e4SLinus Torvalds	  discipline allows the combination of several physical devices into
165*1da177e4SLinus Torvalds	  one virtual device. (see the top of <file:net/sched/sch_teql.c> for
166*1da177e4SLinus Torvalds	  details).
167*1da177e4SLinus Torvalds
168*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
169*1da177e4SLinus Torvalds	  module will be called sch_teql.
170*1da177e4SLinus Torvalds
171*1da177e4SLinus Torvaldsconfig NET_SCH_TBF
172*1da177e4SLinus Torvalds	tristate "TBF queue"
173*1da177e4SLinus Torvalds	depends on NET_SCHED
174*1da177e4SLinus Torvalds	help
175*1da177e4SLinus Torvalds	  Say Y here if you want to use the Simple Token Bucket Filter (TBF)
176*1da177e4SLinus Torvalds	  packet scheduling algorithm for some of your network devices or as a
177*1da177e4SLinus Torvalds	  leaf discipline for the CBQ scheduling algorithm (see the top of
178*1da177e4SLinus Torvalds	  <file:net/sched/sch_tbf.c> for a description of the TBF algorithm).
179*1da177e4SLinus Torvalds
180*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
181*1da177e4SLinus Torvalds	  module will be called sch_tbf.
182*1da177e4SLinus Torvalds
183*1da177e4SLinus Torvaldsconfig NET_SCH_GRED
184*1da177e4SLinus Torvalds	tristate "GRED queue"
185*1da177e4SLinus Torvalds	depends on NET_SCHED
186*1da177e4SLinus Torvalds	help
187*1da177e4SLinus Torvalds	  Say Y here if you want to use the Generic Random Early Detection
188*1da177e4SLinus Torvalds	  (RED) packet scheduling algorithm for some of your network devices
189*1da177e4SLinus Torvalds	  (see the top of <file:net/sched/sch_red.c> for details and
190*1da177e4SLinus Torvalds	  references about the algorithm).
191*1da177e4SLinus Torvalds
192*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
193*1da177e4SLinus Torvalds	  module will be called sch_gred.
194*1da177e4SLinus Torvalds
195*1da177e4SLinus Torvaldsconfig NET_SCH_DSMARK
196*1da177e4SLinus Torvalds	tristate "Diffserv field marker"
197*1da177e4SLinus Torvalds	depends on NET_SCHED
198*1da177e4SLinus Torvalds	help
199*1da177e4SLinus Torvalds	  Say Y if you want to schedule packets according to the
200*1da177e4SLinus Torvalds	  Differentiated Services architecture proposed in RFC 2475.
201*1da177e4SLinus Torvalds	  Technical information on this method, with pointers to associated
202*1da177e4SLinus Torvalds	  RFCs, is available at <http://www.gta.ufrj.br/diffserv/>.
203*1da177e4SLinus Torvalds
204*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
205*1da177e4SLinus Torvalds	  module will be called sch_dsmark.
206*1da177e4SLinus Torvalds
207*1da177e4SLinus Torvaldsconfig NET_SCH_NETEM
208*1da177e4SLinus Torvalds	tristate "Network emulator"
209*1da177e4SLinus Torvalds	depends on NET_SCHED
210*1da177e4SLinus Torvalds	help
211*1da177e4SLinus Torvalds	  Say Y if you want to emulate network delay, loss, and packet
212*1da177e4SLinus Torvalds	  re-ordering. This is often useful to simulate networks when
213*1da177e4SLinus Torvalds	  testing applications or protocols.
214*1da177e4SLinus Torvalds
215*1da177e4SLinus Torvalds	  To compile this driver as a module, choose M here: the module
216*1da177e4SLinus Torvalds	  will be called sch_netem.
217*1da177e4SLinus Torvalds
218*1da177e4SLinus Torvalds	  If unsure, say N.
219*1da177e4SLinus Torvalds
220*1da177e4SLinus Torvaldsconfig NET_SCH_INGRESS
221*1da177e4SLinus Torvalds	tristate "Ingress Qdisc"
222*1da177e4SLinus Torvalds	depends on NET_SCHED
223*1da177e4SLinus Torvalds	help
224*1da177e4SLinus Torvalds	  If you say Y here, you will be able to police incoming bandwidth
225*1da177e4SLinus Torvalds	  and drop packets when this bandwidth exceeds your desired rate.
226*1da177e4SLinus Torvalds	  If unsure, say Y.
227*1da177e4SLinus Torvalds
228*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
229*1da177e4SLinus Torvalds	  module will be called sch_ingress.
230*1da177e4SLinus Torvalds
231*1da177e4SLinus Torvaldsconfig NET_QOS
232*1da177e4SLinus Torvalds	bool "QoS support"
233*1da177e4SLinus Torvalds	depends on NET_SCHED
234*1da177e4SLinus Torvalds	---help---
235*1da177e4SLinus Torvalds	  Say Y here if you want to include Quality Of Service scheduling
236*1da177e4SLinus Torvalds	  features, which means that you will be able to request certain
237*1da177e4SLinus Torvalds	  rate-of-flow limits for your network devices.
238*1da177e4SLinus Torvalds
239*1da177e4SLinus Torvalds	  This Quality of Service (QoS) support will enable you to use
240*1da177e4SLinus Torvalds	  Differentiated Services (diffserv) and Resource Reservation Protocol
241*1da177e4SLinus Torvalds	  (RSVP) on your Linux router if you also say Y to "Packet classifier
242*1da177e4SLinus Torvalds	  API" and to some classifiers below. Documentation and software is at
243*1da177e4SLinus Torvalds	  <http://diffserv.sourceforge.net/>.
244*1da177e4SLinus Torvalds
245*1da177e4SLinus Torvalds	  Note that the answer to this question won't directly affect the
246*1da177e4SLinus Torvalds	  kernel: saying N will just cause the configurator to skip all
247*1da177e4SLinus Torvalds	  the questions about QoS support.
248*1da177e4SLinus Torvalds
249*1da177e4SLinus Torvaldsconfig NET_ESTIMATOR
250*1da177e4SLinus Torvalds	bool "Rate estimator"
251*1da177e4SLinus Torvalds	depends on NET_QOS
252*1da177e4SLinus Torvalds	help
253*1da177e4SLinus Torvalds	  In order for Quality of Service scheduling to work, the current
254*1da177e4SLinus Torvalds	  rate-of-flow for a network device has to be estimated; if you say Y
255*1da177e4SLinus Torvalds	  here, the kernel will do just that.
256*1da177e4SLinus Torvalds
257*1da177e4SLinus Torvaldsconfig NET_CLS
258*1da177e4SLinus Torvalds	bool "Packet classifier API"
259*1da177e4SLinus Torvalds	depends on NET_SCHED
260*1da177e4SLinus Torvalds	---help---
261*1da177e4SLinus Torvalds	  The CBQ scheduling algorithm requires that network packets which are
262*1da177e4SLinus Torvalds	  scheduled to be sent out over a network device be classified
263*1da177e4SLinus Torvalds	  according to some criterion. If you say Y here, you will get a
264*1da177e4SLinus Torvalds	  choice of several different packet classifiers with the following
265*1da177e4SLinus Torvalds	  questions.
266*1da177e4SLinus Torvalds
267*1da177e4SLinus Torvalds	  This will enable you to use Differentiated Services (diffserv) and
268*1da177e4SLinus Torvalds	  Resource Reservation Protocol (RSVP) on your Linux router.
269*1da177e4SLinus Torvalds	  Documentation and software is at
270*1da177e4SLinus Torvalds	  <http://diffserv.sourceforge.net/>.
271*1da177e4SLinus Torvalds
272*1da177e4SLinus Torvaldsconfig NET_CLS_BASIC
273*1da177e4SLinus Torvalds	tristate "Basic classifier"
274*1da177e4SLinus Torvalds	depends on NET_CLS
275*1da177e4SLinus Torvalds	---help---
276*1da177e4SLinus Torvalds	  Say Y here if you want to be able to classify packets using
277*1da177e4SLinus Torvalds	  only extended matches and actions.
278*1da177e4SLinus Torvalds
279*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
280*1da177e4SLinus Torvalds	  module will be called cls_basic.
281*1da177e4SLinus Torvalds
282*1da177e4SLinus Torvaldsconfig NET_CLS_TCINDEX
283*1da177e4SLinus Torvalds	tristate "TC index classifier"
284*1da177e4SLinus Torvalds	depends on NET_CLS
285*1da177e4SLinus Torvalds	help
286*1da177e4SLinus Torvalds	  If you say Y here, you will be able to classify outgoing packets
287*1da177e4SLinus Torvalds	  according to the tc_index field of the skb. You will want this
288*1da177e4SLinus Torvalds	  feature if you want to implement Differentiated Services using
289*1da177e4SLinus Torvalds	  sch_dsmark. If unsure, say Y.
290*1da177e4SLinus Torvalds
291*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
292*1da177e4SLinus Torvalds	  module will be called cls_tcindex.
293*1da177e4SLinus Torvalds
294*1da177e4SLinus Torvaldsconfig NET_CLS_ROUTE4
295*1da177e4SLinus Torvalds	tristate "Routing table based classifier"
296*1da177e4SLinus Torvalds	depends on NET_CLS
297*1da177e4SLinus Torvalds	select NET_CLS_ROUTE
298*1da177e4SLinus Torvalds	help
299*1da177e4SLinus Torvalds	  If you say Y here, you will be able to classify outgoing packets
300*1da177e4SLinus Torvalds	  according to the route table entry they matched. If unsure, say Y.
301*1da177e4SLinus Torvalds
302*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
303*1da177e4SLinus Torvalds	  module will be called cls_route.
304*1da177e4SLinus Torvalds
305*1da177e4SLinus Torvaldsconfig NET_CLS_ROUTE
306*1da177e4SLinus Torvalds	bool
307*1da177e4SLinus Torvalds	default n
308*1da177e4SLinus Torvalds
309*1da177e4SLinus Torvaldsconfig NET_CLS_FW
310*1da177e4SLinus Torvalds	tristate "Firewall based classifier"
311*1da177e4SLinus Torvalds	depends on NET_CLS
312*1da177e4SLinus Torvalds	help
313*1da177e4SLinus Torvalds	  If you say Y here, you will be able to classify outgoing packets
314*1da177e4SLinus Torvalds	  according to firewall criteria you specified.
315*1da177e4SLinus Torvalds
316*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
317*1da177e4SLinus Torvalds	  module will be called cls_fw.
318*1da177e4SLinus Torvalds
319*1da177e4SLinus Torvaldsconfig NET_CLS_U32
320*1da177e4SLinus Torvalds	tristate "U32 classifier"
321*1da177e4SLinus Torvalds	depends on NET_CLS
322*1da177e4SLinus Torvalds	help
323*1da177e4SLinus Torvalds	  If you say Y here, you will be able to classify outgoing packets
324*1da177e4SLinus Torvalds	  according to their destination address. If unsure, say Y.
325*1da177e4SLinus Torvalds
326*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
327*1da177e4SLinus Torvalds	  module will be called cls_u32.
328*1da177e4SLinus Torvalds
329*1da177e4SLinus Torvaldsconfig CLS_U32_PERF
330*1da177e4SLinus Torvalds	bool "U32 classifier performance counters"
331*1da177e4SLinus Torvalds	depends on NET_CLS_U32
332*1da177e4SLinus Torvalds	help
333*1da177e4SLinus Torvalds	  gathers stats that could be used to tune u32 classifier performance.
334*1da177e4SLinus Torvalds	  Requires a new iproute2
335*1da177e4SLinus Torvalds	  You MUST NOT turn this on if you dont have an update iproute2.
336*1da177e4SLinus Torvalds
337*1da177e4SLinus Torvaldsconfig NET_CLS_IND
338*1da177e4SLinus Torvalds	bool "classify input device (slows things u32/fw) "
339*1da177e4SLinus Torvalds	depends on NET_CLS_U32 || NET_CLS_FW
340*1da177e4SLinus Torvalds	help
341*1da177e4SLinus Torvalds	  This option will be killed eventually when a
342*1da177e4SLinus Torvalds          metadata action appears because it slows things a little
343*1da177e4SLinus Torvalds          Available only for u32 and fw classifiers.
344*1da177e4SLinus Torvalds	  Requires a new iproute2
345*1da177e4SLinus Torvalds	  You MUST NOT turn this on if you dont have an update iproute2.
346*1da177e4SLinus Torvalds
347*1da177e4SLinus Torvaldsconfig CLS_U32_MARK
348*1da177e4SLinus Torvalds	bool "Use nfmark as a key in U32 classifier"
349*1da177e4SLinus Torvalds	depends on NET_CLS_U32 && NETFILTER
350*1da177e4SLinus Torvalds	help
351*1da177e4SLinus Torvalds	  This allows you to match mark in a u32 filter.
352*1da177e4SLinus Torvalds	  Example:
353*1da177e4SLinus Torvalds	  tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 \
354*1da177e4SLinus Torvalds		match mark 0x0090 0xffff \
355*1da177e4SLinus Torvalds		match ip dst 4.4.4.4 \
356*1da177e4SLinus Torvalds		flowid 1:90
357*1da177e4SLinus Torvalds	  You must use a new iproute2 to use this feature.
358*1da177e4SLinus Torvalds
359*1da177e4SLinus Torvaldsconfig NET_CLS_RSVP
360*1da177e4SLinus Torvalds	tristate "Special RSVP classifier"
361*1da177e4SLinus Torvalds	depends on NET_CLS && NET_QOS
362*1da177e4SLinus Torvalds	---help---
363*1da177e4SLinus Torvalds	  The Resource Reservation Protocol (RSVP) permits end systems to
364*1da177e4SLinus Torvalds	  request a minimum and maximum data flow rate for a connection; this
365*1da177e4SLinus Torvalds	  is important for real time data such as streaming sound or video.
366*1da177e4SLinus Torvalds
367*1da177e4SLinus Torvalds	  Say Y here if you want to be able to classify outgoing packets based
368*1da177e4SLinus Torvalds	  on their RSVP requests.
369*1da177e4SLinus Torvalds
370*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
371*1da177e4SLinus Torvalds	  module will be called cls_rsvp.
372*1da177e4SLinus Torvalds
373*1da177e4SLinus Torvaldsconfig NET_CLS_RSVP6
374*1da177e4SLinus Torvalds	tristate "Special RSVP classifier for IPv6"
375*1da177e4SLinus Torvalds	depends on NET_CLS && NET_QOS
376*1da177e4SLinus Torvalds	---help---
377*1da177e4SLinus Torvalds	  The Resource Reservation Protocol (RSVP) permits end systems to
378*1da177e4SLinus Torvalds	  request a minimum and maximum data flow rate for a connection; this
379*1da177e4SLinus Torvalds	  is important for real time data such as streaming sound or video.
380*1da177e4SLinus Torvalds
381*1da177e4SLinus Torvalds	  Say Y here if you want to be able to classify outgoing packets based
382*1da177e4SLinus Torvalds	  on their RSVP requests and you are using the new Internet Protocol
383*1da177e4SLinus Torvalds	  IPv6 as opposed to the older and more common IPv4.
384*1da177e4SLinus Torvalds
385*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
386*1da177e4SLinus Torvalds	  module will be called cls_rsvp6.
387*1da177e4SLinus Torvalds
388*1da177e4SLinus Torvaldsconfig NET_EMATCH
389*1da177e4SLinus Torvalds	bool "Extended Matches"
390*1da177e4SLinus Torvalds	depends on NET_CLS
391*1da177e4SLinus Torvalds	---help---
392*1da177e4SLinus Torvalds	  Say Y here if you want to use extended matches on top of classifiers
393*1da177e4SLinus Torvalds	  and select the extended matches below.
394*1da177e4SLinus Torvalds
395*1da177e4SLinus Torvalds	  Extended matches are small classification helpers not worth writing
396*1da177e4SLinus Torvalds	  a separate classifier.
397*1da177e4SLinus Torvalds
398*1da177e4SLinus Torvalds	  You must have a recent version of the iproute2 tools in order to use
399*1da177e4SLinus Torvalds	  extended matches.
400*1da177e4SLinus Torvalds
401*1da177e4SLinus Torvaldsconfig NET_EMATCH_STACK
402*1da177e4SLinus Torvalds	int "Stack size"
403*1da177e4SLinus Torvalds	depends on NET_EMATCH
404*1da177e4SLinus Torvalds	default "32"
405*1da177e4SLinus Torvalds	---help---
406*1da177e4SLinus Torvalds	  Size of the local stack variable used while evaluating the tree of
407*1da177e4SLinus Torvalds	  ematches. Limits the depth of the tree, i.e. the number of
408*1da177e4SLinus Torvalds	  encapsulated precedences. Every level requires 4 bytes of addtional
409*1da177e4SLinus Torvalds	  stack space.
410*1da177e4SLinus Torvalds
411*1da177e4SLinus Torvaldsconfig NET_EMATCH_CMP
412*1da177e4SLinus Torvalds	tristate "Simple packet data comparison"
413*1da177e4SLinus Torvalds	depends on NET_EMATCH
414*1da177e4SLinus Torvalds	---help---
415*1da177e4SLinus Torvalds	  Say Y here if you want to be able to classify packets based on
416*1da177e4SLinus Torvalds	  simple packet data comparisons for 8, 16, and 32bit values.
417*1da177e4SLinus Torvalds
418*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
419*1da177e4SLinus Torvalds	  module will be called em_cmp.
420*1da177e4SLinus Torvalds
421*1da177e4SLinus Torvaldsconfig NET_EMATCH_NBYTE
422*1da177e4SLinus Torvalds	tristate "Multi byte comparison"
423*1da177e4SLinus Torvalds	depends on NET_EMATCH
424*1da177e4SLinus Torvalds	---help---
425*1da177e4SLinus Torvalds	  Say Y here if you want to be able to classify packets based on
426*1da177e4SLinus Torvalds	  multiple byte comparisons mainly useful for IPv6 address comparisons.
427*1da177e4SLinus Torvalds
428*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
429*1da177e4SLinus Torvalds	  module will be called em_nbyte.
430*1da177e4SLinus Torvalds
431*1da177e4SLinus Torvaldsconfig NET_EMATCH_U32
432*1da177e4SLinus Torvalds	tristate "U32 hashing key"
433*1da177e4SLinus Torvalds	depends on NET_EMATCH
434*1da177e4SLinus Torvalds	---help---
435*1da177e4SLinus Torvalds	  Say Y here if you want to be able to classify packets using
436*1da177e4SLinus Torvalds	  the famous u32 key in combination with logic relations.
437*1da177e4SLinus Torvalds
438*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
439*1da177e4SLinus Torvalds	  module will be called em_u32.
440*1da177e4SLinus Torvalds
441*1da177e4SLinus Torvaldsconfig NET_EMATCH_META
442*1da177e4SLinus Torvalds	tristate "Metadata"
443*1da177e4SLinus Torvalds	depends on NET_EMATCH
444*1da177e4SLinus Torvalds	---help---
445*1da177e4SLinus Torvalds	  Say Y here if you want to be ablt to classify packets based on
446*1da177e4SLinus Torvalds	  metadata such as load average, netfilter attributes, socket
447*1da177e4SLinus Torvalds	  attributes and routing decisions.
448*1da177e4SLinus Torvalds
449*1da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
450*1da177e4SLinus Torvalds	  module will be called em_meta.
451*1da177e4SLinus Torvalds
452*1da177e4SLinus Torvaldsconfig NET_CLS_ACT
453*1da177e4SLinus Torvalds	bool "Packet ACTION"
454*1da177e4SLinus Torvalds	depends on EXPERIMENTAL && NET_CLS && NET_QOS
455*1da177e4SLinus Torvalds	---help---
456*1da177e4SLinus Torvalds	This option requires you have a new iproute2. It enables
457*1da177e4SLinus Torvalds	tc extensions which can be used with tc classifiers.
458*1da177e4SLinus Torvalds	  You MUST NOT turn this on if you dont have an update iproute2.
459*1da177e4SLinus Torvalds
460*1da177e4SLinus Torvaldsconfig NET_ACT_POLICE
461*1da177e4SLinus Torvalds	tristate "Policing Actions"
462*1da177e4SLinus Torvalds        depends on NET_CLS_ACT
463*1da177e4SLinus Torvalds        ---help---
464*1da177e4SLinus Torvalds        If you are using a newer iproute2 select this one, otherwise use one
465*1da177e4SLinus Torvalds	below to select a policer.
466*1da177e4SLinus Torvalds	  You MUST NOT turn this on if you dont have an update iproute2.
467*1da177e4SLinus Torvalds
468*1da177e4SLinus Torvaldsconfig NET_ACT_GACT
469*1da177e4SLinus Torvalds        tristate "generic Actions"
470*1da177e4SLinus Torvalds        depends on NET_CLS_ACT
471*1da177e4SLinus Torvalds        ---help---
472*1da177e4SLinus Torvalds        You must have new iproute2 to use this feature.
473*1da177e4SLinus Torvalds        This adds simple filtering actions like drop, accept etc.
474*1da177e4SLinus Torvalds
475*1da177e4SLinus Torvaldsconfig GACT_PROB
476*1da177e4SLinus Torvalds        bool "generic Actions probability"
477*1da177e4SLinus Torvalds        depends on NET_ACT_GACT
478*1da177e4SLinus Torvalds        ---help---
479*1da177e4SLinus Torvalds        Allows generic actions to be randomly or deterministically used.
480*1da177e4SLinus Torvalds
481*1da177e4SLinus Torvaldsconfig NET_ACT_MIRRED
482*1da177e4SLinus Torvalds        tristate "Packet In/Egress redirecton/mirror Actions"
483*1da177e4SLinus Torvalds        depends on NET_CLS_ACT
484*1da177e4SLinus Torvalds        ---help---
485*1da177e4SLinus Torvalds        requires new iproute2
486*1da177e4SLinus Torvalds        This allows packets to be mirrored or redirected to netdevices
487*1da177e4SLinus Torvalds
488*1da177e4SLinus Torvaldsconfig NET_ACT_IPT
489*1da177e4SLinus Torvalds        tristate "iptables Actions"
490*1da177e4SLinus Torvalds        depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
491*1da177e4SLinus Torvalds        ---help---
492*1da177e4SLinus Torvalds        requires new iproute2
493*1da177e4SLinus Torvalds        This allows iptables targets to be used by tc filters
494*1da177e4SLinus Torvalds
495*1da177e4SLinus Torvaldsconfig NET_ACT_PEDIT
496*1da177e4SLinus Torvalds        tristate "Generic Packet Editor Actions"
497*1da177e4SLinus Torvalds        depends on NET_CLS_ACT
498*1da177e4SLinus Torvalds        ---help---
499*1da177e4SLinus Torvalds        requires new iproute2
500*1da177e4SLinus Torvalds        This allows for packets to be generically edited
501*1da177e4SLinus Torvalds
502*1da177e4SLinus Torvaldsconfig NET_CLS_POLICE
503*1da177e4SLinus Torvalds	bool "Traffic policing (needed for in/egress)"
504*1da177e4SLinus Torvalds	depends on NET_CLS && NET_QOS && NET_CLS_ACT!=y
505*1da177e4SLinus Torvalds	help
506*1da177e4SLinus Torvalds	  Say Y to support traffic policing (bandwidth limits).  Needed for
507*1da177e4SLinus Torvalds	  ingress and egress rate limiting.
508*1da177e4SLinus Torvalds
509