xref: /linux/net/sched/Kconfig (revision aea5f654e6b78a0c976f7a25950155932c77a53f)
11da177e4SLinus Torvalds#
21da177e4SLinus Torvalds# Traffic control configuration.
31da177e4SLinus Torvalds#
46a2e9b73SSam Ravnborg
585ef3e5cSRandy Dunlapmenuconfig NET_SCHED
66a2e9b73SSam Ravnborg	bool "QoS and/or fair queueing"
73c62f75aSDavid Kimdon	select NET_SCH_FIFO
86a2e9b73SSam Ravnborg	---help---
96a2e9b73SSam Ravnborg	  When the kernel has several packets to send out over a network
106a2e9b73SSam Ravnborg	  device, it has to decide which ones to send first, which ones to
1152ab4ac2SThomas Graf	  delay, and which ones to drop. This is the job of the queueing
1252ab4ac2SThomas Graf	  disciplines, several different algorithms for how to do this
136a2e9b73SSam Ravnborg	  "fairly" have been proposed.
146a2e9b73SSam Ravnborg
156a2e9b73SSam Ravnborg	  If you say N here, you will get the standard packet scheduler, which
166a2e9b73SSam Ravnborg	  is a FIFO (first come, first served). If you say Y here, you will be
176a2e9b73SSam Ravnborg	  able to choose from among several alternative algorithms which can
186a2e9b73SSam Ravnborg	  then be attached to different network devices. This is useful for
196a2e9b73SSam Ravnborg	  example if some of your network devices are real time devices that
206a2e9b73SSam Ravnborg	  need a certain minimum data flow rate, or if you need to limit the
216a2e9b73SSam Ravnborg	  maximum data flow rate for traffic which matches specified criteria.
226a2e9b73SSam Ravnborg	  This code is considered to be experimental.
236a2e9b73SSam Ravnborg
246a2e9b73SSam Ravnborg	  To administer these schedulers, you'll need the user-level utilities
255d330cddSAndrew Shewmaker	  from the package iproute2+tc at
265d330cddSAndrew Shewmaker	  <https://www.kernel.org/pub/linux/utils/net/iproute2/>.  That package
275d330cddSAndrew Shewmaker	  also contains some documentation; for more, check out
28c996d8b9SMichael Witten	  <http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2>.
296a2e9b73SSam Ravnborg
306a2e9b73SSam Ravnborg	  This Quality of Service (QoS) support will enable you to use
316a2e9b73SSam Ravnborg	  Differentiated Services (diffserv) and Resource Reservation Protocol
3252ab4ac2SThomas Graf	  (RSVP) on your Linux router if you also say Y to the corresponding
3352ab4ac2SThomas Graf	  classifiers below.  Documentation and software is at
3452ab4ac2SThomas Graf	  <http://diffserv.sourceforge.net/>.
356a2e9b73SSam Ravnborg
366a2e9b73SSam Ravnborg	  If you say Y here and to "/proc file system" below, you will be able
376a2e9b73SSam Ravnborg	  to read status information about packet schedulers from the file
386a2e9b73SSam Ravnborg	  /proc/net/psched.
396a2e9b73SSam Ravnborg
406a2e9b73SSam Ravnborg	  The available schedulers are listed in the following questions; you
416a2e9b73SSam Ravnborg	  can say Y to as many as you like. If unsure, say N now.
426a2e9b73SSam Ravnborg
4305b8b0faSRoman Zippelif NET_SCHED
4405b8b0faSRoman Zippel
4552ab4ac2SThomas Grafcomment "Queueing/Scheduling"
4652ab4ac2SThomas Graf
471da177e4SLinus Torvaldsconfig NET_SCH_CBQ
4852ab4ac2SThomas Graf	tristate "Class Based Queueing (CBQ)"
491da177e4SLinus Torvalds	---help---
501da177e4SLinus Torvalds	  Say Y here if you want to use the Class-Based Queueing (CBQ) packet
5152ab4ac2SThomas Graf	  scheduling algorithm. This algorithm classifies the waiting packets
5252ab4ac2SThomas Graf	  into a tree-like hierarchy of classes; the leaves of this tree are
5352ab4ac2SThomas Graf	  in turn scheduled by separate algorithms.
541da177e4SLinus Torvalds
5552ab4ac2SThomas Graf	  See the top of <file:net/sched/sch_cbq.c> for more details.
561da177e4SLinus Torvalds
571da177e4SLinus Torvalds	  CBQ is a commonly used scheduler, so if you're unsure, you should
581da177e4SLinus Torvalds	  say Y here. Then say Y to all the queueing algorithms below that you
5952ab4ac2SThomas Graf	  want to use as leaf disciplines.
601da177e4SLinus Torvalds
611da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
621da177e4SLinus Torvalds	  module will be called sch_cbq.
631da177e4SLinus Torvalds
641da177e4SLinus Torvaldsconfig NET_SCH_HTB
6552ab4ac2SThomas Graf	tristate "Hierarchical Token Bucket (HTB)"
661da177e4SLinus Torvalds	---help---
671da177e4SLinus Torvalds	  Say Y here if you want to use the Hierarchical Token Buckets (HTB)
6852ab4ac2SThomas Graf	  packet scheduling algorithm. See
691da177e4SLinus Torvalds	  <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and
701da177e4SLinus Torvalds	  in-depth articles.
711da177e4SLinus Torvalds
7252ab4ac2SThomas Graf	  HTB is very similar to CBQ regarding its goals however is has
731da177e4SLinus Torvalds	  different properties and different algorithm.
741da177e4SLinus Torvalds
751da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
761da177e4SLinus Torvalds	  module will be called sch_htb.
771da177e4SLinus Torvalds
781da177e4SLinus Torvaldsconfig NET_SCH_HFSC
7952ab4ac2SThomas Graf	tristate "Hierarchical Fair Service Curve (HFSC)"
801da177e4SLinus Torvalds	---help---
811da177e4SLinus Torvalds	  Say Y here if you want to use the Hierarchical Fair Service Curve
8252ab4ac2SThomas Graf	  (HFSC) packet scheduling algorithm.
831da177e4SLinus Torvalds
841da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
851da177e4SLinus Torvalds	  module will be called sch_hfsc.
861da177e4SLinus Torvalds
871da177e4SLinus Torvaldsconfig NET_SCH_ATM
8852ab4ac2SThomas Graf	tristate "ATM Virtual Circuits (ATM)"
8905b8b0faSRoman Zippel	depends on ATM
901da177e4SLinus Torvalds	---help---
911da177e4SLinus Torvalds	  Say Y here if you want to use the ATM pseudo-scheduler.  This
9252ab4ac2SThomas Graf	  provides a framework for invoking classifiers, which in turn
9352ab4ac2SThomas Graf	  select classes of this queuing discipline.  Each class maps
9452ab4ac2SThomas Graf	  the flow(s) it is handling to a given virtual circuit.
9552ab4ac2SThomas Graf
9699acaeb9SGabriel Craciunescu	  See the top of <file:net/sched/sch_atm.c> for more details.
971da177e4SLinus Torvalds
981da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
991da177e4SLinus Torvalds	  module will be called sch_atm.
1001da177e4SLinus Torvalds
1011da177e4SLinus Torvaldsconfig NET_SCH_PRIO
10252ab4ac2SThomas Graf	tristate "Multi Band Priority Queueing (PRIO)"
10352ab4ac2SThomas Graf	---help---
1041da177e4SLinus Torvalds	  Say Y here if you want to use an n-band priority queue packet
10552ab4ac2SThomas Graf	  scheduler.
1061da177e4SLinus Torvalds
1071da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
1081da177e4SLinus Torvalds	  module will be called sch_prio.
1091da177e4SLinus Torvalds
11092651940SAlexander Duyckconfig NET_SCH_MULTIQ
11192651940SAlexander Duyck	tristate "Hardware Multiqueue-aware Multi Band Queuing (MULTIQ)"
11292651940SAlexander Duyck	---help---
11392651940SAlexander Duyck	  Say Y here if you want to use an n-band queue packet scheduler
11492651940SAlexander Duyck	  to support devices that have multiple hardware transmit queues.
11592651940SAlexander Duyck
11692651940SAlexander Duyck	  To compile this code as a module, choose M here: the
11792651940SAlexander Duyck	  module will be called sch_multiq.
11892651940SAlexander Duyck
1191da177e4SLinus Torvaldsconfig NET_SCH_RED
12052ab4ac2SThomas Graf	tristate "Random Early Detection (RED)"
12152ab4ac2SThomas Graf	---help---
1221da177e4SLinus Torvalds	  Say Y here if you want to use the Random Early Detection (RED)
12352ab4ac2SThomas Graf	  packet scheduling algorithm.
12452ab4ac2SThomas Graf
12552ab4ac2SThomas Graf	  See the top of <file:net/sched/sch_red.c> for more details.
1261da177e4SLinus Torvalds
1271da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
1281da177e4SLinus Torvalds	  module will be called sch_red.
1291da177e4SLinus Torvalds
130e13e02a3SEric Dumazetconfig NET_SCH_SFB
131e13e02a3SEric Dumazet	tristate "Stochastic Fair Blue (SFB)"
132e13e02a3SEric Dumazet	---help---
133e13e02a3SEric Dumazet	  Say Y here if you want to use the Stochastic Fair Blue (SFB)
134e13e02a3SEric Dumazet	  packet scheduling algorithm.
135e13e02a3SEric Dumazet
136e13e02a3SEric Dumazet	  See the top of <file:net/sched/sch_sfb.c> for more details.
137e13e02a3SEric Dumazet
138e13e02a3SEric Dumazet	  To compile this code as a module, choose M here: the
139e13e02a3SEric Dumazet	  module will be called sch_sfb.
140e13e02a3SEric Dumazet
1411da177e4SLinus Torvaldsconfig NET_SCH_SFQ
14252ab4ac2SThomas Graf	tristate "Stochastic Fairness Queueing (SFQ)"
1431da177e4SLinus Torvalds	---help---
1441da177e4SLinus Torvalds	  Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
14552ab4ac2SThomas Graf	  packet scheduling algorithm.
14652ab4ac2SThomas Graf
14752ab4ac2SThomas Graf	  See the top of <file:net/sched/sch_sfq.c> for more details.
1481da177e4SLinus Torvalds
1491da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
1501da177e4SLinus Torvalds	  module will be called sch_sfq.
1511da177e4SLinus Torvalds
1521da177e4SLinus Torvaldsconfig NET_SCH_TEQL
15352ab4ac2SThomas Graf	tristate "True Link Equalizer (TEQL)"
1541da177e4SLinus Torvalds	---help---
1551da177e4SLinus Torvalds	  Say Y here if you want to use the True Link Equalizer (TLE) packet
15652ab4ac2SThomas Graf	  scheduling algorithm. This queueing discipline allows the combination
15752ab4ac2SThomas Graf	  of several physical devices into one virtual device.
15852ab4ac2SThomas Graf
15952ab4ac2SThomas Graf	  See the top of <file:net/sched/sch_teql.c> for more details.
1601da177e4SLinus Torvalds
1611da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
1621da177e4SLinus Torvalds	  module will be called sch_teql.
1631da177e4SLinus Torvalds
1641da177e4SLinus Torvaldsconfig NET_SCH_TBF
16552ab4ac2SThomas Graf	tristate "Token Bucket Filter (TBF)"
16652ab4ac2SThomas Graf	---help---
16752ab4ac2SThomas Graf	  Say Y here if you want to use the Token Bucket Filter (TBF) packet
16852ab4ac2SThomas Graf	  scheduling algorithm.
16952ab4ac2SThomas Graf
17052ab4ac2SThomas Graf	  See the top of <file:net/sched/sch_tbf.c> for more details.
1711da177e4SLinus Torvalds
1721da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
1731da177e4SLinus Torvalds	  module will be called sch_tbf.
1741da177e4SLinus Torvalds
175585d763aSVinicius Costa Gomesconfig NET_SCH_CBS
176585d763aSVinicius Costa Gomes	tristate "Credit Based Shaper (CBS)"
177585d763aSVinicius Costa Gomes	---help---
178585d763aSVinicius Costa Gomes	  Say Y here if you want to use the Credit Based Shaper (CBS) packet
179585d763aSVinicius Costa Gomes	  scheduling algorithm.
180585d763aSVinicius Costa Gomes
181585d763aSVinicius Costa Gomes	  See the top of <file:net/sched/sch_cbs.c> for more details.
182585d763aSVinicius Costa Gomes
183585d763aSVinicius Costa Gomes	  To compile this code as a module, choose M here: the
184585d763aSVinicius Costa Gomes	  module will be called sch_cbs.
185585d763aSVinicius Costa Gomes
18625db26a9SVinicius Costa Gomesconfig NET_SCH_ETF
18725db26a9SVinicius Costa Gomes	tristate "Earliest TxTime First (ETF)"
18825db26a9SVinicius Costa Gomes	help
18925db26a9SVinicius Costa Gomes	  Say Y here if you want to use the Earliest TxTime First (ETF) packet
19025db26a9SVinicius Costa Gomes	  scheduling algorithm.
19125db26a9SVinicius Costa Gomes
19225db26a9SVinicius Costa Gomes	  See the top of <file:net/sched/sch_etf.c> for more details.
19325db26a9SVinicius Costa Gomes
19425db26a9SVinicius Costa Gomes	  To compile this code as a module, choose M here: the
19525db26a9SVinicius Costa Gomes	  module will be called sch_etf.
19625db26a9SVinicius Costa Gomes
1971da177e4SLinus Torvaldsconfig NET_SCH_GRED
19852ab4ac2SThomas Graf	tristate "Generic Random Early Detection (GRED)"
19952ab4ac2SThomas Graf	---help---
2001da177e4SLinus Torvalds	  Say Y here if you want to use the Generic Random Early Detection
20120cc6befSLucas Correia Villa Real	  (GRED) packet scheduling algorithm for some of your network devices
2021da177e4SLinus Torvalds	  (see the top of <file:net/sched/sch_red.c> for details and
2031da177e4SLinus Torvalds	  references about the algorithm).
2041da177e4SLinus Torvalds
2051da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
2061da177e4SLinus Torvalds	  module will be called sch_gred.
2071da177e4SLinus Torvalds
2081da177e4SLinus Torvaldsconfig NET_SCH_DSMARK
20952ab4ac2SThomas Graf	tristate "Differentiated Services marker (DSMARK)"
21052ab4ac2SThomas Graf	---help---
2111da177e4SLinus Torvalds	  Say Y if you want to schedule packets according to the
2121da177e4SLinus Torvalds	  Differentiated Services architecture proposed in RFC 2475.
2131da177e4SLinus Torvalds	  Technical information on this method, with pointers to associated
2141da177e4SLinus Torvalds	  RFCs, is available at <http://www.gta.ufrj.br/diffserv/>.
2151da177e4SLinus Torvalds
2161da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
2171da177e4SLinus Torvalds	  module will be called sch_dsmark.
2181da177e4SLinus Torvalds
2191da177e4SLinus Torvaldsconfig NET_SCH_NETEM
22052ab4ac2SThomas Graf	tristate "Network emulator (NETEM)"
22152ab4ac2SThomas Graf	---help---
2221da177e4SLinus Torvalds	  Say Y if you want to emulate network delay, loss, and packet
2231da177e4SLinus Torvalds	  re-ordering. This is often useful to simulate networks when
2241da177e4SLinus Torvalds	  testing applications or protocols.
2251da177e4SLinus Torvalds
2261da177e4SLinus Torvalds	  To compile this driver as a module, choose M here: the module
2271da177e4SLinus Torvalds	  will be called sch_netem.
2281da177e4SLinus Torvalds
2291da177e4SLinus Torvalds	  If unsure, say N.
2301da177e4SLinus Torvalds
23113d2a1d2SPatrick McHardyconfig NET_SCH_DRR
23213d2a1d2SPatrick McHardy	tristate "Deficit Round Robin scheduler (DRR)"
23313d2a1d2SPatrick McHardy	help
23413d2a1d2SPatrick McHardy	  Say Y here if you want to use the Deficit Round Robin (DRR) packet
23513d2a1d2SPatrick McHardy	  scheduling algorithm.
23613d2a1d2SPatrick McHardy
23713d2a1d2SPatrick McHardy	  To compile this driver as a module, choose M here: the module
23813d2a1d2SPatrick McHardy	  will be called sch_drr.
23913d2a1d2SPatrick McHardy
24013d2a1d2SPatrick McHardy	  If unsure, say N.
24113d2a1d2SPatrick McHardy
242b8970f0bSJohn Fastabendconfig NET_SCH_MQPRIO
243b8970f0bSJohn Fastabend	tristate "Multi-queue priority scheduler (MQPRIO)"
244b8970f0bSJohn Fastabend	help
245b8970f0bSJohn Fastabend	  Say Y here if you want to use the Multi-queue Priority scheduler.
246b8970f0bSJohn Fastabend	  This scheduler allows QOS to be offloaded on NICs that have support
247b8970f0bSJohn Fastabend	  for offloading QOS schedulers.
248b8970f0bSJohn Fastabend
249b8970f0bSJohn Fastabend	  To compile this driver as a module, choose M here: the module will
250b8970f0bSJohn Fastabend	  be called sch_mqprio.
251b8970f0bSJohn Fastabend
252b8970f0bSJohn Fastabend	  If unsure, say N.
253b8970f0bSJohn Fastabend
254*aea5f654SNishanth Devarajanconfig NET_SCH_SKBPRIO
255*aea5f654SNishanth Devarajan	tristate "SKB priority queue scheduler (SKBPRIO)"
256*aea5f654SNishanth Devarajan	help
257*aea5f654SNishanth Devarajan	  Say Y here if you want to use the SKB priority queue
258*aea5f654SNishanth Devarajan	  scheduler. This schedules packets according to skb->priority,
259*aea5f654SNishanth Devarajan	  which is useful for request packets in DoS mitigation systems such
260*aea5f654SNishanth Devarajan	  as Gatekeeper.
261*aea5f654SNishanth Devarajan
262*aea5f654SNishanth Devarajan	  To compile this driver as a module, choose M here: the module will
263*aea5f654SNishanth Devarajan	  be called sch_skbprio.
264*aea5f654SNishanth Devarajan
265*aea5f654SNishanth Devarajan	  If unsure, say N.
266*aea5f654SNishanth Devarajan
26745e14433Sstephen hemmingerconfig NET_SCH_CHOKE
26845e14433Sstephen hemminger	tristate "CHOose and Keep responsive flow scheduler (CHOKE)"
26945e14433Sstephen hemminger	help
27045e14433Sstephen hemminger	  Say Y here if you want to use the CHOKe packet scheduler (CHOose
27145e14433Sstephen hemminger	  and Keep for responsive flows, CHOose and Kill for unresponsive
27245e14433Sstephen hemminger	  flows). This is a variation of RED which trys to penalize flows
27345e14433Sstephen hemminger	  that monopolize the queue.
27445e14433Sstephen hemminger
27545e14433Sstephen hemminger	  To compile this code as a module, choose M here: the
27645e14433Sstephen hemminger	  module will be called sch_choke.
27745e14433Sstephen hemminger
2780545a303Sstephen hemmingerconfig NET_SCH_QFQ
2790545a303Sstephen hemminger	tristate "Quick Fair Queueing scheduler (QFQ)"
2800545a303Sstephen hemminger	help
2810545a303Sstephen hemminger	  Say Y here if you want to use the Quick Fair Queueing Scheduler (QFQ)
2820545a303Sstephen hemminger	  packet scheduling algorithm.
2830545a303Sstephen hemminger
2840545a303Sstephen hemminger	  To compile this driver as a module, choose M here: the module
2850545a303Sstephen hemminger	  will be called sch_qfq.
2860545a303Sstephen hemminger
2870545a303Sstephen hemminger	  If unsure, say N.
2880545a303Sstephen hemminger
28976e3cc12SEric Dumazetconfig NET_SCH_CODEL
29076e3cc12SEric Dumazet	tristate "Controlled Delay AQM (CODEL)"
29176e3cc12SEric Dumazet	help
29276e3cc12SEric Dumazet	  Say Y here if you want to use the Controlled Delay (CODEL)
29376e3cc12SEric Dumazet	  packet scheduling algorithm.
29476e3cc12SEric Dumazet
29576e3cc12SEric Dumazet	  To compile this driver as a module, choose M here: the module
29676e3cc12SEric Dumazet	  will be called sch_codel.
29776e3cc12SEric Dumazet
29876e3cc12SEric Dumazet	  If unsure, say N.
29976e3cc12SEric Dumazet
3004b549a2eSEric Dumazetconfig NET_SCH_FQ_CODEL
3014b549a2eSEric Dumazet	tristate "Fair Queue Controlled Delay AQM (FQ_CODEL)"
3024b549a2eSEric Dumazet	help
3034b549a2eSEric Dumazet	  Say Y here if you want to use the FQ Controlled Delay (FQ_CODEL)
3044b549a2eSEric Dumazet	  packet scheduling algorithm.
3054b549a2eSEric Dumazet
3064b549a2eSEric Dumazet	  To compile this driver as a module, choose M here: the module
3074b549a2eSEric Dumazet	  will be called sch_fq_codel.
3084b549a2eSEric Dumazet
3094b549a2eSEric Dumazet	  If unsure, say N.
3104b549a2eSEric Dumazet
311046f6fd5SToke Høiland-Jørgensenconfig NET_SCH_CAKE
312046f6fd5SToke Høiland-Jørgensen	tristate "Common Applications Kept Enhanced (CAKE)"
313046f6fd5SToke Høiland-Jørgensen	help
314046f6fd5SToke Høiland-Jørgensen	  Say Y here if you want to use the Common Applications Kept Enhanced
315046f6fd5SToke Høiland-Jørgensen          (CAKE) queue management algorithm.
316046f6fd5SToke Høiland-Jørgensen
317046f6fd5SToke Høiland-Jørgensen	  To compile this driver as a module, choose M here: the module
318046f6fd5SToke Høiland-Jørgensen	  will be called sch_cake.
319046f6fd5SToke Høiland-Jørgensen
320046f6fd5SToke Høiland-Jørgensen	  If unsure, say N.
321046f6fd5SToke Høiland-Jørgensen
322afe4fd06SEric Dumazetconfig NET_SCH_FQ
323afe4fd06SEric Dumazet	tristate "Fair Queue"
324afe4fd06SEric Dumazet	help
325afe4fd06SEric Dumazet	  Say Y here if you want to use the FQ packet scheduling algorithm.
326afe4fd06SEric Dumazet
327afe4fd06SEric Dumazet	  FQ does flow separation, and is able to respect pacing requirements
328afe4fd06SEric Dumazet	  set by TCP stack into sk->sk_pacing_rate (for localy generated
329afe4fd06SEric Dumazet	  traffic)
330afe4fd06SEric Dumazet
331afe4fd06SEric Dumazet	  To compile this driver as a module, choose M here: the module
332afe4fd06SEric Dumazet	  will be called sch_fq.
333afe4fd06SEric Dumazet
334afe4fd06SEric Dumazet	  If unsure, say N.
335afe4fd06SEric Dumazet
33610239edfSTerry Lamconfig NET_SCH_HHF
33710239edfSTerry Lam	tristate "Heavy-Hitter Filter (HHF)"
33810239edfSTerry Lam	help
33910239edfSTerry Lam	  Say Y here if you want to use the Heavy-Hitter Filter (HHF)
34010239edfSTerry Lam	  packet scheduling algorithm.
34110239edfSTerry Lam
34210239edfSTerry Lam	  To compile this driver as a module, choose M here: the module
34310239edfSTerry Lam	  will be called sch_hhf.
34410239edfSTerry Lam
345d4b36210SVijay Subramanianconfig NET_SCH_PIE
346d4b36210SVijay Subramanian	tristate "Proportional Integral controller Enhanced (PIE) scheduler"
347d4b36210SVijay Subramanian	help
348d4b36210SVijay Subramanian	  Say Y here if you want to use the Proportional Integral controller
349d4b36210SVijay Subramanian	  Enhanced scheduler packet scheduling algorithm.
350d4b36210SVijay Subramanian	  For more information, please see
351d4b36210SVijay Subramanian	  http://tools.ietf.org/html/draft-pan-tsvwg-pie-00
352d4b36210SVijay Subramanian
353d4b36210SVijay Subramanian	  To compile this driver as a module, choose M here: the module
354d4b36210SVijay Subramanian	  will be called sch_pie.
355d4b36210SVijay Subramanian
356d4b36210SVijay Subramanian	  If unsure, say N.
357d4b36210SVijay Subramanian
3581da177e4SLinus Torvaldsconfig NET_SCH_INGRESS
3591f211a1bSDaniel Borkmann	tristate "Ingress/classifier-action Qdisc"
36072eb7bd2SPatrick McHardy	depends on NET_CLS_ACT
3611cf51900SPablo Neira	select NET_INGRESS
3621f211a1bSDaniel Borkmann	select NET_EGRESS
36352ab4ac2SThomas Graf	---help---
3641f211a1bSDaniel Borkmann	  Say Y here if you want to use classifiers for incoming and/or outgoing
3651f211a1bSDaniel Borkmann	  packets. This qdisc doesn't do anything else besides running classifiers,
3661f211a1bSDaniel Borkmann	  which can also have actions attached to them. In case of outgoing packets,
3671f211a1bSDaniel Borkmann	  classifiers that this qdisc holds are executed in the transmit path
3681f211a1bSDaniel Borkmann	  before real enqueuing to an egress qdisc happens.
3691f211a1bSDaniel Borkmann
3701da177e4SLinus Torvalds	  If unsure, say Y.
3711da177e4SLinus Torvalds
3721f211a1bSDaniel Borkmann	  To compile this code as a module, choose M here: the module will be
3731f211a1bSDaniel Borkmann	  called sch_ingress with alias of sch_clsact.
3741da177e4SLinus Torvalds
375c3059be1SShriram Rajagopalanconfig NET_SCH_PLUG
376c3059be1SShriram Rajagopalan	tristate "Plug network traffic until release (PLUG)"
377c3059be1SShriram Rajagopalan	---help---
378c3059be1SShriram Rajagopalan
379c3059be1SShriram Rajagopalan	  This queuing discipline allows userspace to plug/unplug a network
380c3059be1SShriram Rajagopalan	  output queue, using the netlink interface.  When it receives an
381c3059be1SShriram Rajagopalan	  enqueue command it inserts a plug into the outbound queue that
382c3059be1SShriram Rajagopalan	  causes following packets to enqueue until a dequeue command arrives
383c3059be1SShriram Rajagopalan	  over netlink, causing the plug to be removed and resuming the normal
384c3059be1SShriram Rajagopalan	  packet flow.
385c3059be1SShriram Rajagopalan
386c3059be1SShriram Rajagopalan	  This module also provides a generic "network output buffering"
387c3059be1SShriram Rajagopalan	  functionality (aka output commit), wherein upon arrival of a dequeue
388c3059be1SShriram Rajagopalan	  command, only packets up to the first plug are released for delivery.
389c3059be1SShriram Rajagopalan	  The Remus HA project uses this module to enable speculative execution
390c3059be1SShriram Rajagopalan	  of virtual machines by allowing the generated network output to be rolled
391c3059be1SShriram Rajagopalan	  back if needed.
392c3059be1SShriram Rajagopalan
3935d330cddSAndrew Shewmaker	  For more information, please refer to <http://wiki.xenproject.org/wiki/Remus>
394c3059be1SShriram Rajagopalan
395c3059be1SShriram Rajagopalan	  Say Y here if you are using this kernel for Xen dom0 and
396c3059be1SShriram Rajagopalan	  want to protect Xen guests with Remus.
397c3059be1SShriram Rajagopalan
398c3059be1SShriram Rajagopalan	  To compile this code as a module, choose M here: the
399c3059be1SShriram Rajagopalan	  module will be called sch_plug.
400c3059be1SShriram Rajagopalan
4018ea3e439Sstephen hemmingermenuconfig NET_SCH_DEFAULT
4028ea3e439Sstephen hemminger	bool "Allow override default queue discipline"
4038ea3e439Sstephen hemminger	---help---
4048ea3e439Sstephen hemminger	  Support for selection of default queuing discipline.
4058ea3e439Sstephen hemminger
4068ea3e439Sstephen hemminger	  Nearly all users can safely say no here, and the default
4078ea3e439Sstephen hemminger	  of pfifo_fast will be used. Many distributions already set
4088ea3e439Sstephen hemminger	  the default value via /proc/sys/net/core/default_qdisc.
4098ea3e439Sstephen hemminger
4108ea3e439Sstephen hemminger	  If unsure, say N.
4118ea3e439Sstephen hemminger
4128ea3e439Sstephen hemmingerif NET_SCH_DEFAULT
4138ea3e439Sstephen hemminger
4148ea3e439Sstephen hemmingerchoice
4158ea3e439Sstephen hemminger	prompt "Default queuing discipline"
4168ea3e439Sstephen hemminger	default DEFAULT_PFIFO_FAST
4178ea3e439Sstephen hemminger	help
4188ea3e439Sstephen hemminger	  Select the queueing discipline that will be used by default
4198ea3e439Sstephen hemminger	  for all network devices.
4208ea3e439Sstephen hemminger
4218ea3e439Sstephen hemminger	config DEFAULT_FQ
4228ea3e439Sstephen hemminger		bool "Fair Queue" if NET_SCH_FQ
4238ea3e439Sstephen hemminger
4248ea3e439Sstephen hemminger	config DEFAULT_CODEL
4258ea3e439Sstephen hemminger		bool "Controlled Delay" if NET_SCH_CODEL
4268ea3e439Sstephen hemminger
4278ea3e439Sstephen hemminger	config DEFAULT_FQ_CODEL
4288ea3e439Sstephen hemminger		bool "Fair Queue Controlled Delay" if NET_SCH_FQ_CODEL
4298ea3e439Sstephen hemminger
4308ea3e439Sstephen hemminger	config DEFAULT_SFQ
4318ea3e439Sstephen hemminger		bool "Stochastic Fair Queue" if NET_SCH_SFQ
4328ea3e439Sstephen hemminger
4338ea3e439Sstephen hemminger	config DEFAULT_PFIFO_FAST
4348ea3e439Sstephen hemminger		bool "Priority FIFO Fast"
4358ea3e439Sstephen hemmingerendchoice
4368ea3e439Sstephen hemminger
4378ea3e439Sstephen hemmingerconfig DEFAULT_NET_SCH
4388ea3e439Sstephen hemminger	string
4398ea3e439Sstephen hemminger	default "pfifo_fast" if DEFAULT_PFIFO_FAST
4408ea3e439Sstephen hemminger	default "fq" if DEFAULT_FQ
4418ea3e439Sstephen hemminger	default "fq_codel" if DEFAULT_FQ_CODEL
4428ea3e439Sstephen hemminger	default "sfq" if DEFAULT_SFQ
4438ea3e439Sstephen hemminger	default "pfifo_fast"
4448ea3e439Sstephen hemmingerendif
4458ea3e439Sstephen hemminger
44652ab4ac2SThomas Grafcomment "Classification"
4471da177e4SLinus Torvalds
4481da177e4SLinus Torvaldsconfig NET_CLS
4496341e62bSChristoph Jaeger	bool
4501da177e4SLinus Torvalds
4511da177e4SLinus Torvaldsconfig NET_CLS_BASIC
45252ab4ac2SThomas Graf	tristate "Elementary classification (BASIC)"
45352ab4ac2SThomas Graf	select NET_CLS
4541da177e4SLinus Torvalds	---help---
4551da177e4SLinus Torvalds	  Say Y here if you want to be able to classify packets using
4561da177e4SLinus Torvalds	  only extended matches and actions.
4571da177e4SLinus Torvalds
4581da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
4591da177e4SLinus Torvalds	  module will be called cls_basic.
4601da177e4SLinus Torvalds
4611da177e4SLinus Torvaldsconfig NET_CLS_TCINDEX
46252ab4ac2SThomas Graf	tristate "Traffic-Control Index (TCINDEX)"
46352ab4ac2SThomas Graf	select NET_CLS
46452ab4ac2SThomas Graf	---help---
46552ab4ac2SThomas Graf	  Say Y here if you want to be able to classify packets based on
46652ab4ac2SThomas Graf	  traffic control indices. You will want this feature if you want
46752ab4ac2SThomas Graf	  to implement Differentiated Services together with DSMARK.
4681da177e4SLinus Torvalds
4691da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
4701da177e4SLinus Torvalds	  module will be called cls_tcindex.
4711da177e4SLinus Torvalds
4721da177e4SLinus Torvaldsconfig NET_CLS_ROUTE4
47352ab4ac2SThomas Graf	tristate "Routing decision (ROUTE)"
474034cfe48SRandy Dunlap	depends on INET
475c7066f70SPatrick McHardy	select IP_ROUTE_CLASSID
47652ab4ac2SThomas Graf	select NET_CLS
47752ab4ac2SThomas Graf	---help---
47852ab4ac2SThomas Graf	  If you say Y here, you will be able to classify packets
47952ab4ac2SThomas Graf	  according to the route table entry they matched.
4801da177e4SLinus Torvalds
4811da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
4821da177e4SLinus Torvalds	  module will be called cls_route.
4831da177e4SLinus Torvalds
4841da177e4SLinus Torvaldsconfig NET_CLS_FW
48552ab4ac2SThomas Graf	tristate "Netfilter mark (FW)"
48652ab4ac2SThomas Graf	select NET_CLS
48752ab4ac2SThomas Graf	---help---
48852ab4ac2SThomas Graf	  If you say Y here, you will be able to classify packets
48952ab4ac2SThomas Graf	  according to netfilter/firewall marks.
4901da177e4SLinus Torvalds
4911da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
4921da177e4SLinus Torvalds	  module will be called cls_fw.
4931da177e4SLinus Torvalds
4941da177e4SLinus Torvaldsconfig NET_CLS_U32
49552ab4ac2SThomas Graf	tristate "Universal 32bit comparisons w/ hashing (U32)"
49652ab4ac2SThomas Graf	select NET_CLS
49752ab4ac2SThomas Graf	---help---
4983539c272SMatt LaPlante	  Say Y here to be able to classify packets using a universal
49952ab4ac2SThomas Graf	  32bit pieces based comparison scheme.
5001da177e4SLinus Torvalds
5011da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
5021da177e4SLinus Torvalds	  module will be called cls_u32.
5031da177e4SLinus Torvalds
5041da177e4SLinus Torvaldsconfig CLS_U32_PERF
50552ab4ac2SThomas Graf	bool "Performance counters support"
5061da177e4SLinus Torvalds	depends on NET_CLS_U32
50752ab4ac2SThomas Graf	---help---
50852ab4ac2SThomas Graf	  Say Y here to make u32 gather additional statistics useful for
50952ab4ac2SThomas Graf	  fine tuning u32 classifiers.
5101da177e4SLinus Torvalds
5111da177e4SLinus Torvaldsconfig CLS_U32_MARK
51252ab4ac2SThomas Graf	bool "Netfilter marks support"
51382e91ffeSThomas Graf	depends on NET_CLS_U32
51452ab4ac2SThomas Graf	---help---
51552ab4ac2SThomas Graf	  Say Y here to be able to use netfilter marks as u32 key.
5161da177e4SLinus Torvalds
5171da177e4SLinus Torvaldsconfig NET_CLS_RSVP
51852ab4ac2SThomas Graf	tristate "IPv4 Resource Reservation Protocol (RSVP)"
51952ab4ac2SThomas Graf	select NET_CLS
5201da177e4SLinus Torvalds	---help---
5211da177e4SLinus Torvalds	  The Resource Reservation Protocol (RSVP) permits end systems to
5221da177e4SLinus Torvalds	  request a minimum and maximum data flow rate for a connection; this
5231da177e4SLinus Torvalds	  is important for real time data such as streaming sound or video.
5241da177e4SLinus Torvalds
5251da177e4SLinus Torvalds	  Say Y here if you want to be able to classify outgoing packets based
5261da177e4SLinus Torvalds	  on their RSVP requests.
5271da177e4SLinus Torvalds
5281da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
5291da177e4SLinus Torvalds	  module will be called cls_rsvp.
5301da177e4SLinus Torvalds
5311da177e4SLinus Torvaldsconfig NET_CLS_RSVP6
53252ab4ac2SThomas Graf	tristate "IPv6 Resource Reservation Protocol (RSVP6)"
53352ab4ac2SThomas Graf	select NET_CLS
5341da177e4SLinus Torvalds	---help---
5351da177e4SLinus Torvalds	  The Resource Reservation Protocol (RSVP) permits end systems to
5361da177e4SLinus Torvalds	  request a minimum and maximum data flow rate for a connection; this
5371da177e4SLinus Torvalds	  is important for real time data such as streaming sound or video.
5381da177e4SLinus Torvalds
5391da177e4SLinus Torvalds	  Say Y here if you want to be able to classify outgoing packets based
54099acaeb9SGabriel Craciunescu	  on their RSVP requests and you are using the IPv6 protocol.
5411da177e4SLinus Torvalds
5421da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
5431da177e4SLinus Torvalds	  module will be called cls_rsvp6.
5441da177e4SLinus Torvalds
545e5dfb815SPatrick McHardyconfig NET_CLS_FLOW
546e5dfb815SPatrick McHardy	tristate "Flow classifier"
547e5dfb815SPatrick McHardy	select NET_CLS
548e5dfb815SPatrick McHardy	---help---
549e5dfb815SPatrick McHardy	  If you say Y here, you will be able to classify packets based on
550e5dfb815SPatrick McHardy	  a configurable combination of packet keys. This is mostly useful
551e5dfb815SPatrick McHardy	  in combination with SFQ.
552e5dfb815SPatrick McHardy
553e5dfb815SPatrick McHardy	  To compile this code as a module, choose M here: the
554e5dfb815SPatrick McHardy	  module will be called cls_flow.
555e5dfb815SPatrick McHardy
556f4009237SThomas Grafconfig NET_CLS_CGROUP
5578e039d84SBen Blum	tristate "Control Group Classifier"
558f4009237SThomas Graf	select NET_CLS
559fe1217c4SDaniel Borkmann	select CGROUP_NET_CLASSID
560f4009237SThomas Graf	depends on CGROUPS
561f4009237SThomas Graf	---help---
562f4009237SThomas Graf	  Say Y here if you want to classify packets based on the control
563f4009237SThomas Graf	  cgroup of their process.
564f4009237SThomas Graf
5658e039d84SBen Blum	  To compile this code as a module, choose M here: the
5668e039d84SBen Blum	  module will be called cls_cgroup.
5678e039d84SBen Blum
5687d1d65cbSDaniel Borkmannconfig NET_CLS_BPF
5697d1d65cbSDaniel Borkmann	tristate "BPF-based classifier"
5707d1d65cbSDaniel Borkmann	select NET_CLS
5717d1d65cbSDaniel Borkmann	---help---
5727d1d65cbSDaniel Borkmann	  If you say Y here, you will be able to classify packets based on
5737d1d65cbSDaniel Borkmann	  programmable BPF (JIT'ed) filters as an alternative to ematches.
5747d1d65cbSDaniel Borkmann
5757d1d65cbSDaniel Borkmann	  To compile this code as a module, choose M here: the module will
5767d1d65cbSDaniel Borkmann	  be called cls_bpf.
5777d1d65cbSDaniel Borkmann
57877b9900eSJiri Pirkoconfig NET_CLS_FLOWER
57977b9900eSJiri Pirko	tristate "Flower classifier"
58077b9900eSJiri Pirko	select NET_CLS
58177b9900eSJiri Pirko	---help---
58277b9900eSJiri Pirko	  If you say Y here, you will be able to classify packets based on
58377b9900eSJiri Pirko	  a configurable combination of packet keys and masks.
58477b9900eSJiri Pirko
58577b9900eSJiri Pirko	  To compile this code as a module, choose M here: the module will
58677b9900eSJiri Pirko	  be called cls_flower.
58777b9900eSJiri Pirko
588bf3994d2SJiri Pirkoconfig NET_CLS_MATCHALL
589bf3994d2SJiri Pirko	tristate "Match-all classifier"
590bf3994d2SJiri Pirko	select NET_CLS
591bf3994d2SJiri Pirko	---help---
592bf3994d2SJiri Pirko	  If you say Y here, you will be able to classify packets based on
593bf3994d2SJiri Pirko	  nothing. Every packet will match.
594bf3994d2SJiri Pirko
595bf3994d2SJiri Pirko	  To compile this code as a module, choose M here: the module will
596bf3994d2SJiri Pirko	  be called cls_matchall.
597bf3994d2SJiri Pirko
5981da177e4SLinus Torvaldsconfig NET_EMATCH
5991da177e4SLinus Torvalds	bool "Extended Matches"
60052ab4ac2SThomas Graf	select NET_CLS
6011da177e4SLinus Torvalds	---help---
6021da177e4SLinus Torvalds	  Say Y here if you want to use extended matches on top of classifiers
6031da177e4SLinus Torvalds	  and select the extended matches below.
6041da177e4SLinus Torvalds
6051da177e4SLinus Torvalds	  Extended matches are small classification helpers not worth writing
60652ab4ac2SThomas Graf	  a separate classifier for.
6071da177e4SLinus Torvalds
60852ab4ac2SThomas Graf	  A recent version of the iproute2 package is required to use
6091da177e4SLinus Torvalds	  extended matches.
6101da177e4SLinus Torvalds
6111da177e4SLinus Torvaldsconfig NET_EMATCH_STACK
6121da177e4SLinus Torvalds	int "Stack size"
6131da177e4SLinus Torvalds	depends on NET_EMATCH
6141da177e4SLinus Torvalds	default "32"
6151da177e4SLinus Torvalds	---help---
6161da177e4SLinus Torvalds	  Size of the local stack variable used while evaluating the tree of
6171da177e4SLinus Torvalds	  ematches. Limits the depth of the tree, i.e. the number of
618b824979aSThomas Graf	  encapsulated precedences. Every level requires 4 bytes of additional
6191da177e4SLinus Torvalds	  stack space.
6201da177e4SLinus Torvalds
6211da177e4SLinus Torvaldsconfig NET_EMATCH_CMP
6221da177e4SLinus Torvalds	tristate "Simple packet data comparison"
6231da177e4SLinus Torvalds	depends on NET_EMATCH
6241da177e4SLinus Torvalds	---help---
6251da177e4SLinus Torvalds	  Say Y here if you want to be able to classify packets based on
6261da177e4SLinus Torvalds	  simple packet data comparisons for 8, 16, and 32bit values.
6271da177e4SLinus Torvalds
6281da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
6291da177e4SLinus Torvalds	  module will be called em_cmp.
6301da177e4SLinus Torvalds
6311da177e4SLinus Torvaldsconfig NET_EMATCH_NBYTE
6321da177e4SLinus Torvalds	tristate "Multi byte comparison"
6331da177e4SLinus Torvalds	depends on NET_EMATCH
6341da177e4SLinus Torvalds	---help---
6351da177e4SLinus Torvalds	  Say Y here if you want to be able to classify packets based on
6361da177e4SLinus Torvalds	  multiple byte comparisons mainly useful for IPv6 address comparisons.
6371da177e4SLinus Torvalds
6381da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
6391da177e4SLinus Torvalds	  module will be called em_nbyte.
6401da177e4SLinus Torvalds
6411da177e4SLinus Torvaldsconfig NET_EMATCH_U32
64252ab4ac2SThomas Graf	tristate "U32 key"
6431da177e4SLinus Torvalds	depends on NET_EMATCH
6441da177e4SLinus Torvalds	---help---
6451da177e4SLinus Torvalds	  Say Y here if you want to be able to classify packets using
6461da177e4SLinus Torvalds	  the famous u32 key in combination with logic relations.
6471da177e4SLinus Torvalds
6481da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
6491da177e4SLinus Torvalds	  module will be called em_u32.
6501da177e4SLinus Torvalds
6511da177e4SLinus Torvaldsconfig NET_EMATCH_META
6521da177e4SLinus Torvalds	tristate "Metadata"
6531da177e4SLinus Torvalds	depends on NET_EMATCH
6541da177e4SLinus Torvalds	---help---
655bb7e8c5aSAdrian Bunk	  Say Y here if you want to be able to classify packets based on
6561da177e4SLinus Torvalds	  metadata such as load average, netfilter attributes, socket
6571da177e4SLinus Torvalds	  attributes and routing decisions.
6581da177e4SLinus Torvalds
6591da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
6601da177e4SLinus Torvalds	  module will be called em_meta.
6611da177e4SLinus Torvalds
662d675c989SThomas Grafconfig NET_EMATCH_TEXT
663d675c989SThomas Graf	tristate "Textsearch"
664d675c989SThomas Graf	depends on NET_EMATCH
665f2d368faSDavid S. Miller	select TEXTSEARCH
666f7704347SDavid S. Miller	select TEXTSEARCH_KMP
66729cb9f9cSDavid S. Miller	select TEXTSEARCH_BM
668f7704347SDavid S. Miller	select TEXTSEARCH_FSM
669d675c989SThomas Graf	---help---
67052ab4ac2SThomas Graf	  Say Y here if you want to be able to classify packets based on
671f7704347SDavid S. Miller	  textsearch comparisons.
672d675c989SThomas Graf
673d675c989SThomas Graf	  To compile this code as a module, choose M here: the
674d675c989SThomas Graf	  module will be called em_text.
675d675c989SThomas Graf
676f057bbb6SRostislav Lisovyconfig NET_EMATCH_CANID
677f057bbb6SRostislav Lisovy	tristate "CAN Identifier"
678a303fbf3SMarc Kleine-Budde	depends on NET_EMATCH && (CAN=y || CAN=m)
679f057bbb6SRostislav Lisovy	---help---
680f057bbb6SRostislav Lisovy	  Say Y here if you want to be able to classify CAN frames based
681f057bbb6SRostislav Lisovy	  on CAN Identifier.
682f057bbb6SRostislav Lisovy
683f057bbb6SRostislav Lisovy	  To compile this code as a module, choose M here: the
684f057bbb6SRostislav Lisovy	  module will be called em_canid.
685f057bbb6SRostislav Lisovy
6866d4fa852SFlorian Westphalconfig NET_EMATCH_IPSET
6876d4fa852SFlorian Westphal	tristate "IPset"
6886d4fa852SFlorian Westphal	depends on NET_EMATCH && IP_SET
6896d4fa852SFlorian Westphal	---help---
6906d4fa852SFlorian Westphal	  Say Y here if you want to be able to classify packets based on
6916d4fa852SFlorian Westphal	  ipset membership.
6926d4fa852SFlorian Westphal
6936d4fa852SFlorian Westphal	  To compile this code as a module, choose M here: the
6946d4fa852SFlorian Westphal	  module will be called em_ipset.
6956d4fa852SFlorian Westphal
696ccc007e4SEyal Birgerconfig NET_EMATCH_IPT
697ccc007e4SEyal Birger	tristate "IPtables Matches"
698ccc007e4SEyal Birger	depends on NET_EMATCH && NETFILTER && NETFILTER_XTABLES
699ccc007e4SEyal Birger	---help---
700ccc007e4SEyal Birger	  Say Y here to be able to classify packets based on iptables
701ccc007e4SEyal Birger	  matches.
702ccc007e4SEyal Birger	  Current supported match is "policy" which allows packet classification
703ccc007e4SEyal Birger	  based on IPsec policy that was used during decapsulation
704ccc007e4SEyal Birger
705ccc007e4SEyal Birger	  To compile this code as a module, choose M here: the
706ccc007e4SEyal Birger	  module will be called em_ipt.
707ccc007e4SEyal Birger
7081da177e4SLinus Torvaldsconfig NET_CLS_ACT
70952ab4ac2SThomas Graf	bool "Actions"
7108ec1507dSJiri Pirko	select NET_CLS
7111da177e4SLinus Torvalds	---help---
71252ab4ac2SThomas Graf	  Say Y here if you want to use traffic control actions. Actions
71352ab4ac2SThomas Graf	  get attached to classifiers and are invoked after a successful
71452ab4ac2SThomas Graf	  classification. They are used to overwrite the classification
71552ab4ac2SThomas Graf	  result, instantly drop or redirect packets, etc.
71652ab4ac2SThomas Graf
71752ab4ac2SThomas Graf	  A recent version of the iproute2 package is required to use
71852ab4ac2SThomas Graf	  extended matches.
7191da177e4SLinus Torvalds
7201da177e4SLinus Torvaldsconfig NET_ACT_POLICE
72152ab4ac2SThomas Graf	tristate "Traffic Policing"
7221da177e4SLinus Torvalds        depends on NET_CLS_ACT
7231da177e4SLinus Torvalds        ---help---
72452ab4ac2SThomas Graf	  Say Y here if you want to do traffic policing, i.e. strict
72552ab4ac2SThomas Graf	  bandwidth limiting. This action replaces the existing policing
72652ab4ac2SThomas Graf	  module.
72752ab4ac2SThomas Graf
72852ab4ac2SThomas Graf	  To compile this code as a module, choose M here: the
729d4ae20b3SJan Luebbe	  module will be called act_police.
7301da177e4SLinus Torvalds
7311da177e4SLinus Torvaldsconfig NET_ACT_GACT
73252ab4ac2SThomas Graf        tristate "Generic actions"
7331da177e4SLinus Torvalds        depends on NET_CLS_ACT
7341da177e4SLinus Torvalds        ---help---
73552ab4ac2SThomas Graf	  Say Y here to take generic actions such as dropping and
73652ab4ac2SThomas Graf	  accepting packets.
73752ab4ac2SThomas Graf
73852ab4ac2SThomas Graf	  To compile this code as a module, choose M here: the
739d4ae20b3SJan Luebbe	  module will be called act_gact.
7401da177e4SLinus Torvalds
7411da177e4SLinus Torvaldsconfig GACT_PROB
74252ab4ac2SThomas Graf        bool "Probability support"
7431da177e4SLinus Torvalds        depends on NET_ACT_GACT
7441da177e4SLinus Torvalds        ---help---
74552ab4ac2SThomas Graf	  Say Y here to use the generic action randomly or deterministically.
7461da177e4SLinus Torvalds
7471da177e4SLinus Torvaldsconfig NET_ACT_MIRRED
74852ab4ac2SThomas Graf        tristate "Redirecting and Mirroring"
7491da177e4SLinus Torvalds        depends on NET_CLS_ACT
7501da177e4SLinus Torvalds        ---help---
75152ab4ac2SThomas Graf	  Say Y here to allow packets to be mirrored or redirected to
75252ab4ac2SThomas Graf	  other devices.
75352ab4ac2SThomas Graf
75452ab4ac2SThomas Graf	  To compile this code as a module, choose M here: the
755d4ae20b3SJan Luebbe	  module will be called act_mirred.
7561da177e4SLinus Torvalds
7575c5670faSYotam Gigiconfig NET_ACT_SAMPLE
7585c5670faSYotam Gigi        tristate "Traffic Sampling"
7595c5670faSYotam Gigi        depends on NET_CLS_ACT
7605c5670faSYotam Gigi        select PSAMPLE
7615c5670faSYotam Gigi        ---help---
7625c5670faSYotam Gigi	  Say Y here to allow packet sampling tc action. The packet sample
7635c5670faSYotam Gigi	  action consists of statistically choosing packets and sampling
7645c5670faSYotam Gigi	  them using the psample module.
7655c5670faSYotam Gigi
7665c5670faSYotam Gigi	  To compile this code as a module, choose M here: the
7675c5670faSYotam Gigi	  module will be called act_sample.
7685c5670faSYotam Gigi
7691da177e4SLinus Torvaldsconfig NET_ACT_IPT
77052ab4ac2SThomas Graf        tristate "IPtables targets"
7711da177e4SLinus Torvalds        depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
7721da177e4SLinus Torvalds        ---help---
7733539c272SMatt LaPlante	  Say Y here to be able to invoke iptables targets after successful
77452ab4ac2SThomas Graf	  classification.
77552ab4ac2SThomas Graf
77652ab4ac2SThomas Graf	  To compile this code as a module, choose M here: the
777d4ae20b3SJan Luebbe	  module will be called act_ipt.
7781da177e4SLinus Torvalds
779b4219952SHerbert Xuconfig NET_ACT_NAT
780b4219952SHerbert Xu        tristate "Stateless NAT"
781b4219952SHerbert Xu        depends on NET_CLS_ACT
782b4219952SHerbert Xu        ---help---
783b4219952SHerbert Xu	  Say Y here to do stateless NAT on IPv4 packets.  You should use
784b4219952SHerbert Xu	  netfilter for NAT unless you know what you are doing.
785b4219952SHerbert Xu
786b4219952SHerbert Xu	  To compile this code as a module, choose M here: the
787d4ae20b3SJan Luebbe	  module will be called act_nat.
788b4219952SHerbert Xu
7891da177e4SLinus Torvaldsconfig NET_ACT_PEDIT
79052ab4ac2SThomas Graf        tristate "Packet Editing"
7911da177e4SLinus Torvalds        depends on NET_CLS_ACT
7921da177e4SLinus Torvalds        ---help---
79352ab4ac2SThomas Graf	  Say Y here if you want to mangle the content of packets.
7941da177e4SLinus Torvalds
79552ab4ac2SThomas Graf	  To compile this code as a module, choose M here: the
796d4ae20b3SJan Luebbe	  module will be called act_pedit.
7971da177e4SLinus Torvalds
798db753079SJamal Hadi Salimconfig NET_ACT_SIMP
79952ab4ac2SThomas Graf        tristate "Simple Example (Debug)"
800db753079SJamal Hadi Salim        depends on NET_CLS_ACT
801db753079SJamal Hadi Salim        ---help---
80252ab4ac2SThomas Graf	  Say Y here to add a simple action for demonstration purposes.
80352ab4ac2SThomas Graf	  It is meant as an example and for debugging purposes. It will
80452ab4ac2SThomas Graf	  print a configured policy string followed by the packet count
80552ab4ac2SThomas Graf	  to the console for every packet that passes by.
806db753079SJamal Hadi Salim
80752ab4ac2SThomas Graf	  If unsure, say N.
80852ab4ac2SThomas Graf
80952ab4ac2SThomas Graf	  To compile this code as a module, choose M here: the
810d4ae20b3SJan Luebbe	  module will be called act_simple.
81152ab4ac2SThomas Graf
812ca9b0e27SAlexander Duyckconfig NET_ACT_SKBEDIT
813ca9b0e27SAlexander Duyck        tristate "SKB Editing"
814ca9b0e27SAlexander Duyck        depends on NET_CLS_ACT
815ca9b0e27SAlexander Duyck        ---help---
816ca9b0e27SAlexander Duyck	  Say Y here to change skb priority or queue_mapping settings.
817ca9b0e27SAlexander Duyck
818ca9b0e27SAlexander Duyck	  If unsure, say N.
819ca9b0e27SAlexander Duyck
820ca9b0e27SAlexander Duyck	  To compile this code as a module, choose M here: the
821d4ae20b3SJan Luebbe	  module will be called act_skbedit.
822ca9b0e27SAlexander Duyck
823eb4d4065SGrégoire Baronconfig NET_ACT_CSUM
824eb4d4065SGrégoire Baron        tristate "Checksum Updating"
8257abac686SDavid S. Miller        depends on NET_CLS_ACT && INET
826ab9d226eSDavide Caratti        select LIBCRC32C
827eb4d4065SGrégoire Baron        ---help---
828eb4d4065SGrégoire Baron	  Say Y here to update some common checksum after some direct
829eb4d4065SGrégoire Baron	  packet alterations.
830eb4d4065SGrégoire Baron
831eb4d4065SGrégoire Baron	  To compile this code as a module, choose M here: the
832eb4d4065SGrégoire Baron	  module will be called act_csum.
833eb4d4065SGrégoire Baron
834c7e2b968SJiri Pirkoconfig NET_ACT_VLAN
835c7e2b968SJiri Pirko        tristate "Vlan manipulation"
836c7e2b968SJiri Pirko        depends on NET_CLS_ACT
837c7e2b968SJiri Pirko        ---help---
838c7e2b968SJiri Pirko	  Say Y here to push or pop vlan headers.
839c7e2b968SJiri Pirko
840c7e2b968SJiri Pirko	  If unsure, say N.
841c7e2b968SJiri Pirko
842c7e2b968SJiri Pirko	  To compile this code as a module, choose M here: the
843c7e2b968SJiri Pirko	  module will be called act_vlan.
844c7e2b968SJiri Pirko
845d23b8ad8SJiri Pirkoconfig NET_ACT_BPF
846d23b8ad8SJiri Pirko        tristate "BPF based action"
847d23b8ad8SJiri Pirko        depends on NET_CLS_ACT
848d23b8ad8SJiri Pirko        ---help---
849d23b8ad8SJiri Pirko	  Say Y here to execute BPF code on packets. The BPF code will decide
850d23b8ad8SJiri Pirko	  if the packet should be dropped or not.
851d23b8ad8SJiri Pirko
852d23b8ad8SJiri Pirko	  If unsure, say N.
853d23b8ad8SJiri Pirko
854d23b8ad8SJiri Pirko	  To compile this code as a module, choose M here: the
855d23b8ad8SJiri Pirko	  module will be called act_bpf.
856d23b8ad8SJiri Pirko
85722a5dc0eSFelix Fietkauconfig NET_ACT_CONNMARK
85822a5dc0eSFelix Fietkau        tristate "Netfilter Connection Mark Retriever"
85922a5dc0eSFelix Fietkau        depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
8602dbce096SArnd Bergmann        depends on NF_CONNTRACK && NF_CONNTRACK_MARK
86122a5dc0eSFelix Fietkau        ---help---
86222a5dc0eSFelix Fietkau	  Say Y here to allow retrieving of conn mark
86322a5dc0eSFelix Fietkau
86422a5dc0eSFelix Fietkau	  If unsure, say N.
86522a5dc0eSFelix Fietkau
86622a5dc0eSFelix Fietkau	  To compile this code as a module, choose M here: the
86722a5dc0eSFelix Fietkau	  module will be called act_connmark.
86822a5dc0eSFelix Fietkau
86986da71b5SJamal Hadi Salimconfig NET_ACT_SKBMOD
87086da71b5SJamal Hadi Salim        tristate "skb data modification action"
87186da71b5SJamal Hadi Salim        depends on NET_CLS_ACT
87286da71b5SJamal Hadi Salim        ---help---
87386da71b5SJamal Hadi Salim         Say Y here to allow modification of skb data
87486da71b5SJamal Hadi Salim
87586da71b5SJamal Hadi Salim         If unsure, say N.
87686da71b5SJamal Hadi Salim
87786da71b5SJamal Hadi Salim         To compile this code as a module, choose M here: the
87886da71b5SJamal Hadi Salim         module will be called act_skbmod.
87986da71b5SJamal Hadi Salim
880ef6980b6SJamal Hadi Salimconfig NET_ACT_IFE
881ef6980b6SJamal Hadi Salim        tristate "Inter-FE action based on IETF ForCES InterFE LFB"
882ef6980b6SJamal Hadi Salim        depends on NET_CLS_ACT
883295a6e06SYotam Gigi        select NET_IFE
884ef6980b6SJamal Hadi Salim        ---help---
885ef6980b6SJamal Hadi Salim	  Say Y here to allow for sourcing and terminating metadata
886ef6980b6SJamal Hadi Salim	  For details refer to netdev01 paper:
887ef6980b6SJamal Hadi Salim	  "Distributing Linux Traffic Control Classifier-Action Subsystem"
888ef6980b6SJamal Hadi Salim	   Authors: Jamal Hadi Salim and Damascene M. Joachimpillai
889ef6980b6SJamal Hadi Salim
890ef6980b6SJamal Hadi Salim	  To compile this code as a module, choose M here: the
891ef6980b6SJamal Hadi Salim	  module will be called act_ife.
892ef6980b6SJamal Hadi Salim
893d0f6dd8aSAmir Vadaiconfig NET_ACT_TUNNEL_KEY
894d0f6dd8aSAmir Vadai        tristate "IP tunnel metadata manipulation"
895d0f6dd8aSAmir Vadai        depends on NET_CLS_ACT
896d0f6dd8aSAmir Vadai        ---help---
897d0f6dd8aSAmir Vadai	  Say Y here to set/release ip tunnel metadata.
898d0f6dd8aSAmir Vadai
899d0f6dd8aSAmir Vadai	  If unsure, say N.
900d0f6dd8aSAmir Vadai
901d0f6dd8aSAmir Vadai	  To compile this code as a module, choose M here: the
902d0f6dd8aSAmir Vadai	  module will be called act_tunnel_key.
903d0f6dd8aSAmir Vadai
904084e2f65SJamal Hadi Salimconfig NET_IFE_SKBMARK
905084e2f65SJamal Hadi Salim        tristate "Support to encoding decoding skb mark on IFE action"
906084e2f65SJamal Hadi Salim        depends on NET_ACT_IFE
907084e2f65SJamal Hadi Salim
908200e10f4SJamal Hadi Salimconfig NET_IFE_SKBPRIO
909200e10f4SJamal Hadi Salim        tristate "Support to encoding decoding skb prio on IFE action"
910200e10f4SJamal Hadi Salim        depends on NET_ACT_IFE
911200e10f4SJamal Hadi Salim
912408fbc22SJamal Hadi Salimconfig NET_IFE_SKBTCINDEX
913408fbc22SJamal Hadi Salim        tristate "Support to encoding decoding skb tcindex on IFE action"
914408fbc22SJamal Hadi Salim        depends on NET_ACT_IFE
915408fbc22SJamal Hadi Salim
91652ab4ac2SThomas Grafconfig NET_CLS_IND
91752ab4ac2SThomas Graf	bool "Incoming device classification"
91805b8b0faSRoman Zippel	depends on NET_CLS_U32 || NET_CLS_FW
91952ab4ac2SThomas Graf	---help---
92052ab4ac2SThomas Graf	  Say Y here to extend the u32 and fw classifier to support
92152ab4ac2SThomas Graf	  classification based on the incoming device. This option is
92252ab4ac2SThomas Graf	  likely to disappear in favour of the metadata ematch.
92352ab4ac2SThomas Graf
92405b8b0faSRoman Zippelendif # NET_SCHED
92505b8b0faSRoman Zippel
92685ef3e5cSRandy Dunlapconfig NET_SCH_FIFO
92785ef3e5cSRandy Dunlap	bool
928