Linux Audio

Check our new training course

Loading...
v3.5.6
 
  1#
  2# Traffic control configuration.
  3# 
  4
  5menuconfig NET_SCHED
  6	bool "QoS and/or fair queueing"
  7	select NET_SCH_FIFO
  8	---help---
  9	  When the kernel has several packets to send out over a network
 10	  device, it has to decide which ones to send first, which ones to
 11	  delay, and which ones to drop. This is the job of the queueing
 12	  disciplines, several different algorithms for how to do this
 13	  "fairly" have been proposed.
 14
 15	  If you say N here, you will get the standard packet scheduler, which
 16	  is a FIFO (first come, first served). If you say Y here, you will be
 17	  able to choose from among several alternative algorithms which can
 18	  then be attached to different network devices. This is useful for
 19	  example if some of your network devices are real time devices that
 20	  need a certain minimum data flow rate, or if you need to limit the
 21	  maximum data flow rate for traffic which matches specified criteria.
 22	  This code is considered to be experimental.
 23
 24	  To administer these schedulers, you'll need the user-level utilities
 25	  from the package iproute2+tc at <ftp://ftp.tux.org/pub/net/ip-routing/>.
 26	  That package also contains some documentation; for more, check out
 
 27	  <http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2>.
 28
 29	  This Quality of Service (QoS) support will enable you to use
 30	  Differentiated Services (diffserv) and Resource Reservation Protocol
 31	  (RSVP) on your Linux router if you also say Y to the corresponding
 32	  classifiers below.  Documentation and software is at
 33	  <http://diffserv.sourceforge.net/>.
 34
 35	  If you say Y here and to "/proc file system" below, you will be able
 36	  to read status information about packet schedulers from the file
 37	  /proc/net/psched.
 38
 39	  The available schedulers are listed in the following questions; you
 40	  can say Y to as many as you like. If unsure, say N now.
 41
 42if NET_SCHED
 43
 44comment "Queueing/Scheduling"
 45
 46config NET_SCH_CBQ
 47	tristate "Class Based Queueing (CBQ)"
 48	---help---
 49	  Say Y here if you want to use the Class-Based Queueing (CBQ) packet
 50	  scheduling algorithm. This algorithm classifies the waiting packets
 51	  into a tree-like hierarchy of classes; the leaves of this tree are
 52	  in turn scheduled by separate algorithms.
 53
 54	  See the top of <file:net/sched/sch_cbq.c> for more details.
 55
 56	  CBQ is a commonly used scheduler, so if you're unsure, you should
 57	  say Y here. Then say Y to all the queueing algorithms below that you
 58	  want to use as leaf disciplines.
 59
 60	  To compile this code as a module, choose M here: the
 61	  module will be called sch_cbq.
 62
 63config NET_SCH_HTB
 64	tristate "Hierarchical Token Bucket (HTB)"
 65	---help---
 66	  Say Y here if you want to use the Hierarchical Token Buckets (HTB)
 67	  packet scheduling algorithm. See
 68	  <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and
 69	  in-depth articles.
 70
 71	  HTB is very similar to CBQ regarding its goals however is has
 72	  different properties and different algorithm.
 73
 74	  To compile this code as a module, choose M here: the
 75	  module will be called sch_htb.
 76
 77config NET_SCH_HFSC
 78	tristate "Hierarchical Fair Service Curve (HFSC)"
 79	---help---
 80	  Say Y here if you want to use the Hierarchical Fair Service Curve
 81	  (HFSC) packet scheduling algorithm.
 82
 83	  To compile this code as a module, choose M here: the
 84	  module will be called sch_hfsc.
 85
 86config NET_SCH_ATM
 87	tristate "ATM Virtual Circuits (ATM)"
 88	depends on ATM
 89	---help---
 90	  Say Y here if you want to use the ATM pseudo-scheduler.  This
 91	  provides a framework for invoking classifiers, which in turn
 92	  select classes of this queuing discipline.  Each class maps
 93	  the flow(s) it is handling to a given virtual circuit.
 94
 95	  See the top of <file:net/sched/sch_atm.c> for more details.
 96
 97	  To compile this code as a module, choose M here: the
 98	  module will be called sch_atm.
 99
100config NET_SCH_PRIO
101	tristate "Multi Band Priority Queueing (PRIO)"
102	---help---
103	  Say Y here if you want to use an n-band priority queue packet
104	  scheduler.
105
106	  To compile this code as a module, choose M here: the
107	  module will be called sch_prio.
108
109config NET_SCH_MULTIQ
110	tristate "Hardware Multiqueue-aware Multi Band Queuing (MULTIQ)"
111	---help---
112	  Say Y here if you want to use an n-band queue packet scheduler
113	  to support devices that have multiple hardware transmit queues.
114
115	  To compile this code as a module, choose M here: the
116	  module will be called sch_multiq.
117
118config NET_SCH_RED
119	tristate "Random Early Detection (RED)"
120	---help---
121	  Say Y here if you want to use the Random Early Detection (RED)
122	  packet scheduling algorithm.
123
124	  See the top of <file:net/sched/sch_red.c> for more details.
125
126	  To compile this code as a module, choose M here: the
127	  module will be called sch_red.
128
129config NET_SCH_SFB
130	tristate "Stochastic Fair Blue (SFB)"
131	---help---
132	  Say Y here if you want to use the Stochastic Fair Blue (SFB)
133	  packet scheduling algorithm.
134
135	  See the top of <file:net/sched/sch_sfb.c> for more details.
136
137	  To compile this code as a module, choose M here: the
138	  module will be called sch_sfb.
139
140config NET_SCH_SFQ
141	tristate "Stochastic Fairness Queueing (SFQ)"
142	---help---
143	  Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
144	  packet scheduling algorithm.
145
146	  See the top of <file:net/sched/sch_sfq.c> for more details.
147
148	  To compile this code as a module, choose M here: the
149	  module will be called sch_sfq.
150
151config NET_SCH_TEQL
152	tristate "True Link Equalizer (TEQL)"
153	---help---
154	  Say Y here if you want to use the True Link Equalizer (TLE) packet
155	  scheduling algorithm. This queueing discipline allows the combination
156	  of several physical devices into one virtual device.
157
158	  See the top of <file:net/sched/sch_teql.c> for more details.
159
160	  To compile this code as a module, choose M here: the
161	  module will be called sch_teql.
162
163config NET_SCH_TBF
164	tristate "Token Bucket Filter (TBF)"
165	---help---
166	  Say Y here if you want to use the Token Bucket Filter (TBF) packet
167	  scheduling algorithm.
168
169	  See the top of <file:net/sched/sch_tbf.c> for more details.
170
171	  To compile this code as a module, choose M here: the
172	  module will be called sch_tbf.
173
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174config NET_SCH_GRED
175	tristate "Generic Random Early Detection (GRED)"
176	---help---
177	  Say Y here if you want to use the Generic Random Early Detection
178	  (GRED) packet scheduling algorithm for some of your network devices
179	  (see the top of <file:net/sched/sch_red.c> for details and
180	  references about the algorithm).
181
182	  To compile this code as a module, choose M here: the
183	  module will be called sch_gred.
184
185config NET_SCH_DSMARK
186	tristate "Differentiated Services marker (DSMARK)"
187	---help---
188	  Say Y if you want to schedule packets according to the
189	  Differentiated Services architecture proposed in RFC 2475.
190	  Technical information on this method, with pointers to associated
191	  RFCs, is available at <http://www.gta.ufrj.br/diffserv/>.
192
193	  To compile this code as a module, choose M here: the
194	  module will be called sch_dsmark.
195
196config NET_SCH_NETEM
197	tristate "Network emulator (NETEM)"
198	---help---
199	  Say Y if you want to emulate network delay, loss, and packet
200	  re-ordering. This is often useful to simulate networks when
201	  testing applications or protocols.
202
203	  To compile this driver as a module, choose M here: the module
204	  will be called sch_netem.
205
206	  If unsure, say N.
207
208config NET_SCH_DRR
209	tristate "Deficit Round Robin scheduler (DRR)"
210	help
211	  Say Y here if you want to use the Deficit Round Robin (DRR) packet
212	  scheduling algorithm.
213
214	  To compile this driver as a module, choose M here: the module
215	  will be called sch_drr.
216
217	  If unsure, say N.
218
219config NET_SCH_MQPRIO
220	tristate "Multi-queue priority scheduler (MQPRIO)"
221	help
222	  Say Y here if you want to use the Multi-queue Priority scheduler.
223	  This scheduler allows QOS to be offloaded on NICs that have support
224	  for offloading QOS schedulers.
225
226	  To compile this driver as a module, choose M here: the module will
227	  be called sch_mqprio.
228
229	  If unsure, say N.
230
 
 
 
 
 
 
 
 
 
 
 
 
 
