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