xref: /linux/net/sched/Kconfig (revision 1dfe086dd7efb36d3d619a90782c6ca186a1bae9)
1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only
21da177e4SLinus Torvalds#
31da177e4SLinus Torvalds# Traffic control configuration.
41da177e4SLinus Torvalds#
56a2e9b73SSam Ravnborg
685ef3e5cSRandy Dunlapmenuconfig NET_SCHED
76a2e9b73SSam Ravnborg	bool "QoS and/or fair queueing"
83c62f75aSDavid Kimdon	select NET_SCH_FIFO
9a7f7f624SMasahiro Yamada	help
106a2e9b73SSam Ravnborg	  When the kernel has several packets to send out over a network
116a2e9b73SSam Ravnborg	  device, it has to decide which ones to send first, which ones to
1252ab4ac2SThomas Graf	  delay, and which ones to drop. This is the job of the queueing
1352ab4ac2SThomas Graf	  disciplines, several different algorithms for how to do this
146a2e9b73SSam Ravnborg	  "fairly" have been proposed.
156a2e9b73SSam Ravnborg
166a2e9b73SSam Ravnborg	  If you say N here, you will get the standard packet scheduler, which
176a2e9b73SSam Ravnborg	  is a FIFO (first come, first served). If you say Y here, you will be
186a2e9b73SSam Ravnborg	  able to choose from among several alternative algorithms which can
196a2e9b73SSam Ravnborg	  then be attached to different network devices. This is useful for
206a2e9b73SSam Ravnborg	  example if some of your network devices are real time devices that
216a2e9b73SSam Ravnborg	  need a certain minimum data flow rate, or if you need to limit the
226a2e9b73SSam Ravnborg	  maximum data flow rate for traffic which matches specified criteria.
236a2e9b73SSam Ravnborg	  This code is considered to be experimental.
246a2e9b73SSam Ravnborg
256a2e9b73SSam Ravnborg	  To administer these schedulers, you'll need the user-level utilities
265d330cddSAndrew Shewmaker	  from the package iproute2+tc at
275d330cddSAndrew Shewmaker	  <https://www.kernel.org/pub/linux/utils/net/iproute2/>.  That package
285d330cddSAndrew Shewmaker	  also contains some documentation; for more, check out
29c996d8b9SMichael Witten	  <http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2>.
306a2e9b73SSam Ravnborg
316a2e9b73SSam Ravnborg	  This Quality of Service (QoS) support will enable you to use
326a2e9b73SSam Ravnborg	  Differentiated Services (diffserv) and Resource Reservation Protocol
3352ab4ac2SThomas Graf	  (RSVP) on your Linux router if you also say Y to the corresponding
3452ab4ac2SThomas Graf	  classifiers below.  Documentation and software is at
3552ab4ac2SThomas Graf	  <http://diffserv.sourceforge.net/>.
366a2e9b73SSam Ravnborg
376a2e9b73SSam Ravnborg	  If you say Y here and to "/proc file system" below, you will be able
386a2e9b73SSam Ravnborg	  to read status information about packet schedulers from the file
396a2e9b73SSam Ravnborg	  /proc/net/psched.
406a2e9b73SSam Ravnborg
416a2e9b73SSam Ravnborg	  The available schedulers are listed in the following questions; you
426a2e9b73SSam Ravnborg	  can say Y to as many as you like. If unsure, say N now.
436a2e9b73SSam Ravnborg
4405b8b0faSRoman Zippelif NET_SCHED
4505b8b0faSRoman Zippel
4652ab4ac2SThomas Grafcomment "Queueing/Scheduling"
4752ab4ac2SThomas Graf
481da177e4SLinus Torvaldsconfig NET_SCH_CBQ
4952ab4ac2SThomas Graf	tristate "Class Based Queueing (CBQ)"
50a7f7f624SMasahiro Yamada	help
511da177e4SLinus Torvalds	  Say Y here if you want to use the Class-Based Queueing (CBQ) packet
5252ab4ac2SThomas Graf	  scheduling algorithm. This algorithm classifies the waiting packets
5352ab4ac2SThomas Graf	  into a tree-like hierarchy of classes; the leaves of this tree are
5452ab4ac2SThomas Graf	  in turn scheduled by separate algorithms.
551da177e4SLinus Torvalds
5652ab4ac2SThomas Graf	  See the top of <file:net/sched/sch_cbq.c> for more details.
571da177e4SLinus Torvalds
581da177e4SLinus Torvalds	  CBQ is a commonly used scheduler, so if you're unsure, you should
591da177e4SLinus Torvalds	  say Y here. Then say Y to all the queueing algorithms below that you
6052ab4ac2SThomas Graf	  want to use as leaf disciplines.
611da177e4SLinus Torvalds
621da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
631da177e4SLinus Torvalds	  module will be called sch_cbq.
641da177e4SLinus Torvalds
651da177e4SLinus Torvaldsconfig NET_SCH_HTB
6652ab4ac2SThomas Graf	tristate "Hierarchical Token Bucket (HTB)"
67a7f7f624SMasahiro Yamada	help
681da177e4SLinus Torvalds	  Say Y here if you want to use the Hierarchical Token Buckets (HTB)
6952ab4ac2SThomas Graf	  packet scheduling algorithm. See
701da177e4SLinus Torvalds	  <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and
711da177e4SLinus Torvalds	  in-depth articles.
721da177e4SLinus Torvalds
7352ab4ac2SThomas Graf	  HTB is very similar to CBQ regarding its goals however is has
741da177e4SLinus Torvalds	  different properties and different algorithm.
751da177e4SLinus Torvalds
761da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
771da177e4SLinus Torvalds	  module will be called sch_htb.
781da177e4SLinus Torvalds
791da177e4SLinus Torvaldsconfig NET_SCH_HFSC
8052ab4ac2SThomas Graf	tristate "Hierarchical Fair Service Curve (HFSC)"
81a7f7f624SMasahiro Yamada	help
821da177e4SLinus Torvalds	  Say Y here if you want to use the Hierarchical Fair Service Curve
8352ab4ac2SThomas Graf	  (HFSC) packet scheduling algorithm.
841da177e4SLinus Torvalds
851da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
861da177e4SLinus Torvalds	  module will be called sch_hfsc.
871da177e4SLinus Torvalds
881da177e4SLinus Torvaldsconfig NET_SCH_ATM
8952ab4ac2SThomas Graf	tristate "ATM Virtual Circuits (ATM)"
9005b8b0faSRoman Zippel	depends on ATM
91a7f7f624SMasahiro Yamada	help
921da177e4SLinus Torvalds	  Say Y here if you want to use the ATM pseudo-scheduler.  This
9352ab4ac2SThomas Graf	  provides a framework for invoking classifiers, which in turn
9452ab4ac2SThomas Graf	  select classes of this queuing discipline.  Each class maps
9552ab4ac2SThomas Graf	  the flow(s) it is handling to a given virtual circuit.
9652ab4ac2SThomas Graf
9799acaeb9SGabriel Craciunescu	  See the top of <file:net/sched/sch_atm.c> for more details.
981da177e4SLinus Torvalds
991da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
1001da177e4SLinus Torvalds	  module will be called sch_atm.
1011da177e4SLinus Torvalds
1021da177e4SLinus Torvaldsconfig NET_SCH_PRIO
10352ab4ac2SThomas Graf	tristate "Multi Band Priority Queueing (PRIO)"
104a7f7f624SMasahiro Yamada	help
1051da177e4SLinus Torvalds	  Say Y here if you want to use an n-band priority queue packet
10652ab4ac2SThomas Graf	  scheduler.
1071da177e4SLinus Torvalds
1081da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
1091da177e4SLinus Torvalds	  module will be called sch_prio.
1101da177e4SLinus Torvalds
11192651940SAlexander Duyckconfig NET_SCH_MULTIQ
11292651940SAlexander Duyck	tristate "Hardware Multiqueue-aware Multi Band Queuing (MULTIQ)"
113a7f7f624SMasahiro Yamada	help
11492651940SAlexander Duyck	  Say Y here if you want to use an n-band queue packet scheduler
11592651940SAlexander Duyck	  to support devices that have multiple hardware transmit queues.
11692651940SAlexander Duyck
11792651940SAlexander Duyck	  To compile this code as a module, choose M here: the
11892651940SAlexander Duyck	  module will be called sch_multiq.
11992651940SAlexander Duyck
1201da177e4SLinus Torvaldsconfig NET_SCH_RED
12152ab4ac2SThomas Graf	tristate "Random Early Detection (RED)"
122a7f7f624SMasahiro Yamada	help
1231da177e4SLinus Torvalds	  Say Y here if you want to use the Random Early Detection (RED)
12452ab4ac2SThomas Graf	  packet scheduling algorithm.
12552ab4ac2SThomas Graf
12652ab4ac2SThomas Graf	  See the top of <file:net/sched/sch_red.c> for more details.
1271da177e4SLinus Torvalds
1281da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
1291da177e4SLinus Torvalds	  module will be called sch_red.
1301da177e4SLinus Torvalds
131e13e02a3SEric Dumazetconfig NET_SCH_SFB
132e13e02a3SEric Dumazet	tristate "Stochastic Fair Blue (SFB)"
133a7f7f624SMasahiro Yamada	help
134e13e02a3SEric Dumazet	  Say Y here if you want to use the Stochastic Fair Blue (SFB)
135e13e02a3SEric Dumazet	  packet scheduling algorithm.
136e13e02a3SEric Dumazet
137e13e02a3SEric Dumazet	  See the top of <file:net/sched/sch_sfb.c> for more details.
138e13e02a3SEric Dumazet
139e13e02a3SEric Dumazet	  To compile this code as a module, choose M here: the
140e13e02a3SEric Dumazet	  module will be called sch_sfb.
141e13e02a3SEric Dumazet
1421da177e4SLinus Torvaldsconfig NET_SCH_SFQ
14352ab4ac2SThomas Graf	tristate "Stochastic Fairness Queueing (SFQ)"
144a7f7f624SMasahiro Yamada	help
1451da177e4SLinus Torvalds	  Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
14652ab4ac2SThomas Graf	  packet scheduling algorithm.
14752ab4ac2SThomas Graf
14852ab4ac2SThomas Graf	  See the top of <file:net/sched/sch_sfq.c> for more details.
1491da177e4SLinus Torvalds
1501da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
1511da177e4SLinus Torvalds	  module will be called sch_sfq.
1521da177e4SLinus Torvalds
1531da177e4SLinus Torvaldsconfig NET_SCH_TEQL
15452ab4ac2SThomas Graf	tristate "True Link Equalizer (TEQL)"
155a7f7f624SMasahiro Yamada	help
1561da177e4SLinus Torvalds	  Say Y here if you want to use the True Link Equalizer (TLE) packet
15752ab4ac2SThomas Graf	  scheduling algorithm. This queueing discipline allows the combination
15852ab4ac2SThomas Graf	  of several physical devices into one virtual device.
15952ab4ac2SThomas Graf
16052ab4ac2SThomas Graf	  See the top of <file:net/sched/sch_teql.c> for more details.
1611da177e4SLinus Torvalds
1621da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
1631da177e4SLinus Torvalds	  module will be called sch_teql.
1641da177e4SLinus Torvalds
1651da177e4SLinus Torvaldsconfig NET_SCH_TBF
16652ab4ac2SThomas Graf	tristate "Token Bucket Filter (TBF)"
167a7f7f624SMasahiro Yamada	help
16852ab4ac2SThomas Graf	  Say Y here if you want to use the Token Bucket Filter (TBF) packet
16952ab4ac2SThomas Graf	  scheduling algorithm.
17052ab4ac2SThomas Graf
17152ab4ac2SThomas Graf	  See the top of <file:net/sched/sch_tbf.c> for more details.
1721da177e4SLinus Torvalds
1731da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
1741da177e4SLinus Torvalds	  module will be called sch_tbf.
1751da177e4SLinus Torvalds
176585d763aSVinicius Costa Gomesconfig NET_SCH_CBS
177585d763aSVinicius Costa Gomes	tristate "Credit Based Shaper (CBS)"
178a7f7f624SMasahiro Yamada	help
179585d763aSVinicius Costa Gomes	  Say Y here if you want to use the Credit Based Shaper (CBS) packet
180585d763aSVinicius Costa Gomes	  scheduling algorithm.
181585d763aSVinicius Costa Gomes
182585d763aSVinicius Costa Gomes	  See the top of <file:net/sched/sch_cbs.c> for more details.
183585d763aSVinicius Costa Gomes
184585d763aSVinicius Costa Gomes	  To compile this code as a module, choose M here: the
185585d763aSVinicius Costa Gomes	  module will be called sch_cbs.
186585d763aSVinicius Costa Gomes
18725db26a9SVinicius Costa Gomesconfig NET_SCH_ETF
18825db26a9SVinicius Costa Gomes	tristate "Earliest TxTime First (ETF)"
18925db26a9SVinicius Costa Gomes	help
19025db26a9SVinicius Costa Gomes	  Say Y here if you want to use the Earliest TxTime First (ETF) packet
19125db26a9SVinicius Costa Gomes	  scheduling algorithm.
19225db26a9SVinicius Costa Gomes
19325db26a9SVinicius Costa Gomes	  See the top of <file:net/sched/sch_etf.c> for more details.
19425db26a9SVinicius Costa Gomes
19525db26a9SVinicius Costa Gomes	  To compile this code as a module, choose M here: the
19625db26a9SVinicius Costa Gomes	  module will be called sch_etf.
19725db26a9SVinicius Costa Gomes
198*1dfe086dSVladimir Olteanconfig NET_SCH_MQPRIO_LIB
199*1dfe086dSVladimir Oltean	tristate
200*1dfe086dSVladimir Oltean	help
201*1dfe086dSVladimir Oltean	  Common library for manipulating mqprio queue configurations.
202*1dfe086dSVladimir Oltean
2035a781ccbSVinicius Costa Gomesconfig NET_SCH_TAPRIO
2045a781ccbSVinicius Costa Gomes	tristate "Time Aware Priority (taprio) Scheduler"
205*1dfe086dSVladimir Oltean	select NET_SCH_MQPRIO_LIB
2065a781ccbSVinicius Costa Gomes	help
2075a781ccbSVinicius Costa Gomes	  Say Y here if you want to use the Time Aware Priority (taprio) packet
2085a781ccbSVinicius Costa Gomes	  scheduling algorithm.
2095a781ccbSVinicius Costa Gomes
2105a781ccbSVinicius Costa Gomes	  See the top of <file:net/sched/sch_taprio.c> for more details.
2115a781ccbSVinicius Costa Gomes
2125a781ccbSVinicius Costa Gomes	  To compile this code as a module, choose M here: the
2135a781ccbSVinicius Costa Gomes	  module will be called sch_taprio.
2145a781ccbSVinicius Costa Gomes
2151da177e4SLinus Torvaldsconfig NET_SCH_GRED
21652ab4ac2SThomas Graf	tristate "Generic Random Early Detection (GRED)"
217a7f7f624SMasahiro Yamada	help
2181da177e4SLinus Torvalds	  Say Y here if you want to use the Generic Random Early Detection
21920cc6befSLucas Correia Villa Real	  (GRED) packet scheduling algorithm for some of your network devices
2201da177e4SLinus Torvalds	  (see the top of <file:net/sched/sch_red.c> for details and
2211da177e4SLinus Torvalds	  references about the algorithm).
2221da177e4SLinus Torvalds
2231da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
2241da177e4SLinus Torvalds	  module will be called sch_gred.
2251da177e4SLinus Torvalds
2261da177e4SLinus Torvaldsconfig NET_SCH_DSMARK
22752ab4ac2SThomas Graf	tristate "Differentiated Services marker (DSMARK)"
228a7f7f624SMasahiro Yamada	help
2291da177e4SLinus Torvalds	  Say Y if you want to schedule packets according to the
2301da177e4SLinus Torvalds	  Differentiated Services architecture proposed in RFC 2475.
2311da177e4SLinus Torvalds	  Technical information on this method, with pointers to associated
2321da177e4SLinus Torvalds	  RFCs, is available at <http://www.gta.ufrj.br/diffserv/>.
2331da177e4SLinus Torvalds
2341da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
2351da177e4SLinus Torvalds	  module will be called sch_dsmark.
2361da177e4SLinus Torvalds
2371da177e4SLinus Torvaldsconfig NET_SCH_NETEM
23852ab4ac2SThomas Graf	tristate "Network emulator (NETEM)"
239a7f7f624SMasahiro Yamada	help
2401da177e4SLinus Torvalds	  Say Y if you want to emulate network delay, loss, and packet
2411da177e4SLinus Torvalds	  re-ordering. This is often useful to simulate networks when
2421da177e4SLinus Torvalds	  testing applications or protocols.
2431da177e4SLinus Torvalds
2441da177e4SLinus Torvalds	  To compile this driver as a module, choose M here: the module
2451da177e4SLinus Torvalds	  will be called sch_netem.
2461da177e4SLinus Torvalds
2471da177e4SLinus Torvalds	  If unsure, say N.
2481da177e4SLinus Torvalds
24913d2a1d2SPatrick McHardyconfig NET_SCH_DRR
25013d2a1d2SPatrick McHardy	tristate "Deficit Round Robin scheduler (DRR)"
25113d2a1d2SPatrick McHardy	help
25213d2a1d2SPatrick McHardy	  Say Y here if you want to use the Deficit Round Robin (DRR) packet
25313d2a1d2SPatrick McHardy	  scheduling algorithm.
25413d2a1d2SPatrick McHardy
25513d2a1d2SPatrick McHardy	  To compile this driver as a module, choose M here: the module
25613d2a1d2SPatrick McHardy	  will be called sch_drr.
25713d2a1d2SPatrick McHardy
25813d2a1d2SPatrick McHardy	  If unsure, say N.
25913d2a1d2SPatrick McHardy
260b8970f0bSJohn Fastabendconfig NET_SCH_MQPRIO
261b8970f0bSJohn Fastabend	tristate "Multi-queue priority scheduler (MQPRIO)"
262*1dfe086dSVladimir Oltean	select NET_SCH_MQPRIO_LIB
263b8970f0bSJohn Fastabend	help
264b8970f0bSJohn Fastabend	  Say Y here if you want to use the Multi-queue Priority scheduler.
265b8970f0bSJohn Fastabend	  This scheduler allows QOS to be offloaded on NICs that have support
266b8970f0bSJohn Fastabend	  for offloading QOS schedulers.
267b8970f0bSJohn Fastabend
268b8970f0bSJohn Fastabend	  To compile this driver as a module, choose M here: the module will
269b8970f0bSJohn Fastabend	  be called sch_mqprio.
270b8970f0bSJohn Fastabend
271b8970f0bSJohn Fastabend	  If unsure, say N.
272b8970f0bSJohn Fastabend
273aea5f654SNishanth Devarajanconfig NET_SCH_SKBPRIO
274aea5f654SNishanth Devarajan	tristate "SKB priority queue scheduler (SKBPRIO)"
275aea5f654SNishanth Devarajan	help
276aea5f654SNishanth Devarajan	  Say Y here if you want to use the SKB priority queue
277aea5f654SNishanth Devarajan	  scheduler. This schedules packets according to skb->priority,
278aea5f654SNishanth Devarajan	  which is useful for request packets in DoS mitigation systems such
279aea5f654SNishanth Devarajan	  as Gatekeeper.
280aea5f654SNishanth Devarajan
281aea5f654SNishanth Devarajan	  To compile this driver as a module, choose M here: the module will
282aea5f654SNishanth Devarajan	  be called sch_skbprio.
283aea5f654SNishanth Devarajan
284aea5f654SNishanth Devarajan	  If unsure, say N.
285aea5f654SNishanth Devarajan
28645e14433Sstephen hemmingerconfig NET_SCH_CHOKE
28745e14433Sstephen hemminger	tristate "CHOose and Keep responsive flow scheduler (CHOKE)"
28845e14433Sstephen hemminger	help
28945e14433Sstephen hemminger	  Say Y here if you want to use the CHOKe packet scheduler (CHOose
29045e14433Sstephen hemminger	  and Keep for responsive flows, CHOose and Kill for unresponsive
2918354bcbeSColin Ian King	  flows). This is a variation of RED which tries to penalize flows
29245e14433Sstephen hemminger	  that monopolize the queue.
29345e14433Sstephen hemminger
29445e14433Sstephen hemminger	  To compile this code as a module, choose M here: the
29545e14433Sstephen hemminger	  module will be called sch_choke.
29645e14433Sstephen hemminger
2970545a303Sstephen hemmingerconfig NET_SCH_QFQ
2980545a303Sstephen hemminger	tristate "Quick Fair Queueing scheduler (QFQ)"
2990545a303Sstephen hemminger	help
3000545a303Sstephen hemminger	  Say Y here if you want to use the Quick Fair Queueing Scheduler (QFQ)
3010545a303Sstephen hemminger	  packet scheduling algorithm.
3020545a303Sstephen hemminger
3030545a303Sstephen hemminger	  To compile this driver as a module, choose M here: the module
3040545a303Sstephen hemminger	  will be called sch_qfq.
3050545a303Sstephen hemminger
3060545a303Sstephen hemminger	  If unsure, say N.
3070545a303Sstephen hemminger
30876e3cc12SEric Dumazetconfig NET_SCH_CODEL
30976e3cc12SEric Dumazet	tristate "Controlled Delay AQM (CODEL)"
31076e3cc12SEric Dumazet	help
31176e3cc12SEric Dumazet	  Say Y here if you want to use the Controlled Delay (CODEL)
31276e3cc12SEric Dumazet	  packet scheduling algorithm.
31376e3cc12SEric Dumazet
31476e3cc12SEric Dumazet	  To compile this driver as a module, choose M here: the module
31576e3cc12SEric Dumazet	  will be called sch_codel.
31676e3cc12SEric Dumazet
31776e3cc12SEric Dumazet	  If unsure, say N.
31876e3cc12SEric Dumazet
3194b549a2eSEric Dumazetconfig NET_SCH_FQ_CODEL
3204b549a2eSEric Dumazet	tristate "Fair Queue Controlled Delay AQM (FQ_CODEL)"
3214b549a2eSEric Dumazet	help
3224b549a2eSEric Dumazet	  Say Y here if you want to use the FQ Controlled Delay (FQ_CODEL)
3234b549a2eSEric Dumazet	  packet scheduling algorithm.
3244b549a2eSEric Dumazet
3254b549a2eSEric Dumazet	  To compile this driver as a module, choose M here: the module
3264b549a2eSEric Dumazet	  will be called sch_fq_codel.
3274b549a2eSEric Dumazet
3284b549a2eSEric Dumazet	  If unsure, say N.
3294b549a2eSEric Dumazet
330046f6fd5SToke Høiland-Jørgensenconfig NET_SCH_CAKE
331046f6fd5SToke Høiland-Jørgensen	tristate "Common Applications Kept Enhanced (CAKE)"
332046f6fd5SToke Høiland-Jørgensen	help
333046f6fd5SToke Høiland-Jørgensen	  Say Y here if you want to use the Common Applications Kept Enhanced
334046f6fd5SToke Høiland-Jørgensen	  (CAKE) queue management algorithm.
335046f6fd5SToke Høiland-Jørgensen
336046f6fd5SToke Høiland-Jørgensen	  To compile this driver as a module, choose M here: the module
337046f6fd5SToke Høiland-Jørgensen	  will be called sch_cake.
338046f6fd5SToke Høiland-Jørgensen
339046f6fd5SToke Høiland-Jørgensen	  If unsure, say N.
340046f6fd5SToke Høiland-Jørgensen
341afe4fd06SEric Dumazetconfig NET_SCH_FQ
342afe4fd06SEric Dumazet	tristate "Fair Queue"
343afe4fd06SEric Dumazet	help
344afe4fd06SEric Dumazet	  Say Y here if you want to use the FQ packet scheduling algorithm.
345afe4fd06SEric Dumazet
346afe4fd06SEric Dumazet	  FQ does flow separation, and is able to respect pacing requirements
3476a7a2c18SRandy Dunlap	  set by TCP stack into sk->sk_pacing_rate (for locally generated
348afe4fd06SEric Dumazet	  traffic)
349afe4fd06SEric Dumazet
350afe4fd06SEric Dumazet	  To compile this driver as a module, choose M here: the module
351afe4fd06SEric Dumazet	  will be called sch_fq.
352afe4fd06SEric Dumazet
353afe4fd06SEric Dumazet	  If unsure, say N.
354afe4fd06SEric Dumazet
35510239edfSTerry Lamconfig NET_SCH_HHF
35610239edfSTerry Lam	tristate "Heavy-Hitter Filter (HHF)"
35710239edfSTerry Lam	help
35810239edfSTerry Lam	  Say Y here if you want to use the Heavy-Hitter Filter (HHF)
35910239edfSTerry Lam	  packet scheduling algorithm.
36010239edfSTerry Lam
36110239edfSTerry Lam	  To compile this driver as a module, choose M here: the module
36210239edfSTerry Lam	  will be called sch_hhf.
36310239edfSTerry Lam
364d4b36210SVijay Subramanianconfig NET_SCH_PIE
365d4b36210SVijay Subramanian	tristate "Proportional Integral controller Enhanced (PIE) scheduler"
366d4b36210SVijay Subramanian	help
367d4b36210SVijay Subramanian	  Say Y here if you want to use the Proportional Integral controller
368d4b36210SVijay Subramanian	  Enhanced scheduler packet scheduling algorithm.
3691f8389bfSLeslie Monis	  For more information, please see https://tools.ietf.org/html/rfc8033
370d4b36210SVijay Subramanian
371d4b36210SVijay Subramanian	  To compile this driver as a module, choose M here: the module
372d4b36210SVijay Subramanian	  will be called sch_pie.
373d4b36210SVijay Subramanian
374d4b36210SVijay Subramanian	  If unsure, say N.
375d4b36210SVijay Subramanian
376ec97ecf1SMohit P. Tahilianiconfig NET_SCH_FQ_PIE
377ec97ecf1SMohit P. Tahiliani	depends on NET_SCH_PIE
378ec97ecf1SMohit P. Tahiliani	tristate "Flow Queue Proportional Integral controller Enhanced (FQ-PIE)"
379ec97ecf1SMohit P. Tahiliani	help
380ec97ecf1SMohit P. Tahiliani	  Say Y here if you want to use the Flow Queue Proportional Integral
381ec97ecf1SMohit P. Tahiliani	  controller Enhanced (FQ-PIE) packet scheduling algorithm.
382ec97ecf1SMohit P. Tahiliani	  For more information, please see https://tools.ietf.org/html/rfc8033
383ec97ecf1SMohit P. Tahiliani
384ec97ecf1SMohit P. Tahiliani	  To compile this driver as a module, choose M here: the module
385ec97ecf1SMohit P. Tahiliani	  will be called sch_fq_pie.
386ec97ecf1SMohit P. Tahiliani
387ec97ecf1SMohit P. Tahiliani	  If unsure, say N.
388ec97ecf1SMohit P. Tahiliani
3891da177e4SLinus Torvaldsconfig NET_SCH_INGRESS
3901f211a1bSDaniel Borkmann	tristate "Ingress/classifier-action Qdisc"
39172eb7bd2SPatrick McHardy	depends on NET_CLS_ACT
3921cf51900SPablo Neira	select NET_INGRESS
3931f211a1bSDaniel Borkmann	select NET_EGRESS
394a7f7f624SMasahiro Yamada	help
3951f211a1bSDaniel Borkmann	  Say Y here if you want to use classifiers for incoming and/or outgoing
3961f211a1bSDaniel Borkmann	  packets. This qdisc doesn't do anything else besides running classifiers,
3971f211a1bSDaniel Borkmann	  which can also have actions attached to them. In case of outgoing packets,
3981f211a1bSDaniel Borkmann	  classifiers that this qdisc holds are executed in the transmit path
3991f211a1bSDaniel Borkmann	  before real enqueuing to an egress qdisc happens.
4001f211a1bSDaniel Borkmann
4011da177e4SLinus Torvalds	  If unsure, say Y.
4021da177e4SLinus Torvalds
4031f211a1bSDaniel Borkmann	  To compile this code as a module, choose M here: the module will be
4041f211a1bSDaniel Borkmann	  called sch_ingress with alias of sch_clsact.
4051da177e4SLinus Torvalds
406c3059be1SShriram Rajagopalanconfig NET_SCH_PLUG
407c3059be1SShriram Rajagopalan	tristate "Plug network traffic until release (PLUG)"
408a7f7f624SMasahiro Yamada	help
409c3059be1SShriram Rajagopalan
410c3059be1SShriram Rajagopalan	  This queuing discipline allows userspace to plug/unplug a network
411c3059be1SShriram Rajagopalan	  output queue, using the netlink interface.  When it receives an
412c3059be1SShriram Rajagopalan	  enqueue command it inserts a plug into the outbound queue that
413c3059be1SShriram Rajagopalan	  causes following packets to enqueue until a dequeue command arrives
414c3059be1SShriram Rajagopalan	  over netlink, causing the plug to be removed and resuming the normal
415c3059be1SShriram Rajagopalan	  packet flow.
416c3059be1SShriram Rajagopalan
417c3059be1SShriram Rajagopalan	  This module also provides a generic "network output buffering"
418c3059be1SShriram Rajagopalan	  functionality (aka output commit), wherein upon arrival of a dequeue
419c3059be1SShriram Rajagopalan	  command, only packets up to the first plug are released for delivery.
420c3059be1SShriram Rajagopalan	  The Remus HA project uses this module to enable speculative execution
421c3059be1SShriram Rajagopalan	  of virtual machines by allowing the generated network output to be rolled
422c3059be1SShriram Rajagopalan	  back if needed.
423c3059be1SShriram Rajagopalan
4245d330cddSAndrew Shewmaker	  For more information, please refer to <http://wiki.xenproject.org/wiki/Remus>
425c3059be1SShriram Rajagopalan
426c3059be1SShriram Rajagopalan	  Say Y here if you are using this kernel for Xen dom0 and
427c3059be1SShriram Rajagopalan	  want to protect Xen guests with Remus.
428c3059be1SShriram Rajagopalan
429c3059be1SShriram Rajagopalan	  To compile this code as a module, choose M here: the
430c3059be1SShriram Rajagopalan	  module will be called sch_plug.
431c3059be1SShriram Rajagopalan
432dcc68b4dSPetr Machataconfig NET_SCH_ETS
433dcc68b4dSPetr Machata	tristate "Enhanced transmission selection scheduler (ETS)"
434dcc68b4dSPetr Machata	help
435dcc68b4dSPetr Machata          The Enhanced Transmission Selection scheduler is a classful
436dcc68b4dSPetr Machata          queuing discipline that merges functionality of PRIO and DRR
437dcc68b4dSPetr Machata          qdiscs in one scheduler. ETS makes it easy to configure a set of
438dcc68b4dSPetr Machata          strict and bandwidth-sharing bands to implement the transmission
439dcc68b4dSPetr Machata          selection described in 802.1Qaz.
440dcc68b4dSPetr Machata
441dcc68b4dSPetr Machata	  Say Y here if you want to use the ETS packet scheduling
442dcc68b4dSPetr Machata	  algorithm.
443dcc68b4dSPetr Machata
444dcc68b4dSPetr Machata	  To compile this driver as a module, choose M here: the module
445dcc68b4dSPetr Machata	  will be called sch_ets.
446dcc68b4dSPetr Machata
447dcc68b4dSPetr Machata	  If unsure, say N.
448dcc68b4dSPetr Machata
4498ea3e439Sstephen hemmingermenuconfig NET_SCH_DEFAULT
4508ea3e439Sstephen hemminger	bool "Allow override default queue discipline"
451a7f7f624SMasahiro Yamada	help
4528ea3e439Sstephen hemminger	  Support for selection of default queuing discipline.
4538ea3e439Sstephen hemminger
4548ea3e439Sstephen hemminger	  Nearly all users can safely say no here, and the default
4558ea3e439Sstephen hemminger	  of pfifo_fast will be used. Many distributions already set
4568ea3e439Sstephen hemminger	  the default value via /proc/sys/net/core/default_qdisc.
4578ea3e439Sstephen hemminger
4588ea3e439Sstephen hemminger	  If unsure, say N.
4598ea3e439Sstephen hemminger
4608ea3e439Sstephen hemmingerif NET_SCH_DEFAULT
4618ea3e439Sstephen hemminger
4628ea3e439Sstephen hemmingerchoice
4638ea3e439Sstephen hemminger	prompt "Default queuing discipline"
4648ea3e439Sstephen hemminger	default DEFAULT_PFIFO_FAST
4658ea3e439Sstephen hemminger	help
4668ea3e439Sstephen hemminger	  Select the queueing discipline that will be used by default
4678ea3e439Sstephen hemminger	  for all network devices.
4688ea3e439Sstephen hemminger
4698ea3e439Sstephen hemminger	config DEFAULT_FQ
4708ea3e439Sstephen hemminger		bool "Fair Queue" if NET_SCH_FQ
4718ea3e439Sstephen hemminger
4728ea3e439Sstephen hemminger	config DEFAULT_CODEL
4738ea3e439Sstephen hemminger		bool "Controlled Delay" if NET_SCH_CODEL
4748ea3e439Sstephen hemminger
4758ea3e439Sstephen hemminger	config DEFAULT_FQ_CODEL
4768ea3e439Sstephen hemminger		bool "Fair Queue Controlled Delay" if NET_SCH_FQ_CODEL
4778ea3e439Sstephen hemminger
478b97e9d9dSDanny Lin	config DEFAULT_FQ_PIE
479b97e9d9dSDanny Lin		bool "Flow Queue Proportional Integral controller Enhanced" if NET_SCH_FQ_PIE
480b97e9d9dSDanny Lin
4818ea3e439Sstephen hemminger	config DEFAULT_SFQ
4828ea3e439Sstephen hemminger		bool "Stochastic Fair Queue" if NET_SCH_SFQ
4838ea3e439Sstephen hemminger
4848ea3e439Sstephen hemminger	config DEFAULT_PFIFO_FAST
4858ea3e439Sstephen hemminger		bool "Priority FIFO Fast"
4868ea3e439Sstephen hemmingerendchoice
4878ea3e439Sstephen hemminger
4888ea3e439Sstephen hemmingerconfig DEFAULT_NET_SCH
4898ea3e439Sstephen hemminger	string
4908ea3e439Sstephen hemminger	default "pfifo_fast" if DEFAULT_PFIFO_FAST
4918ea3e439Sstephen hemminger	default "fq" if DEFAULT_FQ
4928ea3e439Sstephen hemminger	default "fq_codel" if DEFAULT_FQ_CODEL
493b97e9d9dSDanny Lin	default "fq_pie" if DEFAULT_FQ_PIE
4948ea3e439Sstephen hemminger	default "sfq" if DEFAULT_SFQ
4958ea3e439Sstephen hemminger	default "pfifo_fast"
4968ea3e439Sstephen hemmingerendif
4978ea3e439Sstephen hemminger
49852ab4ac2SThomas Grafcomment "Classification"
4991da177e4SLinus Torvalds
5001da177e4SLinus Torvaldsconfig NET_CLS
5016341e62bSChristoph Jaeger	bool
5021da177e4SLinus Torvalds
5031da177e4SLinus Torvaldsconfig NET_CLS_BASIC
50452ab4ac2SThomas Graf	tristate "Elementary classification (BASIC)"
50552ab4ac2SThomas Graf	select NET_CLS
506a7f7f624SMasahiro Yamada	help
5071da177e4SLinus Torvalds	  Say Y here if you want to be able to classify packets using
5081da177e4SLinus Torvalds	  only extended matches and actions.
5091da177e4SLinus Torvalds
5101da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
5111da177e4SLinus Torvalds	  module will be called cls_basic.
5121da177e4SLinus Torvalds
5131da177e4SLinus Torvaldsconfig NET_CLS_TCINDEX
51452ab4ac2SThomas Graf	tristate "Traffic-Control Index (TCINDEX)"
51552ab4ac2SThomas Graf	select NET_CLS
516a7f7f624SMasahiro Yamada	help
51752ab4ac2SThomas Graf	  Say Y here if you want to be able to classify packets based on
51852ab4ac2SThomas Graf	  traffic control indices. You will want this feature if you want
51952ab4ac2SThomas Graf	  to implement Differentiated Services together with DSMARK.
5201da177e4SLinus Torvalds
5211da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
5221da177e4SLinus Torvalds	  module will be called cls_tcindex.
5231da177e4SLinus Torvalds
5241da177e4SLinus Torvaldsconfig NET_CLS_ROUTE4
52552ab4ac2SThomas Graf	tristate "Routing decision (ROUTE)"
526034cfe48SRandy Dunlap	depends on INET
527c7066f70SPatrick McHardy	select IP_ROUTE_CLASSID
52852ab4ac2SThomas Graf	select NET_CLS
529a7f7f624SMasahiro Yamada	help
53052ab4ac2SThomas Graf	  If you say Y here, you will be able to classify packets
53152ab4ac2SThomas Graf	  according to the route table entry they matched.
5321da177e4SLinus Torvalds
5331da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
5341da177e4SLinus Torvalds	  module will be called cls_route.
5351da177e4SLinus Torvalds
5361da177e4SLinus Torvaldsconfig NET_CLS_FW
53752ab4ac2SThomas Graf	tristate "Netfilter mark (FW)"
53852ab4ac2SThomas Graf	select NET_CLS
539a7f7f624SMasahiro Yamada	help
54052ab4ac2SThomas Graf	  If you say Y here, you will be able to classify packets
54152ab4ac2SThomas Graf	  according to netfilter/firewall marks.
5421da177e4SLinus Torvalds
5431da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
5441da177e4SLinus Torvalds	  module will be called cls_fw.
5451da177e4SLinus Torvalds
5461da177e4SLinus Torvaldsconfig NET_CLS_U32
54752ab4ac2SThomas Graf	tristate "Universal 32bit comparisons w/ hashing (U32)"
54852ab4ac2SThomas Graf	select NET_CLS
549a7f7f624SMasahiro Yamada	help
5503539c272SMatt LaPlante	  Say Y here to be able to classify packets using a universal
55152ab4ac2SThomas Graf	  32bit pieces based comparison scheme.
5521da177e4SLinus Torvalds
5531da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
5541da177e4SLinus Torvalds	  module will be called cls_u32.
5551da177e4SLinus Torvalds
5561da177e4SLinus Torvaldsconfig CLS_U32_PERF
55752ab4ac2SThomas Graf	bool "Performance counters support"
5581da177e4SLinus Torvalds	depends on NET_CLS_U32
559a7f7f624SMasahiro Yamada	help
56052ab4ac2SThomas Graf	  Say Y here to make u32 gather additional statistics useful for
56152ab4ac2SThomas Graf	  fine tuning u32 classifiers.
5621da177e4SLinus Torvalds
5631da177e4SLinus Torvaldsconfig CLS_U32_MARK
56452ab4ac2SThomas Graf	bool "Netfilter marks support"
56582e91ffeSThomas Graf	depends on NET_CLS_U32
566a7f7f624SMasahiro Yamada	help
56752ab4ac2SThomas Graf	  Say Y here to be able to use netfilter marks as u32 key.
5681da177e4SLinus Torvalds
5691da177e4SLinus Torvaldsconfig NET_CLS_RSVP
57052ab4ac2SThomas Graf	tristate "IPv4 Resource Reservation Protocol (RSVP)"
57152ab4ac2SThomas Graf	select NET_CLS
572a7f7f624SMasahiro Yamada	help
5731da177e4SLinus Torvalds	  The Resource Reservation Protocol (RSVP) permits end systems to
5741da177e4SLinus Torvalds	  request a minimum and maximum data flow rate for a connection; this
5751da177e4SLinus Torvalds	  is important for real time data such as streaming sound or video.
5761da177e4SLinus Torvalds
5771da177e4SLinus Torvalds	  Say Y here if you want to be able to classify outgoing packets based
5781da177e4SLinus Torvalds	  on their RSVP requests.
5791da177e4SLinus Torvalds
5801da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
5811da177e4SLinus Torvalds	  module will be called cls_rsvp.
5821da177e4SLinus Torvalds
5831da177e4SLinus Torvaldsconfig NET_CLS_RSVP6
58452ab4ac2SThomas Graf	tristate "IPv6 Resource Reservation Protocol (RSVP6)"
58552ab4ac2SThomas Graf	select NET_CLS
586a7f7f624SMasahiro Yamada	help
5871da177e4SLinus Torvalds	  The Resource Reservation Protocol (RSVP) permits end systems to
5881da177e4SLinus Torvalds	  request a minimum and maximum data flow rate for a connection; this
5891da177e4SLinus Torvalds	  is important for real time data such as streaming sound or video.
5901da177e4SLinus Torvalds
5911da177e4SLinus Torvalds	  Say Y here if you want to be able to classify outgoing packets based
59299acaeb9SGabriel Craciunescu	  on their RSVP requests and you are using the IPv6 protocol.
5931da177e4SLinus Torvalds
5941da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
5951da177e4SLinus Torvalds	  module will be called cls_rsvp6.
5961da177e4SLinus Torvalds
597e5dfb815SPatrick McHardyconfig NET_CLS_FLOW
598e5dfb815SPatrick McHardy	tristate "Flow classifier"
599e5dfb815SPatrick McHardy	select NET_CLS
600a7f7f624SMasahiro Yamada	help
601e5dfb815SPatrick McHardy	  If you say Y here, you will be able to classify packets based on
602e5dfb815SPatrick McHardy	  a configurable combination of packet keys. This is mostly useful
603e5dfb815SPatrick McHardy	  in combination with SFQ.
604e5dfb815SPatrick McHardy
605e5dfb815SPatrick McHardy	  To compile this code as a module, choose M here: the
606e5dfb815SPatrick McHardy	  module will be called cls_flow.
607e5dfb815SPatrick McHardy
608f4009237SThomas Grafconfig NET_CLS_CGROUP
6098e039d84SBen Blum	tristate "Control Group Classifier"
610f4009237SThomas Graf	select NET_CLS
611fe1217c4SDaniel Borkmann	select CGROUP_NET_CLASSID
612f4009237SThomas Graf	depends on CGROUPS
613a7f7f624SMasahiro Yamada	help
614f4009237SThomas Graf	  Say Y here if you want to classify packets based on the control
615f4009237SThomas Graf	  cgroup of their process.
616f4009237SThomas Graf
6178e039d84SBen Blum	  To compile this code as a module, choose M here: the
6188e039d84SBen Blum	  module will be called cls_cgroup.
6198e039d84SBen Blum
6207d1d65cbSDaniel Borkmannconfig NET_CLS_BPF
6217d1d65cbSDaniel Borkmann	tristate "BPF-based classifier"
6227d1d65cbSDaniel Borkmann	select NET_CLS
623a7f7f624SMasahiro Yamada	help
6247d1d65cbSDaniel Borkmann	  If you say Y here, you will be able to classify packets based on
6257d1d65cbSDaniel Borkmann	  programmable BPF (JIT'ed) filters as an alternative to ematches.
6267d1d65cbSDaniel Borkmann
6277d1d65cbSDaniel Borkmann	  To compile this code as a module, choose M here: the module will
6287d1d65cbSDaniel Borkmann	  be called cls_bpf.
6297d1d65cbSDaniel Borkmann
63077b9900eSJiri Pirkoconfig NET_CLS_FLOWER
63177b9900eSJiri Pirko	tristate "Flower classifier"
63277b9900eSJiri Pirko	select NET_CLS
633a7f7f624SMasahiro Yamada	help
63477b9900eSJiri Pirko	  If you say Y here, you will be able to classify packets based on
63577b9900eSJiri Pirko	  a configurable combination of packet keys and masks.
63677b9900eSJiri Pirko
63777b9900eSJiri Pirko	  To compile this code as a module, choose M here: the module will
63877b9900eSJiri Pirko	  be called cls_flower.
63977b9900eSJiri Pirko
640bf3994d2SJiri Pirkoconfig NET_CLS_MATCHALL
641bf3994d2SJiri Pirko	tristate "Match-all classifier"
642bf3994d2SJiri Pirko	select NET_CLS
643a7f7f624SMasahiro Yamada	help
644bf3994d2SJiri Pirko	  If you say Y here, you will be able to classify packets based on
645bf3994d2SJiri Pirko	  nothing. Every packet will match.
646bf3994d2SJiri Pirko
647bf3994d2SJiri Pirko	  To compile this code as a module, choose M here: the module will
648bf3994d2SJiri Pirko	  be called cls_matchall.
649bf3994d2SJiri Pirko
6501da177e4SLinus Torvaldsconfig NET_EMATCH
6511da177e4SLinus Torvalds	bool "Extended Matches"
65252ab4ac2SThomas Graf	select NET_CLS
653a7f7f624SMasahiro Yamada	help
6541da177e4SLinus Torvalds	  Say Y here if you want to use extended matches on top of classifiers
6551da177e4SLinus Torvalds	  and select the extended matches below.
6561da177e4SLinus Torvalds
6571da177e4SLinus Torvalds	  Extended matches are small classification helpers not worth writing
65852ab4ac2SThomas Graf	  a separate classifier for.
6591da177e4SLinus Torvalds
66052ab4ac2SThomas Graf	  A recent version of the iproute2 package is required to use
6611da177e4SLinus Torvalds	  extended matches.
6621da177e4SLinus Torvalds
6631da177e4SLinus Torvaldsconfig NET_EMATCH_STACK
6641da177e4SLinus Torvalds	int "Stack size"
6651da177e4SLinus Torvalds	depends on NET_EMATCH
6661da177e4SLinus Torvalds	default "32"
667a7f7f624SMasahiro Yamada	help
6681da177e4SLinus Torvalds	  Size of the local stack variable used while evaluating the tree of
6691da177e4SLinus Torvalds	  ematches. Limits the depth of the tree, i.e. the number of
670b824979aSThomas Graf	  encapsulated precedences. Every level requires 4 bytes of additional
6711da177e4SLinus Torvalds	  stack space.
6721da177e4SLinus Torvalds
6731da177e4SLinus Torvaldsconfig NET_EMATCH_CMP
6741da177e4SLinus Torvalds	tristate "Simple packet data comparison"
6751da177e4SLinus Torvalds	depends on NET_EMATCH
676a7f7f624SMasahiro Yamada	help
6771da177e4SLinus Torvalds	  Say Y here if you want to be able to classify packets based on
6781da177e4SLinus Torvalds	  simple packet data comparisons for 8, 16, and 32bit values.
6791da177e4SLinus Torvalds
6801da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
6811da177e4SLinus Torvalds	  module will be called em_cmp.
6821da177e4SLinus Torvalds
6831da177e4SLinus Torvaldsconfig NET_EMATCH_NBYTE
6841da177e4SLinus Torvalds	tristate "Multi byte comparison"
6851da177e4SLinus Torvalds	depends on NET_EMATCH
686a7f7f624SMasahiro Yamada	help
6871da177e4SLinus Torvalds	  Say Y here if you want to be able to classify packets based on
6881da177e4SLinus Torvalds	  multiple byte comparisons mainly useful for IPv6 address comparisons.
6891da177e4SLinus Torvalds
6901da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
6911da177e4SLinus Torvalds	  module will be called em_nbyte.
6921da177e4SLinus Torvalds
6931da177e4SLinus Torvaldsconfig NET_EMATCH_U32
69452ab4ac2SThomas Graf	tristate "U32 key"
6951da177e4SLinus Torvalds	depends on NET_EMATCH
696a7f7f624SMasahiro Yamada	help
6971da177e4SLinus Torvalds	  Say Y here if you want to be able to classify packets using
6981da177e4SLinus Torvalds	  the famous u32 key in combination with logic relations.
6991da177e4SLinus Torvalds
7001da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
7011da177e4SLinus Torvalds	  module will be called em_u32.
7021da177e4SLinus Torvalds
7031da177e4SLinus Torvaldsconfig NET_EMATCH_META
7041da177e4SLinus Torvalds	tristate "Metadata"
7051da177e4SLinus Torvalds	depends on NET_EMATCH
706a7f7f624SMasahiro Yamada	help
707bb7e8c5aSAdrian Bunk	  Say Y here if you want to be able to classify packets based on
7081da177e4SLinus Torvalds	  metadata such as load average, netfilter attributes, socket
7091da177e4SLinus Torvalds	  attributes and routing decisions.
7101da177e4SLinus Torvalds
7111da177e4SLinus Torvalds	  To compile this code as a module, choose M here: the
7121da177e4SLinus Torvalds	  module will be called em_meta.
7131da177e4SLinus Torvalds
714d675c989SThomas Grafconfig NET_EMATCH_TEXT
715d675c989SThomas Graf	tristate "Textsearch"
716d675c989SThomas Graf	depends on NET_EMATCH
717f2d368faSDavid S. Miller	select TEXTSEARCH
718f7704347SDavid S. Miller	select TEXTSEARCH_KMP
71929cb9f9cSDavid S. Miller	select TEXTSEARCH_BM
720f7704347SDavid S. Miller	select TEXTSEARCH_FSM
721a7f7f624SMasahiro Yamada	help
72252ab4ac2SThomas Graf	  Say Y here if you want to be able to classify packets based on
723f7704347SDavid S. Miller	  textsearch comparisons.
724d675c989SThomas Graf
725d675c989SThomas Graf	  To compile this code as a module, choose M here: the
726d675c989SThomas Graf	  module will be called em_text.
727d675c989SThomas Graf
728f057bbb6SRostislav Lisovyconfig NET_EMATCH_CANID
729f057bbb6SRostislav Lisovy	tristate "CAN Identifier"
730a303fbf3SMarc Kleine-Budde	depends on NET_EMATCH && (CAN=y || CAN=m)
731a7f7f624SMasahiro Yamada	help
732f057bbb6SRostislav Lisovy	  Say Y here if you want to be able to classify CAN frames based
733f057bbb6SRostislav Lisovy	  on CAN Identifier.
734f057bbb6SRostislav Lisovy
735f057bbb6SRostislav Lisovy	  To compile this code as a module, choose M here: the
736f057bbb6SRostislav Lisovy	  module will be called em_canid.
737f057bbb6SRostislav Lisovy
7386d4fa852SFlorian Westphalconfig NET_EMATCH_IPSET
7396d4fa852SFlorian Westphal	tristate "IPset"
7406d4fa852SFlorian Westphal	depends on NET_EMATCH && IP_SET
741a7f7f624SMasahiro Yamada	help
7426d4fa852SFlorian Westphal	  Say Y here if you want to be able to classify packets based on
7436d4fa852SFlorian Westphal	  ipset membership.
7446d4fa852SFlorian Westphal
7456d4fa852SFlorian Westphal	  To compile this code as a module, choose M here: the
7466d4fa852SFlorian Westphal	  module will be called em_ipset.
7476d4fa852SFlorian Westphal
748ccc007e4SEyal Birgerconfig NET_EMATCH_IPT
749ccc007e4SEyal Birger	tristate "IPtables Matches"
750ccc007e4SEyal Birger	depends on NET_EMATCH && NETFILTER && NETFILTER_XTABLES
751a7f7f624SMasahiro Yamada	help
752ccc007e4SEyal Birger	  Say Y here to be able to classify packets based on iptables
753ccc007e4SEyal Birger	  matches.
754ccc007e4SEyal Birger	  Current supported match is "policy" which allows packet classification
755ccc007e4SEyal Birger	  based on IPsec policy that was used during decapsulation
756ccc007e4SEyal Birger
757ccc007e4SEyal Birger	  To compile this code as a module, choose M here: the
758ccc007e4SEyal Birger	  module will be called em_ipt.
759ccc007e4SEyal Birger
7601da177e4SLinus Torvaldsconfig NET_CLS_ACT
76152ab4ac2SThomas Graf	bool "Actions"
7628ec1507dSJiri Pirko	select NET_CLS
763a7f7f624SMasahiro Yamada	help
76452ab4ac2SThomas Graf	  Say Y here if you want to use traffic control actions. Actions
76552ab4ac2SThomas Graf	  get attached to classifiers and are invoked after a successful
76652ab4ac2SThomas Graf	  classification. They are used to overwrite the classification
76752ab4ac2SThomas Graf	  result, instantly drop or redirect packets, etc.
76852ab4ac2SThomas Graf
76952ab4ac2SThomas Graf	  A recent version of the iproute2 package is required to use
77052ab4ac2SThomas Graf	  extended matches.
7711da177e4SLinus Torvalds
7721da177e4SLinus Torvaldsconfig NET_ACT_POLICE
77352ab4ac2SThomas Graf	tristate "Traffic Policing"
7741da177e4SLinus Torvalds	depends on NET_CLS_ACT
775a7f7f624SMasahiro Yamada	help
77652ab4ac2SThomas Graf	  Say Y here if you want to do traffic policing, i.e. strict
77752ab4ac2SThomas Graf	  bandwidth limiting. This action replaces the existing policing
77852ab4ac2SThomas Graf	  module.
77952ab4ac2SThomas Graf
78052ab4ac2SThomas Graf	  To compile this code as a module, choose M here: the
781d4ae20b3SJan Luebbe	  module will be called act_police.
7821da177e4SLinus Torvalds
7831da177e4SLinus Torvaldsconfig NET_ACT_GACT
78452ab4ac2SThomas Graf	tristate "Generic actions"
7851da177e4SLinus Torvalds	depends on NET_CLS_ACT
786a7f7f624SMasahiro Yamada	help
78752ab4ac2SThomas Graf	  Say Y here to take generic actions such as dropping and
78852ab4ac2SThomas Graf	  accepting packets.
78952ab4ac2SThomas Graf
79052ab4ac2SThomas Graf	  To compile this code as a module, choose M here: the
791d4ae20b3SJan Luebbe	  module will be called act_gact.
7921da177e4SLinus Torvalds
7931da177e4SLinus Torvaldsconfig GACT_PROB
79452ab4ac2SThomas Graf	bool "Probability support"
7951da177e4SLinus Torvalds	depends on NET_ACT_GACT
796a7f7f624SMasahiro Yamada	help
79752ab4ac2SThomas Graf	  Say Y here to use the generic action randomly or deterministically.
7981da177e4SLinus Torvalds
7991da177e4SLinus Torvaldsconfig NET_ACT_MIRRED
80052ab4ac2SThomas Graf	tristate "Redirecting and Mirroring"
8011da177e4SLinus Torvalds	depends on NET_CLS_ACT
802a7f7f624SMasahiro Yamada	help
80352ab4ac2SThomas Graf	  Say Y here to allow packets to be mirrored or redirected to
80452ab4ac2SThomas Graf	  other devices.
80552ab4ac2SThomas Graf
80652ab4ac2SThomas Graf	  To compile this code as a module, choose M here: the
807d4ae20b3SJan Luebbe	  module will be called act_mirred.
8081da177e4SLinus Torvalds
8095c5670faSYotam Gigiconfig NET_ACT_SAMPLE
8105c5670faSYotam Gigi	tristate "Traffic Sampling"
8115c5670faSYotam Gigi	depends on NET_CLS_ACT
8125c5670faSYotam Gigi	select PSAMPLE
813a7f7f624SMasahiro Yamada	help
8145c5670faSYotam Gigi	  Say Y here to allow packet sampling tc action. The packet sample
8155c5670faSYotam Gigi	  action consists of statistically choosing packets and sampling
8165c5670faSYotam Gigi	  them using the psample module.
8175c5670faSYotam Gigi
8185c5670faSYotam Gigi	  To compile this code as a module, choose M here: the
8195c5670faSYotam Gigi	  module will be called act_sample.
8205c5670faSYotam Gigi
8211da177e4SLinus Torvaldsconfig NET_ACT_IPT
82252ab4ac2SThomas Graf	tristate "IPtables targets"
823102e2c07SPablo Neira Ayuso	depends on NET_CLS_ACT && NETFILTER && NETFILTER_XTABLES
824a7f7f624SMasahiro Yamada	help
8253539c272SMatt LaPlante	  Say Y here to be able to invoke iptables targets after successful
82652ab4ac2SThomas Graf	  classification.
82752ab4ac2SThomas Graf
82852ab4ac2SThomas Graf	  To compile this code as a module, choose M here: the
829d4ae20b3SJan Luebbe	  module will be called act_ipt.
8301da177e4SLinus Torvalds
831b4219952SHerbert Xuconfig NET_ACT_NAT
832b4219952SHerbert Xu	tristate "Stateless NAT"
833b4219952SHerbert Xu	depends on NET_CLS_ACT
834a7f7f624SMasahiro Yamada	help
835b4219952SHerbert Xu	  Say Y here to do stateless NAT on IPv4 packets.  You should use
836b4219952SHerbert Xu	  netfilter for NAT unless you know what you are doing.
837b4219952SHerbert Xu
838b4219952SHerbert Xu	  To compile this code as a module, choose M here: the
839d4ae20b3SJan Luebbe	  module will be called act_nat.
840b4219952SHerbert Xu
8411da177e4SLinus Torvaldsconfig NET_ACT_PEDIT
84252ab4ac2SThomas Graf	tristate "Packet Editing"
8431da177e4SLinus Torvalds	depends on NET_CLS_ACT
844a7f7f624SMasahiro Yamada	help
84552ab4ac2SThomas Graf	  Say Y here if you want to mangle the content of packets.
8461da177e4SLinus Torvalds
84752ab4ac2SThomas Graf	  To compile this code as a module, choose M here: the
848d4ae20b3SJan Luebbe	  module will be called act_pedit.
8491da177e4SLinus Torvalds
850db753079SJamal Hadi Salimconfig NET_ACT_SIMP
85152ab4ac2SThomas Graf	tristate "Simple Example (Debug)"
852db753079SJamal Hadi Salim	depends on NET_CLS_ACT
853a7f7f624SMasahiro Yamada	help
85452ab4ac2SThomas Graf	  Say Y here to add a simple action for demonstration purposes.
85552ab4ac2SThomas Graf	  It is meant as an example and for debugging purposes. It will
85652ab4ac2SThomas Graf	  print a configured policy string followed by the packet count
85752ab4ac2SThomas Graf	  to the console for every packet that passes by.
858db753079SJamal Hadi Salim
85952ab4ac2SThomas Graf	  If unsure, say N.
86052ab4ac2SThomas Graf
86152ab4ac2SThomas Graf	  To compile this code as a module, choose M here: the
862d4ae20b3SJan Luebbe	  module will be called act_simple.
86352ab4ac2SThomas Graf
864ca9b0e27SAlexander Duyckconfig NET_ACT_SKBEDIT
865ca9b0e27SAlexander Duyck	tristate "SKB Editing"
866ca9b0e27SAlexander Duyck	depends on NET_CLS_ACT
867a7f7f624SMasahiro Yamada	help
868ca9b0e27SAlexander Duyck	  Say Y here to change skb priority or queue_mapping settings.
869ca9b0e27SAlexander Duyck
870ca9b0e27SAlexander Duyck	  If unsure, say N.
871ca9b0e27SAlexander Duyck
872ca9b0e27SAlexander Duyck	  To compile this code as a module, choose M here: the
873d4ae20b3SJan Luebbe	  module will be called act_skbedit.
874ca9b0e27SAlexander Duyck
875eb4d4065SGrégoire Baronconfig NET_ACT_CSUM
876eb4d4065SGrégoire Baron	tristate "Checksum Updating"
8777abac686SDavid S. Miller	depends on NET_CLS_ACT && INET
878ab9d226eSDavide Caratti	select LIBCRC32C
879a7f7f624SMasahiro Yamada	help
880eb4d4065SGrégoire Baron	  Say Y here to update some common checksum after some direct
881eb4d4065SGrégoire Baron	  packet alterations.
882eb4d4065SGrégoire Baron
883eb4d4065SGrégoire Baron	  To compile this code as a module, choose M here: the
884eb4d4065SGrégoire Baron	  module will be called act_csum.
885eb4d4065SGrégoire Baron
8862a2ea508SJohn Hurleyconfig NET_ACT_MPLS
8872a2ea508SJohn Hurley	tristate "MPLS manipulation"
8882a2ea508SJohn Hurley	depends on NET_CLS_ACT
8892a2ea508SJohn Hurley	help
8902a2ea508SJohn Hurley	  Say Y here to push or pop MPLS headers.
8912a2ea508SJohn Hurley
8922a2ea508SJohn Hurley	  If unsure, say N.
8932a2ea508SJohn Hurley
8942a2ea508SJohn Hurley	  To compile this code as a module, choose M here: the
8952a2ea508SJohn Hurley	  module will be called act_mpls.
8962a2ea508SJohn Hurley
897c7e2b968SJiri Pirkoconfig NET_ACT_VLAN
898c7e2b968SJiri Pirko	tristate "Vlan manipulation"
899c7e2b968SJiri Pirko	depends on NET_CLS_ACT
900a7f7f624SMasahiro Yamada	help
901c7e2b968SJiri Pirko	  Say Y here to push or pop vlan headers.
902c7e2b968SJiri Pirko
903c7e2b968SJiri Pirko	  If unsure, say N.
904c7e2b968SJiri Pirko
905c7e2b968SJiri Pirko	  To compile this code as a module, choose M here: the
906c7e2b968SJiri Pirko	  module will be called act_vlan.
907c7e2b968SJiri Pirko
908d23b8ad8SJiri Pirkoconfig NET_ACT_BPF
909d23b8ad8SJiri Pirko	tristate "BPF based action"
910d23b8ad8SJiri Pirko	depends on NET_CLS_ACT
911a7f7f624SMasahiro Yamada	help
912d23b8ad8SJiri Pirko	  Say Y here to execute BPF code on packets. The BPF code will decide
913d23b8ad8SJiri Pirko	  if the packet should be dropped or not.
914d23b8ad8SJiri Pirko
915d23b8ad8SJiri Pirko	  If unsure, say N.
916d23b8ad8SJiri Pirko
917d23b8ad8SJiri Pirko	  To compile this code as a module, choose M here: the
918d23b8ad8SJiri Pirko	  module will be called act_bpf.
919d23b8ad8SJiri Pirko
92022a5dc0eSFelix Fietkauconfig NET_ACT_CONNMARK
92122a5dc0eSFelix Fietkau	tristate "Netfilter Connection Mark Retriever"
922102e2c07SPablo Neira Ayuso	depends on NET_CLS_ACT && NETFILTER
9232dbce096SArnd Bergmann	depends on NF_CONNTRACK && NF_CONNTRACK_MARK
924a7f7f624SMasahiro Yamada	help
92522a5dc0eSFelix Fietkau	  Say Y here to allow retrieving of conn mark
92622a5dc0eSFelix Fietkau
92722a5dc0eSFelix Fietkau	  If unsure, say N.
92822a5dc0eSFelix Fietkau
92922a5dc0eSFelix Fietkau	  To compile this code as a module, choose M here: the
93022a5dc0eSFelix Fietkau	  module will be called act_connmark.
93122a5dc0eSFelix Fietkau
93224ec483cSKevin 'ldir' Darbyshire-Bryantconfig NET_ACT_CTINFO
93324ec483cSKevin 'ldir' Darbyshire-Bryant	tristate "Netfilter Connection Mark Actions"
934102e2c07SPablo Neira Ayuso	depends on NET_CLS_ACT && NETFILTER
93524ec483cSKevin 'ldir' Darbyshire-Bryant	depends on NF_CONNTRACK && NF_CONNTRACK_MARK
93624ec483cSKevin 'ldir' Darbyshire-Bryant	help
93724ec483cSKevin 'ldir' Darbyshire-Bryant	  Say Y here to allow transfer of a connmark stored information.
93824ec483cSKevin 'ldir' Darbyshire-Bryant	  Current actions transfer connmark stored DSCP into
93924ec483cSKevin 'ldir' Darbyshire-Bryant	  ipv4/v6 diffserv and/or to transfer connmark to packet
94024ec483cSKevin 'ldir' Darbyshire-Bryant	  mark.  Both are useful for restoring egress based marks
94124ec483cSKevin 'ldir' Darbyshire-Bryant	  back onto ingress connections for qdisc priority mapping
94224ec483cSKevin 'ldir' Darbyshire-Bryant	  purposes.
94324ec483cSKevin 'ldir' Darbyshire-Bryant
94424ec483cSKevin 'ldir' Darbyshire-Bryant	  If unsure, say N.
94524ec483cSKevin 'ldir' Darbyshire-Bryant
94624ec483cSKevin 'ldir' Darbyshire-Bryant	  To compile this code as a module, choose M here: the
94724ec483cSKevin 'ldir' Darbyshire-Bryant	  module will be called act_ctinfo.
94824ec483cSKevin 'ldir' Darbyshire-Bryant
94986da71b5SJamal Hadi Salimconfig NET_ACT_SKBMOD
95086da71b5SJamal Hadi Salim	tristate "skb data modification action"
95186da71b5SJamal Hadi Salim	depends on NET_CLS_ACT
952a7f7f624SMasahiro Yamada	help
95386da71b5SJamal Hadi Salim	 Say Y here to allow modification of skb data
95486da71b5SJamal Hadi Salim
95586da71b5SJamal Hadi Salim	 If unsure, say N.
95686da71b5SJamal Hadi Salim
95786da71b5SJamal Hadi Salim	 To compile this code as a module, choose M here: the
95886da71b5SJamal Hadi Salim	 module will be called act_skbmod.
95986da71b5SJamal Hadi Salim
960ef6980b6SJamal Hadi Salimconfig NET_ACT_IFE
961ef6980b6SJamal Hadi Salim	tristate "Inter-FE action based on IETF ForCES InterFE LFB"
962ef6980b6SJamal Hadi Salim	depends on NET_CLS_ACT
963295a6e06SYotam Gigi	select NET_IFE
964a7f7f624SMasahiro Yamada	help
965ef6980b6SJamal Hadi Salim	  Say Y here to allow for sourcing and terminating metadata
966ef6980b6SJamal Hadi Salim	  For details refer to netdev01 paper:
967ef6980b6SJamal Hadi Salim	  "Distributing Linux Traffic Control Classifier-Action Subsystem"
968ef6980b6SJamal Hadi Salim	   Authors: Jamal Hadi Salim and Damascene M. Joachimpillai
969ef6980b6SJamal Hadi Salim
970ef6980b6SJamal Hadi Salim	  To compile this code as a module, choose M here: the
971ef6980b6SJamal Hadi Salim	  module will be called act_ife.
972ef6980b6SJamal Hadi Salim
973d0f6dd8aSAmir Vadaiconfig NET_ACT_TUNNEL_KEY
974d0f6dd8aSAmir Vadai	tristate "IP tunnel metadata manipulation"
975d0f6dd8aSAmir Vadai	depends on NET_CLS_ACT
976a7f7f624SMasahiro Yamada	help
977d0f6dd8aSAmir Vadai	  Say Y here to set/release ip tunnel metadata.
978d0f6dd8aSAmir Vadai
979d0f6dd8aSAmir Vadai	  If unsure, say N.
980d0f6dd8aSAmir Vadai
981d0f6dd8aSAmir Vadai	  To compile this code as a module, choose M here: the
982d0f6dd8aSAmir Vadai	  module will be called act_tunnel_key.
983d0f6dd8aSAmir Vadai
984b57dc7c1SPaul Blakeyconfig NET_ACT_CT
985b57dc7c1SPaul Blakey	tristate "connection tracking tc action"
9868427fd10SXin Long	depends on NET_CLS_ACT && NF_CONNTRACK && (!NF_NAT || NF_NAT) && NF_FLOW_TABLE
987ebddb140SXin Long	select NF_NAT_OVS if NF_NAT
988b57dc7c1SPaul Blakey	help
989b57dc7c1SPaul Blakey	  Say Y here to allow sending the packets to conntrack module.
990b57dc7c1SPaul Blakey
991b57dc7c1SPaul Blakey	  If unsure, say N.
992b57dc7c1SPaul Blakey
993b57dc7c1SPaul Blakey	  To compile this code as a module, choose M here: the
994b57dc7c1SPaul Blakey	  module will be called act_ct.
995b57dc7c1SPaul Blakey
996a51c328dSPo Liuconfig NET_ACT_GATE
997a51c328dSPo Liu	tristate "Frame gate entry list control tc action"
998a51c328dSPo Liu	depends on NET_CLS_ACT
999a51c328dSPo Liu	help
1000a51c328dSPo Liu	  Say Y here to allow to control the ingress flow to be passed at
1001a51c328dSPo Liu	  specific time slot and be dropped at other specific time slot by
1002a51c328dSPo Liu	  the gate entry list.
1003a51c328dSPo Liu
1004a51c328dSPo Liu	  If unsure, say N.
1005a51c328dSPo Liu	  To compile this code as a module, choose M here: the
1006a51c328dSPo Liu	  module will be called act_gate.
1007a51c328dSPo Liu
1008084e2f65SJamal Hadi Salimconfig NET_IFE_SKBMARK
1009084e2f65SJamal Hadi Salim	tristate "Support to encoding decoding skb mark on IFE action"
1010084e2f65SJamal Hadi Salim	depends on NET_ACT_IFE
1011084e2f65SJamal Hadi Salim
1012200e10f4SJamal Hadi Salimconfig NET_IFE_SKBPRIO
1013200e10f4SJamal Hadi Salim	tristate "Support to encoding decoding skb prio on IFE action"
1014200e10f4SJamal Hadi Salim	depends on NET_ACT_IFE
1015200e10f4SJamal Hadi Salim
1016408fbc22SJamal Hadi Salimconfig NET_IFE_SKBTCINDEX
1017408fbc22SJamal Hadi Salim	tristate "Support to encoding decoding skb tcindex on IFE action"
1018408fbc22SJamal Hadi Salim	depends on NET_ACT_IFE
1019408fbc22SJamal Hadi Salim
102095a7233cSPaul Blakeyconfig NET_TC_SKB_EXT
102195a7233cSPaul Blakey	bool "TC recirculation support"
102295a7233cSPaul Blakey	depends on NET_CLS_ACT
102395a7233cSPaul Blakey	select SKB_EXTENSIONS
102495a7233cSPaul Blakey
102595a7233cSPaul Blakey	help
102695a7233cSPaul Blakey	  Say Y here to allow tc chain misses to continue in OvS datapath in
102795a7233cSPaul Blakey	  the correct recirc_id, and hardware chain misses to continue in
102895a7233cSPaul Blakey	  the correct chain in tc software datapath.
102995a7233cSPaul Blakey
103095a7233cSPaul Blakey	  Say N here if you won't be using tc<->ovs offload or tc chains offload.
103195a7233cSPaul Blakey
103205b8b0faSRoman Zippelendif # NET_SCHED
103305b8b0faSRoman Zippel
103485ef3e5cSRandy Dunlapconfig NET_SCH_FIFO
103585ef3e5cSRandy Dunlap	bool
1036