231config NET_SCH_CHOKE
232	tristate "CHOose and Keep responsive flow scheduler (CHOKE)"
233	help
234	  Say Y here if you want to use the CHOKe packet scheduler (CHOose
235	  and Keep for responsive flows, CHOose and Kill for unresponsive
236	  flows). This is a variation of RED which trys to penalize flows
237	  that monopolize the queue.
238
239	  To compile this code as a module, choose M here: the
240	  module will be called sch_choke.
241
242config NET_SCH_QFQ
243	tristate "Quick Fair Queueing scheduler (QFQ)"
244	help
245	  Say Y here if you want to use the Quick Fair Queueing Scheduler (QFQ)
246	  packet scheduling algorithm.
247
248	  To compile this driver as a module, choose M here: the module
249	  will be called sch_qfq.
250
251	  If unsure, say N.
252
253config NET_SCH_CODEL
254	tristate "Controlled Delay AQM (CODEL)"
255	help
256	  Say Y here if you want to use the Controlled Delay (CODEL)
257	  packet scheduling algorithm.
258
259	  To compile this driver as a module, choose M here: the module
260	  will be called sch_codel.
261
262	  If unsure, say N.
263
264config NET_SCH_FQ_CODEL
265	tristate "Fair Queue Controlled Delay AQM (FQ_CODEL)"
266	help
267	  Say Y here if you want to use the FQ Controlled Delay (FQ_CODEL)
268	  packet scheduling algorithm.
269
270	  To compile this driver as a module, choose M here: the module
271	  will be called sch_fq_codel.
272
273	  If unsure, say N.
274
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
275config NET_SCH_INGRESS
276	tristate "Ingress Qdisc"
277	depends on NET_CLS_ACT
278	---help---
279	  Say Y here if you want to use classifiers for incoming packets.
 
 
 
 
 
 
 
280	  If unsure, say Y.
281
282	  To compile this code as a module, choose M here: the
283	  module will be called sch_ingress.
284
285config NET_SCH_PLUG
286	tristate "Plug network traffic until release (PLUG)"
287	---help---
288
289	  This queuing discipline allows userspace to plug/unplug a network
290	  output queue, using the netlink interface.  When it receives an
291	  enqueue command it inserts a plug into the outbound queue that
292	  causes following packets to enqueue until a dequeue command arrives
293	  over netlink, causing the plug to be removed and resuming the normal
294	  packet flow.
295
296	  This module also provides a generic "network output buffering"
297	  functionality (aka output commit), wherein upon arrival of a dequeue
298	  command, only packets up to the first plug are released for delivery.
299	  The Remus HA project uses this module to enable speculative execution
300	  of virtual machines by allowing the generated network output to be rolled
301	  back if needed.
302
303	  For more information, please refer to http://wiki.xensource.com/xenwiki/Remus
304
305	  Say Y here if you are using this kernel for Xen dom0 and
306	  want to protect Xen guests with Remus.
307
308	  To compile this code as a module, choose M here: the
309	  module will be called sch_plug.
310
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
311comment "Classification"
312
313config NET_CLS
314	boolean
315
316config NET_CLS_BASIC
317	tristate "Elementary classification (BASIC)"
318	select NET_CLS
319	---help---
320	  Say Y here if you want to be able to classify packets using
321	  only extended matches and actions.
322
323	  To compile this code as a module, choose M here: the
324	  module will be called cls_basic.
325
326config NET_CLS_TCINDEX
327	tristate "Traffic-Control Index (TCINDEX)"
328	select NET_CLS
329	---help---
330	  Say Y here if you want to be able to classify packets based on
331	  traffic control indices. You will want this feature if you want
332	  to implement Differentiated Services together with DSMARK.
333
334	  To compile this code as a module, choose M here: the
335	  module will be called cls_tcindex.
336
337config NET_CLS_ROUTE4
338	tristate "Routing decision (ROUTE)"
339	depends on INET
340	select IP_ROUTE_CLASSID
341	select NET_CLS
342	---help---
343	  If you say Y here, you will be able to classify packets
344	  according to the route table entry they matched.
345
346	  To compile this code as a module, choose M here: the
347	  module will be called cls_route.
348
349config NET_CLS_FW
350	tristate "Netfilter mark (FW)"
351	select NET_CLS
352	---help---
353	  If you say Y here, you will be able to classify packets
354	  according to netfilter/firewall marks.
355
356	  To compile this code as a module, choose M here: the
357	  module will be called cls_fw.
358
359config NET_CLS_U32
360	tristate "Universal 32bit comparisons w/ hashing (U32)"
361	select NET_CLS
362	---help---
363	  Say Y here to be able to classify packets using a universal
364	  32bit pieces based comparison scheme.
365
366	  To compile this code as a module, choose M here: the
367	  module will be called cls_u32.
368
369config CLS_U32_PERF
370	bool "Performance counters support"
371	depends on NET_CLS_U32
372	---help---
373	  Say Y here to make u32 gather additional statistics useful for
374	  fine tuning u32 classifiers.
375
376config CLS_U32_MARK
377	bool "Netfilter marks support"
378	depends on NET_CLS_U32
379	---help---
380	  Say Y here to be able to use netfilter marks as u32 key.
381
382config NET_CLS_RSVP
383	tristate "IPv4 Resource Reservation Protocol (RSVP)"
384	select NET_CLS
385	---help---
386	  The Resource Reservation Protocol (RSVP) permits end systems to
387	  request a minimum and maximum data flow rate for a connection; this
388	  is important for real time data such as streaming sound or video.
389
390	  Say Y here if you want to be able to classify outgoing packets based
391	  on their RSVP requests.
392
393	  To compile this code as a module, choose M here: the
394	  module will be called cls_rsvp.
395
396config NET_CLS_RSVP6
397	tristate "IPv6 Resource Reservation Protocol (RSVP6)"
398	select NET_CLS
399	---help---
400	  The Resource Reservation Protocol (RSVP) permits end systems to
401	  request a minimum and maximum data flow rate for a connection; this
402	  is important for real time data such as streaming sound or video.
403
404	  Say Y here if you want to be able to classify outgoing packets based
405	  on their RSVP requests and you are using the IPv6 protocol.
406
407	  To compile this code as a module, choose M here: the
408	  module will be called cls_rsvp6.
409
410config NET_CLS_FLOW
411	tristate "Flow classifier"
412	select NET_CLS
413	---help---
414	  If you say Y here, you will be able to classify packets based on
415	  a configurable combination of packet keys. This is mostly useful
416	  in combination with SFQ.
417
418	  To compile this code as a module, choose M here: the
419	  module will be called cls_flow.
420
421config NET_CLS_CGROUP
422	tristate "Control Group Classifier"
423	select NET_CLS
 
