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