424	depends on CGROUPS
425	---help---
426	  Say Y here if you want to classify packets based on the control
427	  cgroup of their process.
428
429	  To compile this code as a module, choose M here: the
430	  module will be called cls_cgroup.
431
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
432config NET_EMATCH
433	bool "Extended Matches"
434	select NET_CLS
435	---help---
436	  Say Y here if you want to use extended matches on top of classifiers
437	  and select the extended matches below.
438
439	  Extended matches are small classification helpers not worth writing
440	  a separate classifier for.
441
442	  A recent version of the iproute2 package is required to use
443	  extended matches.
444
445config NET_EMATCH_STACK
446	int "Stack size"
447	depends on NET_EMATCH
448	default "32"
449	---help---
450	  Size of the local stack variable used while evaluating the tree of
451	  ematches. Limits the depth of the tree, i.e. the number of
452	  encapsulated precedences. Every level requires 4 bytes of additional
453	  stack space.
454
455config NET_EMATCH_CMP
456	tristate "Simple packet data comparison"
457	depends on NET_EMATCH
458	---help---
459	  Say Y here if you want to be able to classify packets based on
460	  simple packet data comparisons for 8, 16, and 32bit values.
461
462	  To compile this code as a module, choose M here: the
463	  module will be called em_cmp.
464
465config NET_EMATCH_NBYTE
466	tristate "Multi byte comparison"
467	depends on NET_EMATCH
468	---help---
469	  Say Y here if you want to be able to classify packets based on
470	  multiple byte comparisons mainly useful for IPv6 address comparisons.
471
472	  To compile this code as a module, choose M here: the
473	  module will be called em_nbyte.
474
475config NET_EMATCH_U32
476	tristate "U32 key"
477	depends on NET_EMATCH
478	---help---
479	  Say Y here if you want to be able to classify packets using
480	  the famous u32 key in combination with logic relations.
481
482	  To compile this code as a module, choose M here: the
483	  module will be called em_u32.
484
485config NET_EMATCH_META
486	tristate "Metadata"
487	depends on NET_EMATCH
488	---help---
489	  Say Y here if you want to be able to classify packets based on
490	  metadata such as load average, netfilter attributes, socket
491	  attributes and routing decisions.
492
493	  To compile this code as a module, choose M here: the
494	  module will be called em_meta.
495
496config NET_EMATCH_TEXT
497	tristate "Textsearch"
498	depends on NET_EMATCH
499	select TEXTSEARCH
500	select TEXTSEARCH_KMP
501	select TEXTSEARCH_BM
502	select TEXTSEARCH_FSM
503	---help---
504	  Say Y here if you want to be able to classify packets based on
505	  textsearch comparisons.
506
507	  To compile this code as a module, choose M here: the
508	  module will be called em_text.
509
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
510config NET_CLS_ACT
511	bool "Actions"
512	---help---
 
513	  Say Y here if you want to use traffic control actions. Actions
514	  get attached to classifiers and are invoked after a successful
515	  classification. They are used to overwrite the classification
516	  result, instantly drop or redirect packets, etc.
517
518	  A recent version of the iproute2 package is required to use
519	  extended matches.
520
521config NET_ACT_POLICE
522	tristate "Traffic Policing"
523        depends on NET_CLS_ACT 
524        ---help---
525	  Say Y here if you want to do traffic policing, i.e. strict
526	  bandwidth limiting. This action replaces the existing policing
527	  module.
528
529	  To compile this code as a module, choose M here: the
530	  module will be called act_police.
531
532config NET_ACT_GACT
533        tristate "Generic actions"
534        depends on NET_CLS_ACT
535        ---help---
536	  Say Y here to take generic actions such as dropping and
537	  accepting packets.
538
539	  To compile this code as a module, choose M here: the
540	  module will be called act_gact.
541
542config GACT_PROB
543        bool "Probability support"
544        depends on NET_ACT_GACT
545        ---help---
546	  Say Y here to use the generic action randomly or deterministically.
547
548config NET_ACT_MIRRED
549        tristate "Redirecting and Mirroring"
550        depends on NET_CLS_ACT
551        ---help---
552	  Say Y here to allow packets to be mirrored or redirected to
553	  other devices.
554
555	  To compile this code as a module, choose M here: the
556	  module will be called act_mirred.
557
 
 
 
 
 
 
 
 
 
 
 
 
558config NET_ACT_IPT
559        tristate "IPtables targets"
560        depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
561        ---help---
562	  Say Y here to be able to invoke iptables targets after successful
563	  classification.
564
565	  To compile this code as a module, choose M here: the
566	  module will be called act_ipt.
567
568config NET_ACT_NAT
569        tristate "Stateless NAT"
570        depends on NET_CLS_ACT
571        ---help---
572	  Say Y here to do stateless NAT on IPv4 packets.  You should use
573	  netfilter for NAT unless you know what you are doing.
574
575	  To compile this code as a module, choose M here: the
576	  module will be called act_nat.
577
578config NET_ACT_PEDIT
579        tristate "Packet Editing"
580        depends on NET_CLS_ACT
581        ---help---
582	  Say Y here if you want to mangle the content of packets.
583
584	  To compile this code as a module, choose M here: the
585	  module will be called act_pedit.
586
587config NET_ACT_SIMP
588        tristate "Simple Example (Debug)"
589        depends on NET_CLS_ACT
590        ---help---
591	  Say Y here to add a simple action for demonstration purposes.
592	  It is meant as an example and for debugging purposes. It will
593	  print a configured policy string followed by the packet count
594	  to the console for every packet that passes by.
595
596	  If unsure, say N.
597
598	  To compile this code as a module, choose M here: the
599	  module will be called act_simple.
600
601config NET_ACT_SKBEDIT
602        tristate "SKB Editing"
603        depends on NET_CLS_ACT
604        ---help---
605	  Say Y here to change skb priority or queue_mapping settings.
606
607	  If unsure, say N.
608
609	  To compile this code as a module, choose M here: the
610	  module will be called act_skbedit.
611
612config NET_ACT_CSUM
613        tristate "Checksum Updating"
614        depends on NET_CLS_ACT && INET
615        ---help---
 
616	  Say Y here to update some common checksum after some direct
617	  packet alterations.
618
619	  To compile this code as a module, choose M here: the
620	  module will be called act_csum.
621
622config NET_CLS_IND
623	bool "Incoming device classification"
624	depends on NET_CLS_U32 || NET_CLS_FW
625	---help---
626	  Say Y here to extend the u32 and fw classifier to support
627	  classification based on the incoming device. This option is
628	  likely to disappear in favour of the metadata ematch.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
629
630endif # NET_SCHED
631
632config NET_SCH_FIFO
633	bool
v5.14.15
   1# SPDX-License-Identifier: GPL-2.0-only
   2#
   3# Traffic control configuration.
   4#
   5
   6menuconfig NET_SCHED
   7	bool "QoS and/or fair queueing"
   8	select NET_SCH_FIFO
   9	help
  10	  When the kernel has several packets to send out over a network
  11	  device, it has to decide which ones to send first, which ones to
  12	  delay, and which ones to drop. This is the job of the queueing
  13	  disciplines, several different algorithms for how to do this
  14	  "fairly" have been proposed.
  15
  16	  If you say N here, you will get the standard packet scheduler, which
  17	  is a FIFO (first come, first served). If you say Y here, you will be
  18	  able to choose from among several alternative algorithms which can
  19	  then be attached to different network devices. This is useful for
  20	  example if some of your network devices are real time devices that
  21	  need a certain minimum data flow rate, or if you need to limit the
  22	  maximum data flow rate for traffic which matches specified criteria.
  23	  This code is considered to be experimental.
  24
  25	  To administer these schedulers, you'll need the user-level utilities
  26	  from the package iproute2+tc at
  27	  <https://www.kernel.org/pub/linux/utils/net/iproute2/>.  That package
  28	  also contains some documentation; for more, check out
  29	  <http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2>.
  30
  31	  This Quality of Service (QoS) support will enable you to use
  32	  Differentiated Services (diffserv) and Resource Reservation Protocol
  33	  (RSVP) on your Linux router if you also say Y to the corresponding
  34	  classifiers below.  Documentation and software is at
  35	  <http://diffserv.sourceforge.net/>.
  36
  37	  If you say Y here and to "/proc file system" below, you will be able
  38	  to read status information about packet schedulers from the file
  39	  /proc/net/psched.
  40
  41	  The available schedulers are listed in the following questions; you
  42	  can say Y to as many as you like. If unsure, say N now.
  43
  44if NET_SCHED
  45
  46comment "Queueing/Scheduling"
  47
  48config NET_SCH_CBQ
  49	tristate "Class Based Queueing (CBQ)"
  50	help
  51	  Say Y here if you want to use the Class-Based Queueing (CBQ) packet
  52	  scheduling algorithm. This algorithm classifies the waiting packets
  53	  into a tree-like hierarchy of classes; the leaves of this tree are
  54	  in turn scheduled by separate algorithms.
  55
  56	  See the top of <file:net/sched/sch_cbq.c> for more details.
  57
  58	  CBQ is a commonly used scheduler, so if you're unsure, you should
  59	  say Y here. Then say Y to all the queueing algorithms below that you
  60	  want to use as leaf disciplines.
  61
  62	  To compile this code as a module, choose M here: the
  63	  module will be called sch_cbq.
  64
  65config NET_SCH_HTB
  66	tristate "Hierarchical Token Bucket (HTB)"
  67	help
  68	  Say Y here if you want to use the Hierarchical Token Buckets (HTB)
  69	  packet scheduling algorithm. See
  70	  <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and
  71	  in-depth articles.
  72
  73	  HTB is very similar to CBQ regarding its goals however is has
  74	  different properties and different algorithm.
  75
  76	  To compile this code as a module, choose M here: the
  77	  module will be called sch_htb.
  78
  79config NET_SCH_HFSC
  80	tristate "Hierarchical Fair Service Curve (HFSC)"
  81	help
  82	  Say Y here if you want to use the Hierarchical Fair Service Curve
  83	  (HFSC) packet scheduling algorithm.
  84
  85	  To compile this code as a module, choose M here: the
  86	  module will be called sch_hfsc.
  87
  88config NET_SCH_ATM
  89	tristate "ATM Virtual Circuits (ATM)"
  90	depends on ATM
  91	help
  92	  Say Y here if you want to use the ATM pseudo-scheduler.  This
  93	  provides a framework for invoking classifiers, which in turn
  94	  select classes of this queuing discipline.  Each class maps
  95	  the flow(s) it is handling to a given virtual circuit.
  96
  97	  See the top of <file:net/sched/sch_atm.c> for more details.
  98
  99	  To compile this code as a module, choose M here: the
 100	  module will be called sch_atm.
 101
 102config NET_SCH_PRIO
 103	tristate "Multi Band Priority Queueing (PRIO)"
 104	help
 105	  Say Y here if you want to use an n-band priority queue packet
 106	  scheduler.
 107
 108	  To compile this code as a module, choose M here: the
 109	  module will be called sch_prio.
 110
 111config NET_SCH_MULTIQ
 112	tristate "Hardware Multiqueue-aware Multi Band Queuing (MULTIQ)"
 113	help
 114	  Say Y here if you want to use an n-band queue packet scheduler
 115	  to support devices that have multiple hardware transmit queues.
 116
 117	  To compile this code as a module, choose M here: the
 118	  module will be called sch_multiq.
 119
 120config NET_SCH_RED
 121	tristate "Random Early Detection (RED)"
 122	help
 123	  Say Y here if you want to use the Random Early Detection (RED)
 124	  packet scheduling algorithm.
 125
 126	  See the top of <file:net/sched/sch_red.c> for more details.
 127
 128	  To compile this code as a module, choose M here: the
 129	  module will be called sch_red.
 130
 131config NET_SCH_SFB
 132	tristate "Stochastic Fair Blue (SFB)"
 133	help
 134	  Say Y here if you want to use the Stochastic Fair Blue (SFB)
 135	  packet scheduling algorithm.
 136
 137	  See the top of <file:net/sched/sch_sfb.c> for more details.
 138
 139	  To compile this code as a module, choose M here: the
 140	  module will be called sch_sfb.
 141
 142config NET_SCH_SFQ
 143	tristate "Stochastic Fairness Queueing (SFQ)"
 144	help
 145	  Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
 146	  packet scheduling algorithm.
 147
 148	  See the top of <file:net/sched/sch_sfq.c> for more details.
 149
 150	  To compile this code as a module, choose M here: the
 151	  module will be called sch_sfq.
 152
 153config NET_SCH_TEQL
 154	tristate "True Link Equalizer (TEQL)"
 155	help
 156	  Say Y here if you want to use the True Link Equalizer (TLE) packet
 157	  scheduling algorithm. This queueing discipline allows the combination
 158	  of several physical devices into one virtual device.
 159
 160	  See the top of <file:net/sched/sch_teql.c> for more details.
 161
 162	  To compile this code as a module, choose M here: the
 163	  module will be called sch_teql.
 164
 165config NET_SCH_TBF
 166	tristate "Token Bucket Filter (TBF)"
 167	help
 168	  Say Y here if you want to use the Token Bucket Filter (TBF) packet
 169	  scheduling algorithm.
 170
 171	  See the top of <file:net/sched/sch_tbf.c> for more details.
 172
 173	  To compile this code as a module, choose M here: the
 174	  module will be called sch_tbf.
 175
 176config NET_SCH_CBS
 177	tristate "Credit Based Shaper (CBS)"
 178	help
 179	  Say Y here if you want to use the Credit Based Shaper (CBS) packet
 180	  scheduling algorithm.
 181
 182	  See the top of <file:net/sched/sch_cbs.c> for more details.
 183
 184	  To compile this code as a module, choose M here: the
 185	  module will be called sch_cbs.
 186
 187config NET_SCH_ETF
 188	tristate "Earliest TxTime First (ETF)"
 189	help
 190	  Say Y here if you want to use the Earliest TxTime First (ETF) packet
 191	  scheduling algorithm.
 192
 193	  See the top of <file:net/sched/sch_etf.c> for more details.
 194
 195	  To compile this code as a module, choose M here: the
 196	  module will be called sch_etf.
 197
 198config NET_SCH_TAPRIO
 199	tristate "Time Aware Priority (taprio) Scheduler"
 200	help
 201	  Say Y here if you want to use the Time Aware Priority (taprio) packet
 202	  scheduling algorithm.
 203
 204	  See the top of <file:net/sched/sch_taprio.c> for more details.
 205
 206	  To compile this code as a module, choose M here: the
 207	  module will be called sch_taprio.
 208
 209config NET_SCH_GRED
 210	tristate "Generic Random Early Detection (GRED)"
 211	help
 212	  Say Y here if you want to use the Generic Random Early Detection
 213	  (GRED) packet scheduling algorithm for some of your network devices
 214	  (see the top of <file:net/sched/sch_red.c> for details and
 215	  references about the algorithm).
 216
 217	  To compile this code as a module, choose M here: the
 218	  module will be called sch_gred.
 219
 220config NET_SCH_DSMARK
 221	tristate "Differentiated Services marker (DSMARK)"
 222	help
 223	  Say Y if you want to schedule packets according to the
 224	  Differentiated Services architecture proposed in RFC 2475.
 225	  Technical information on this method, with pointers to associated
 226	  RFCs, is available at <http://www.gta.ufrj.br/diffserv/>.
 227
 228	  To compile this code as a module, choose M here: the
 229	  module will be called sch_dsmark.
 230
 231config NET_SCH_NETEM
 232	tristate "Network emulator (NETEM)"
 233	help
 234	  Say Y if you want to emulate network delay, loss, and packet
 235	  re-ordering. This is often useful to simulate networks when
 236	  testing applications or protocols.
 237
 238	  To compile this driver as a module, choose M here: the module
 239	  will be called sch_netem.
 240
 241	  If unsure, say N.
 242
 243config NET_SCH_DRR
 244	tristate "Deficit Round Robin scheduler (DRR)"
 245	help
 246	  Say Y here if you want to use the Deficit Round Robin (DRR) packet
 247	  scheduling algorithm.
 248
 249	  To compile this driver as a module, choose M here: the module
 250	  will be called sch_drr.
 251
 252	  If unsure, say N.
 253
 254config NET_SCH_MQPRIO
 255	tristate "Multi-queue priority scheduler (MQPRIO)"
 256	help
 257	  Say Y here if you want to use the Multi-queue Priority scheduler.
 258	  This scheduler allows QOS to be offloaded on NICs that have support
 259	  for offloading QOS schedulers.
 260
 261	  To compile this driver as a module, choose M here: the module will
 262	  be called sch_mqprio.
 263
 264	  If unsure, say N.
 265
 266config NET_SCH_SKBPRIO
 267	tristate "SKB priority queue scheduler (SKBPRIO)"
 268	help
 269	  Say Y here if you want to use the SKB priority queue
 270	  scheduler. This schedules packets according to skb->priority,
 271	  which is useful for request packets in DoS mitigation systems such
 272	  as Gatekeeper.
 273
 274	  To compile this driver as a module, choose M here: the module will
 275	  be called sch_skbprio.
 276
 277	  If unsure, say N.
 278
 279config NET_SCH_CHOKE
 280	tristate "CHOose and Keep responsive flow scheduler (CHOKE)"
 281	help
 282	  Say Y here if you want to use the CHOKe packet scheduler (CHOose
 283	  and Keep for responsive flows, CHOose and Kill for unresponsive
 284	  flows). This is a variation of RED which tries to penalize flows
 285	  that monopolize the queue.
 286
 287	  To compile this code as a module, choose M here: the
 288	  module will be called sch_choke.
 289
 290config NET_SCH_QFQ
 291	tristate "Quick Fair Queueing scheduler (QFQ)"
 292	help
 293	  Say Y here if you want to use the Quick Fair Queueing Scheduler (QFQ)
 294	  packet scheduling algorithm.
 295
 296	  To compile this driver as a module, choose M here: the module
 297	  will be called sch_qfq.
 298
 299	  If unsure, say N.
 300
 301config NET_SCH_CODEL
 302	tristate "Controlled Delay AQM (CODEL)"
 303	help
 304	  Say Y here if you want to use the Controlled Delay (CODEL)
 305	  packet scheduling algorithm.
 306
 307	  To compile this driver as a module, choose M here: the module
 308	  will be called sch_codel.
 309
 310	  If unsure, say N.
 311
 312config NET_SCH_FQ_CODEL
 313	tristate "Fair Queue Controlled Delay AQM (FQ_CODEL)"
 314	help
 315	  Say Y here if you want to use the FQ Controlled Delay (FQ_CODEL)
 316	  packet scheduling algorithm.
 317
 318	  To compile this driver as a module, choose M here: the module
 319	  will be called sch_fq_codel.
 320
 321	  If unsure, say N.
 322
 323config NET_SCH_CAKE
 324	tristate "Common Applications Kept Enhanced (CAKE)"
 325	help
 326	  Say Y here if you want to use the Common Applications Kept Enhanced
 327	  (CAKE) queue management algorithm.
 328
 329	  To compile this driver as a module, choose M here: the module
 330	  will be called sch_cake.
 331
 332	  If unsure, say N.
 333
 334config NET_SCH_FQ
 335	tristate "Fair Queue"
 336	help
 337	  Say Y here if you want to use the FQ packet scheduling algorithm.
 338
 339	  FQ does flow separation, and is able to respect pacing requirements
 340	  set by TCP stack into sk->sk_pacing_rate (for localy generated
 341	  traffic)
 342
 343	  To compile this driver as a module, choose M here: the module
 344	  will be called sch_fq.
 345
 346	  If unsure, say N.
 347
 348config NET_SCH_HHF
 349	tristate "Heavy-Hitter Filter (HHF)"
 350	help
 351	  Say Y here if you want to use the Heavy-Hitter Filter (HHF)
 352	  packet scheduling algorithm.
 353
 354	  To compile this driver as a module, choose M here: the module
 355	  will be called sch_hhf.
 356
 357config NET_SCH_PIE
 358	tristate "Proportional Integral controller Enhanced (PIE) scheduler"
 359	help
 360	  Say Y here if you want to use the Proportional Integral controller
 361	  Enhanced scheduler packet scheduling algorithm.
 362	  For more information, please see https://tools.ietf.org/html/rfc8033
 363
 364	  To compile this driver as a module, choose M here: the module
 365	  will be called sch_pie.
 366
 367	  If unsure, say N.
 368
 369config NET_SCH_FQ_PIE
 370	depends on NET_SCH_PIE
 371	tristate "Flow Queue Proportional Integral controller Enhanced (FQ-PIE)"
 372	help
 373	  Say Y here if you want to use the Flow Queue Proportional Integral
 374	  controller Enhanced (FQ-PIE) packet scheduling algorithm.
 375	  For more information, please see https://tools.ietf.org/html/rfc8033
 376
 377	  To compile this driver as a module, choose M here: the module
 378	  will be called sch_fq_pie.
 379
 380	  If unsure, say N.
 381
 382config NET_SCH_INGRESS
 383	tristate "Ingress/classifier-action Qdisc"
 384	depends on NET_CLS_ACT
 385	select NET_INGRESS
 386	select NET_EGRESS
 387	help
 388	  Say Y here if you want to use classifiers for incoming and/or outgoing
 389	  packets. This qdisc doesn't do anything else besides running classifiers,
 390	  which can also have actions attached to them. In case of outgoing packets,
 391	  classifiers that this qdisc holds are executed in the transmit path
 392	  before real enqueuing to an egress qdisc happens.
 393
 394	  If unsure, say Y.
 395
 396	  To compile this code as a module, choose M here: the module will be
 397	  called sch_ingress with alias of sch_clsact.
 398
 399config NET_SCH_PLUG
 400	tristate "Plug network traffic until release (PLUG)"
 401	help
 402
 403	  This queuing discipline allows userspace to plug/unplug a network
 404	  output queue, using the netlink interface.  When it receives an
 405	  enqueue command it inserts a plug into the outbound queue that
 406	  causes following packets to enqueue until a dequeue command arrives
 407	  over netlink, causing the plug to be removed and resuming the normal
 408	  packet flow.
 409
 410	  This module also provides a generic "network output buffering"
 411	  functionality (aka output commit), wherein upon arrival of a dequeue
 412	  command, only packets up to the first plug are released for delivery.
 413	  The Remus HA project uses this module to enable speculative execution
 414	  of virtual machines by allowing the generated network output to be rolled
 415	  back if needed.
 416
 417	  For more information, please refer to <http://wiki.xenproject.org/wiki/Remus>
 418
 419	  Say Y here if you are using this kernel for Xen dom0 and
 420	  want to protect Xen guests with Remus.
 421
 422	  To compile this code as a module, choose M here: the
 423	  module will be called sch_plug.
 424
 425config NET_SCH_ETS
 426	tristate "Enhanced transmission selection scheduler (ETS)"
 427	help
 428          The Enhanced Transmission Selection scheduler is a classful
 429          queuing discipline that merges functionality of PRIO and DRR
 430          qdiscs in one scheduler. ETS makes it easy to configure a set of
 431          strict and bandwidth-sharing bands to implement the transmission
 432          selection described in 802.1Qaz.
 433
 434	  Say Y here if you want to use the ETS packet scheduling
 435	  algorithm.
 436
 437	  To compile this driver as a module, choose M here: the module
 438	  will be called sch_ets.
 439
 440	  If unsure, say N.
 441
 442menuconfig NET_SCH_DEFAULT
 443	bool "Allow override default queue discipline"
 444	help
 445	  Support for selection of default queuing discipline.
 446
 447	  Nearly all users can safely say no here, and the default
 448	  of pfifo_fast will be used. Many distributions already set
 449	  the default value via /proc/sys/net/core/default_qdisc.
 450
 451	  If unsure, say N.
 452
 453if NET_SCH_DEFAULT
 454
 455choice
 456	prompt "Default queuing discipline"
 457	default DEFAULT_PFIFO_FAST
 458	help
 459	  Select the queueing discipline that will be used by default
 460	  for all network devices.
 461
 462	config DEFAULT_FQ
 463		bool "Fair Queue" if NET_SCH_FQ
 464
 465	config DEFAULT_CODEL
 466		bool "Controlled Delay" if NET_SCH_CODEL
 467
 468	config DEFAULT_FQ_CODEL
 469		bool "Fair Queue Controlled Delay" if NET_SCH_FQ_CODEL
 470
 471	config DEFAULT_FQ_PIE
 472		bool "Flow Queue Proportional Integral controller Enhanced" if NET_SCH_FQ_PIE
 473
 474	config DEFAULT_SFQ
 475		bool "Stochastic Fair Queue" if NET_SCH_SFQ
 476
 477	config DEFAULT_PFIFO_FAST
 478		bool "Priority FIFO Fast"
 479endchoice
 480
 481config DEFAULT_NET_SCH
 482	string
 483	default "pfifo_fast" if DEFAULT_PFIFO_FAST
 484	default "fq" if DEFAULT_FQ
 485	default "fq_codel" if DEFAULT_FQ_CODEL
 486	default "fq_pie" if DEFAULT_FQ_PIE
 487	default "sfq" if DEFAULT_SFQ
 488	default "pfifo_fast"
 489endif
 490
 491comment "Classification"
 492
 493config NET_CLS
 494	bool
 495
 496config NET_CLS_BASIC
 497	tristate "Elementary classification (BASIC)"
 498	select NET_CLS
 499	help
 500	  Say Y here if you want to be able to classify packets using
 501	  only extended matches and actions.
 502
 503	  To compile this code as a module, choose M here: the
 504	  module will be called cls_basic.
 505
 506config NET_CLS_TCINDEX
 507	tristate "Traffic-Control Index (TCINDEX)"
 508	select NET_CLS
 509	help
 510	  Say Y here if you want to be able to classify packets based on
 511	  traffic control indices. You will want this feature if you want
 512	  to implement Differentiated Services together with DSMARK.
 513
 514	  To compile this code as a module, choose M here: the
 515	  module will be called cls_tcindex.
 516
 517config NET_CLS_ROUTE4
 518	tristate "Routing decision (ROUTE)"
 519	depends on INET
 520	select IP_ROUTE_CLASSID
 521	select NET_CLS
 522	help
 523	  If you say Y here, you will be able to classify packets
 524	  according to the route table entry they matched.
 525
 526	  To compile this code as a module, choose M here: the
 527	  module will be called cls_route.
 528
 529config NET_CLS_FW
 530	tristate "Netfilter mark (FW)"
 531	select NET_CLS
 532	help
 533	  If you say Y here, you will be able to classify packets
 534	  according to netfilter/firewall marks.
 535
 536	  To compile this code as a module, choose M here: the
 537	  module will be called cls_fw.
 538
 539config NET_CLS_U32
 540	tristate "Universal 32bit comparisons w/ hashing (U32)"
 541	select NET_CLS
 542	help
 543	  Say Y here to be able to classify packets using a universal
 544	  32bit pieces based comparison scheme.
 545
 546	  To compile this code as a module, choose M here: the
 547	  module will be called cls_u32.
 548
 549config CLS_U32_PERF
 550	bool "Performance counters support"
 551	depends on NET_CLS_U32
 552	help
 553	  Say Y here to make u32 gather additional statistics useful for
 554	  fine tuning u32 classifiers.
 555
 556config CLS_U32_MARK
 557	bool "Netfilter marks support"
 558	depends on NET_CLS_U32
 559	help
 560	  Say Y here to be able to use netfilter marks as u32 key.
 561
 562config NET_CLS_RSVP
 563	tristate "IPv4 Resource Reservation Protocol (RSVP)"
 564	select NET_CLS
 565	help
 566	  The Resource Reservation Protocol (RSVP) permits end systems to
 567	  request a minimum and maximum data flow rate for a connection; this
 568	  is important for real time data such as streaming sound or video.
 569
 570	  Say Y here if you want to be able to classify outgoing packets based
 571	  on their RSVP requests.
 572
 573	  To compile this code as a module, choose M here: the
 574	  module will be called cls_rsvp.
 575
 576config NET_CLS_RSVP6
 577	tristate "IPv6 Resource Reservation Protocol (RSVP6)"
 578	select NET_CLS
 579	help
 580	  The Resource Reservation Protocol (RSVP) permits end systems to
 581	  request a minimum and maximum data flow rate for a connection; this
 582	  is important for real time data such as streaming sound or video.
 583
 584	  Say Y here if you want to be able to classify outgoing packets based
 585	  on their RSVP requests and you are using the IPv6 protocol.
 586
 587	  To compile this code as a module, choose M here: the
 588	  module will be called cls_rsvp6.
 589
 590config NET_CLS_FLOW
 591	tristate "Flow classifier"
 592	select NET_CLS
 593	help
 594	  If you say Y here, you will be able to classify packets based on
 595	  a configurable combination of packet keys. This is mostly useful
 596	  in combination with SFQ.
 597
 598	  To compile this code as a module, choose M here: the
 599	  module will be called cls_flow.
 600
 601config NET_CLS_CGROUP
 602	tristate "Control Group Classifier"
 603	select NET_CLS
 604	select CGROUP_NET_CLASSID
 605	depends on CGROUPS
 606	help
 607	  Say Y here if you want to classify packets based on the control
 608	  cgroup of their process.
 609
 610	  To compile this code as a module, choose M here: the
 611	  module will be called cls_cgroup.
 612
 613config NET_CLS_BPF
 614	tristate "BPF-based classifier"
 615	select NET_CLS
 616	help
 617	  If you say Y here, you will be able to classify packets based on
 618	  programmable BPF (JIT'ed) filters as an alternative to ematches.
 619
 620	  To compile this code as a module, choose M here: the module will
 621	  be called cls_bpf.
 622
 623config NET_CLS_FLOWER
 624	tristate "Flower classifier"
 625	select NET_CLS
 626	help
 627	  If you say Y here, you will be able to classify packets based on
 628	  a configurable combination of packet keys and masks.
 629
 630	  To compile this code as a module, choose M here: the module will
 631	  be called cls_flower.
 632
 633config NET_CLS_MATCHALL
 634	tristate "Match-all classifier"
 635	select NET_CLS
 636	help
 637	  If you say Y here, you will be able to classify packets based on
 638	  nothing. Every packet will match.
 639
 640	  To compile this code as a module, choose M here: the module will
 641	  be called cls_matchall.
 642
 643config NET_EMATCH
 644	bool "Extended Matches"
 645	select NET_CLS
 646	help
 647	  Say Y here if you want to use extended matches on top of classifiers
 648	  and select the extended matches below.
 649
 650	  Extended matches are small classification helpers not worth writing
 651	  a separate classifier for.
 652
 653	  A recent version of the iproute2 package is required to use
 654	  extended matches.
 655
 656config NET_EMATCH_STACK
 657	int "Stack size"
 658	depends on NET_EMATCH
 659	default "32"
 660	help
 661	  Size of the local stack variable used while evaluating the tree of
 662	  ematches. Limits the depth of the tree, i.e. the number of
 663	  encapsulated precedences. Every level requires 4 bytes of additional
 664	  stack space.
 665
 666config NET_EMATCH_CMP
 667	tristate "Simple packet data comparison"
 668	depends on NET_EMATCH
 669	help
 670	  Say Y here if you want to be able to classify packets based on
 671	  simple packet data comparisons for 8, 16, and 32bit values.
 672
 673	  To compile this code as a module, choose M here: the
 674	  module will be called em_cmp.
 675
 676config NET_EMATCH_NBYTE
 677	tristate "Multi byte comparison"
 678	depends on NET_EMATCH
 679	help
 680	  Say Y here if you want to be able to classify packets based on
 681	  multiple byte comparisons mainly useful for IPv6 address comparisons.
 682
 683	  To compile this code as a module, choose M here: the
 684	  module will be called em_nbyte.
 685
 686config NET_EMATCH_U32
 687	tristate "U32 key"
 688	depends on NET_EMATCH
 689	help
 690	  Say Y here if you want to be able to classify packets using
 691	  the famous u32 key in combination with logic relations.
 692
 693	  To compile this code as a module, choose M here: the
 694	  module will be called em_u32.
 695
 696config NET_EMATCH_META
 697	tristate "Metadata"
 698	depends on NET_EMATCH
 699	help
 700	  Say Y here if you want to be able to classify packets based on
 701	  metadata such as load average, netfilter attributes, socket
 702	  attributes and routing decisions.
 703
 704	  To compile this code as a module, choose M here: the
 705	  module will be called em_meta.
 706
 707config NET_EMATCH_TEXT
 708	tristate "Textsearch"
 709	depends on NET_EMATCH
 710	select TEXTSEARCH
 711	select TEXTSEARCH_KMP
 712	select TEXTSEARCH_BM
 713	select TEXTSEARCH_FSM
 714	help
 715	  Say Y here if you want to be able to classify packets based on
 716	  textsearch comparisons.
 717
 718	  To compile this code as a module, choose M here: the
 719	  module will be called em_text.
 720
 721config NET_EMATCH_CANID
 722	tristate "CAN Identifier"
 723	depends on NET_EMATCH && (CAN=y || CAN=m)
 724	help
 725	  Say Y here if you want to be able to classify CAN frames based
 726	  on CAN Identifier.
 727
 728	  To compile this code as a module, choose M here: the
 729	  module will be called em_canid.
 730
 731config NET_EMATCH_IPSET
 732	tristate "IPset"
 733	depends on NET_EMATCH && IP_SET
 734	help
 735	  Say Y here if you want to be able to classify packets based on
 736	  ipset membership.
 737
 738	  To compile this code as a module, choose M here: the
 739	  module will be called em_ipset.
 740
 741config NET_EMATCH_IPT
 742	tristate "IPtables Matches"
 743	depends on NET_EMATCH && NETFILTER && NETFILTER_XTABLES
 744	help
 745	  Say Y here to be able to classify packets based on iptables
 746	  matches.
 747	  Current supported match is "policy" which allows packet classification
 748	  based on IPsec policy that was used during decapsulation
 749
 750	  To compile this code as a module, choose M here: the
 751	  module will be called em_ipt.
 752
 753config NET_CLS_ACT
 754	bool "Actions"
 755	select NET_CLS
 756	help
 757	  Say Y here if you want to use traffic control actions. Actions
 758	  get attached to classifiers and are invoked after a successful
 759	  classification. They are used to overwrite the classification
 760	  result, instantly drop or redirect packets, etc.
 761
 762	  A recent version of the iproute2 package is required to use
 763	  extended matches.
 764
 765config NET_ACT_POLICE
 766	tristate "Traffic Policing"
 767	depends on NET_CLS_ACT
 768	help
 769	  Say Y here if you want to do traffic policing, i.e. strict
 770	  bandwidth limiting. This action replaces the existing policing
 771	  module.
 772
 773	  To compile this code as a module, choose M here: the
 774	  module will be called act_police.
 775
 776config NET_ACT_GACT
 777	tristate "Generic actions"
 778	depends on NET_CLS_ACT
 779	help
 780	  Say Y here to take generic actions such as dropping and
 781	  accepting packets.
 782
 783	  To compile this code as a module, choose M here: the
 784	  module will be called act_gact.
 785
 786config GACT_PROB
 787	bool "Probability support"
 788	depends on NET_ACT_GACT
 789	help
 790	  Say Y here to use the generic action randomly or deterministically.
 791
 792config NET_ACT_MIRRED
 793	tristate "Redirecting and Mirroring"
 794	depends on NET_CLS_ACT
 795	help
 796	  Say Y here to allow packets to be mirrored or redirected to
 797	  other devices.
 798
 799	  To compile this code as a module, choose M here: the
 800	  module will be called act_mirred.
 801
 802config NET_ACT_SAMPLE
 803	tristate "Traffic Sampling"
 804	depends on NET_CLS_ACT
 805	select PSAMPLE
 806	help
 807	  Say Y here to allow packet sampling tc action. The packet sample
 808	  action consists of statistically choosing packets and sampling
 809	  them using the psample module.
 810
 811	  To compile this code as a module, choose M here: the
 812	  module will be called act_sample.
 813
 814config NET_ACT_IPT
 815	tristate "IPtables targets"
 816	depends on NET_CLS_ACT && NETFILTER && NETFILTER_XTABLES
 817	help
 818	  Say Y here to be able to invoke iptables targets after successful
 819	  classification.
 820
 821	  To compile this code as a module, choose M here: the
 822	  module will be called act_ipt.
 823
 824config NET_ACT_NAT
 825	tristate "Stateless NAT"
 826	depends on NET_CLS_ACT
 827	help
 828	  Say Y here to do stateless NAT on IPv4 packets.  You should use
 829	  netfilter for NAT unless you know what you are doing.
 830
 831	  To compile this code as a module, choose M here: the
 832	  module will be called act_nat.
 833
 834config NET_ACT_PEDIT
 835	tristate "Packet Editing"
 836	depends on NET_CLS_ACT
 837	help
 838	  Say Y here if you want to mangle the content of packets.
 839
 840	  To compile this code as a module, choose M here: the
 841	  module will be called act_pedit.
 842
 843config NET_ACT_SIMP
 844	tristate "Simple Example (Debug)"
 845	depends on NET_CLS_ACT
 846	help
 847	  Say Y here to add a simple action for demonstration purposes.
 848	  It is meant as an example and for debugging purposes. It will
 849	  print a configured policy string followed by the packet count
 850	  to the console for every packet that passes by.
 851
 852	  If unsure, say N.
 853
 854	  To compile this code as a module, choose M here: the
 855	  module will be called act_simple.
 856
 857config NET_ACT_SKBEDIT
 858	tristate "SKB Editing"
 859	depends on NET_CLS_ACT
 860	help
 861	  Say Y here to change skb priority or queue_mapping settings.
 862
 863	  If unsure, say N.
 864
 865	  To compile this code as a module, choose M here: the
 866	  module will be called act_skbedit.
 867
 868config NET_ACT_CSUM
 869	tristate "Checksum Updating"
 870	depends on NET_CLS_ACT && INET
 871	select LIBCRC32C
 872	help
 873	  Say Y here to update some common checksum after some direct
 874	  packet alterations.
 875
 876	  To compile this code as a module, choose M here: the
 877	  module will be called act_csum.
 878
 879config NET_ACT_MPLS
 880	tristate "MPLS manipulation"
 881	depends on NET_CLS_ACT
 882	help
 883	  Say Y here to push or pop MPLS headers.
 884
 885	  If unsure, say N.
 886
 887	  To compile this code as a module, choose M here: the
 888	  module will be called act_mpls.
 889
 890config NET_ACT_VLAN
 891	tristate "Vlan manipulation"
 892	depends on NET_CLS_ACT
 893	help
 894	  Say Y here to push or pop vlan headers.
 895
 896	  If unsure, say N.
 897
 898	  To compile this code as a module, choose M here: the
 899	  module will be called act_vlan.
 900
 901config NET_ACT_BPF
 902	tristate "BPF based action"
 903	depends on NET_CLS_ACT
 904	help
 905	  Say Y here to execute BPF code on packets. The BPF code will decide
 906	  if the packet should be dropped or not.
 907
 908	  If unsure, say N.
 909
 910	  To compile this code as a module, choose M here: the
 911	  module will be called act_bpf.
 912
 913config NET_ACT_CONNMARK
 914	tristate "Netfilter Connection Mark Retriever"
 915	depends on NET_CLS_ACT && NETFILTER
 916	depends on NF_CONNTRACK && NF_CONNTRACK_MARK
 917	help
 918	  Say Y here to allow retrieving of conn mark
 919
 920	  If unsure, say N.
 921
 922	  To compile this code as a module, choose M here: the
 923	  module will be called act_connmark.
 924
 925config NET_ACT_CTINFO
 926	tristate "Netfilter Connection Mark Actions"
 927	depends on NET_CLS_ACT && NETFILTER
 928	depends on NF_CONNTRACK && NF_CONNTRACK_MARK
 929	help
 930	  Say Y here to allow transfer of a connmark stored information.
 931	  Current actions transfer connmark stored DSCP into
 932	  ipv4/v6 diffserv and/or to transfer connmark to packet
 933	  mark.  Both are useful for restoring egress based marks
 934	  back onto ingress connections for qdisc priority mapping
 935	  purposes.
 936
 937	  If unsure, say N.
 938
 939	  To compile this code as a module, choose M here: the
 940	  module will be called act_ctinfo.
 941
 942config NET_ACT_SKBMOD
 943	tristate "skb data modification action"
 944	depends on NET_CLS_ACT
 945	help
 946	 Say Y here to allow modification of skb data
 947
 948	 If unsure, say N.
 949
 950	 To compile this code as a module, choose M here: the
 951	 module will be called act_skbmod.
 952
 953config NET_ACT_IFE
 954	tristate "Inter-FE action based on IETF ForCES InterFE LFB"
 955	depends on NET_CLS_ACT
 956	select NET_IFE
 957	help
 958	  Say Y here to allow for sourcing and terminating metadata
 959	  For details refer to netdev01 paper:
 960	  "Distributing Linux Traffic Control Classifier-Action Subsystem"
 961	   Authors: Jamal Hadi Salim and Damascene M. Joachimpillai
 962
 963	  To compile this code as a module, choose M here: the
 964	  module will be called act_ife.
 965
 966config NET_ACT_TUNNEL_KEY
 967	tristate "IP tunnel metadata manipulation"
 968	depends on NET_CLS_ACT
 969	help
 970	  Say Y here to set/release ip tunnel metadata.
 971
 972	  If unsure, say N.
 973
 974	  To compile this code as a module, choose M here: the
 975	  module will be called act_tunnel_key.
 976
 977config NET_ACT_CT
 978	tristate "connection tracking tc action"
 979	depends on NET_CLS_ACT && NF_CONNTRACK && NF_NAT && NF_FLOW_TABLE
 980	help
 981	  Say Y here to allow sending the packets to conntrack module.
 982
 983	  If unsure, say N.
 984
 985	  To compile this code as a module, choose M here: the
 986	  module will be called act_ct.
 987
 988config NET_ACT_GATE
 989	tristate "Frame gate entry list control tc action"
 990	depends on NET_CLS_ACT
 991	help
 992	  Say Y here to allow to control the ingress flow to be passed at
 993	  specific time slot and be dropped at other specific time slot by
 994	  the gate entry list.
 995
 996	  If unsure, say N.
 997	  To compile this code as a module, choose M here: the
 998	  module will be called act_gate.
 999
1000config NET_IFE_SKBMARK
1001	tristate "Support to encoding decoding skb mark on IFE action"
1002	depends on NET_ACT_IFE
1003
1004config NET_IFE_SKBPRIO
1005	tristate "Support to encoding decoding skb prio on IFE action"
1006	depends on NET_ACT_IFE
1007
1008config NET_IFE_SKBTCINDEX
1009	tristate "Support to encoding decoding skb tcindex on IFE action"
1010	depends on NET_ACT_IFE
1011
1012config NET_TC_SKB_EXT
1013	bool "TC recirculation support"
1014	depends on NET_CLS_ACT
1015	select SKB_EXTENSIONS
1016
1017	help
1018	  Say Y here to allow tc chain misses to continue in OvS datapath in
1019	  the correct recirc_id, and hardware chain misses to continue in
1020	  the correct chain in tc software datapath.
1021
1022	  Say N here if you won't be using tc<->ovs offload or tc chains offload.
1023
1024endif # NET_SCHED
1025
1026config NET_SCH_FIFO
1027	bool