[MIPS] Fix potential latency problem due to non-atomic cpu_wait.
[safe/jmp/linux-2.6] / net / sched / Kconfig
index 7f34e7f..9437b27 100644 (file)
@@ -2,10 +2,9 @@
 # Traffic control configuration.
 # 
 
 # Traffic control configuration.
 # 
 
-menu "QoS and/or fair queueing"
-
-config NET_SCHED
+menuconfig NET_SCHED
        bool "QoS and/or fair queueing"
        bool "QoS and/or fair queueing"
+       select NET_SCH_FIFO
        ---help---
          When the kernel has several packets to send out over a network
          device, it has to decide which ones to send first, which ones to
        ---help---
          When the kernel has several packets to send out over a network
          device, it has to decide which ones to send first, which ones to
@@ -40,69 +39,12 @@ config NET_SCHED
          The available schedulers are listed in the following questions; you
          can say Y to as many as you like. If unsure, say N now.
 
          The available schedulers are listed in the following questions; you
          can say Y to as many as you like. If unsure, say N now.
 
-choice
-       prompt "Packet scheduler clock source"
-       depends on NET_SCHED
-       default NET_SCH_CLK_JIFFIES
-       ---help---
-         Packet schedulers need a monotonic clock that increments at a static
-         rate. The kernel provides several suitable interfaces, each with
-         different properties:
-         
-         - high resolution (us or better)
-         - fast to read (minimal locking, no i/o access)
-         - synchronized on all processors
-         - handles cpu clock frequency changes
-
-         but nothing provides all of the above.
-
-config NET_SCH_CLK_JIFFIES
-       bool "Timer interrupt"
-       ---help---
-         Say Y here if you want to use the timer interrupt (jiffies) as clock
-         source. This clock source is fast, synchronized on all processors and
-         handles cpu clock frequency changes, but its resolution is too low
-         for accurate shaping except at very low speed.
-
-config NET_SCH_CLK_GETTIMEOFDAY
-       bool "gettimeofday"
-       ---help---
-         Say Y here if you want to use gettimeofday as clock source. This clock
-         source has high resolution, is synchronized on all processors and
-         handles cpu clock frequency changes, but it is slow.
-
-         Choose this if you need a high resolution clock source but can't use
-         the CPU's cycle counter.
-
-# don't allow on SMP x86 because they can have unsynchronized TSCs.
-# gettimeofday is a good alternative
-config NET_SCH_CLK_CPU
-       bool "CPU cycle counter"
-       depends on ((X86_TSC || X86_64) && !SMP) || ALPHA || SPARC64 || PPC64 || IA64
-       ---help---
-         Say Y here if you want to use the CPU's cycle counter as clock source.
-         This is a cheap and high resolution clock source, but on some
-         architectures it is not synchronized on all processors and doesn't
-         handle cpu clock frequency changes.
-
-         The useable cycle counters are:
-
-               x86/x86_64      - Timestamp Counter
-               alpha           - Cycle Counter
-               sparc64         - %ticks register
-               ppc64           - Time base
-               ia64            - Interval Time Counter
-
-         Choose this if your CPU's cycle counter is working properly.
-
-endchoice
+if NET_SCHED
 
 comment "Queueing/Scheduling"
 
 comment "Queueing/Scheduling"
-       depends on NET_SCHED
 
 config NET_SCH_CBQ
        tristate "Class Based Queueing (CBQ)"
 
 config NET_SCH_CBQ
        tristate "Class Based Queueing (CBQ)"
-       depends on NET_SCHED
        ---help---
          Say Y here if you want to use the Class-Based Queueing (CBQ) packet
          scheduling algorithm. This algorithm classifies the waiting packets
        ---help---
          Say Y here if you want to use the Class-Based Queueing (CBQ) packet
          scheduling algorithm. This algorithm classifies the waiting packets
@@ -120,7 +62,6 @@ config NET_SCH_CBQ
 
 config NET_SCH_HTB
        tristate "Hierarchical Token Bucket (HTB)"
 
 config NET_SCH_HTB
        tristate "Hierarchical Token Bucket (HTB)"
-       depends on NET_SCHED
        ---help---
          Say Y here if you want to use the Hierarchical Token Buckets (HTB)
          packet scheduling algorithm. See
        ---help---
          Say Y here if you want to use the Hierarchical Token Buckets (HTB)
          packet scheduling algorithm. See
@@ -135,7 +76,6 @@ config NET_SCH_HTB
 
 config NET_SCH_HFSC
        tristate "Hierarchical Fair Service Curve (HFSC)"
 
 config NET_SCH_HFSC
        tristate "Hierarchical Fair Service Curve (HFSC)"
-       depends on NET_SCHED
        ---help---
          Say Y here if you want to use the Hierarchical Fair Service Curve
          (HFSC) packet scheduling algorithm.
        ---help---
          Say Y here if you want to use the Hierarchical Fair Service Curve
          (HFSC) packet scheduling algorithm.
@@ -145,21 +85,20 @@ config NET_SCH_HFSC
 
 config NET_SCH_ATM
        tristate "ATM Virtual Circuits (ATM)"
 
 config NET_SCH_ATM
        tristate "ATM Virtual Circuits (ATM)"
-       depends on NET_SCHED && ATM
+       depends on ATM
        ---help---
          Say Y here if you want to use the ATM pseudo-scheduler.  This
          provides a framework for invoking classifiers, which in turn
          select classes of this queuing discipline.  Each class maps
          the flow(s) it is handling to a given virtual circuit.
 
        ---help---
          Say Y here if you want to use the ATM pseudo-scheduler.  This
          provides a framework for invoking classifiers, which in turn
          select classes of this queuing discipline.  Each class maps
          the flow(s) it is handling to a given virtual circuit.
 
-         See the top of <file:net/sched/sch_atm.c>) for more details.
+         See the top of <file:net/sched/sch_atm.c> for more details.
 
          To compile this code as a module, choose M here: the
          module will be called sch_atm.
 
 config NET_SCH_PRIO
        tristate "Multi Band Priority Queueing (PRIO)"
 
          To compile this code as a module, choose M here: the
          module will be called sch_atm.
 
 config NET_SCH_PRIO
        tristate "Multi Band Priority Queueing (PRIO)"
-       depends on NET_SCHED
        ---help---
          Say Y here if you want to use an n-band priority queue packet
          scheduler.
        ---help---
          Say Y here if you want to use an n-band priority queue packet
          scheduler.
@@ -169,7 +108,6 @@ config NET_SCH_PRIO
 
 config NET_SCH_RED
        tristate "Random Early Detection (RED)"
 
 config NET_SCH_RED
        tristate "Random Early Detection (RED)"
-       depends on NET_SCHED
        ---help---
          Say Y here if you want to use the Random Early Detection (RED)
          packet scheduling algorithm.
        ---help---
          Say Y here if you want to use the Random Early Detection (RED)
          packet scheduling algorithm.
@@ -181,10 +119,9 @@ config NET_SCH_RED
 
 config NET_SCH_SFQ
        tristate "Stochastic Fairness Queueing (SFQ)"
 
 config NET_SCH_SFQ
        tristate "Stochastic Fairness Queueing (SFQ)"
-       depends on NET_SCHED
        ---help---
          Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
        ---help---
          Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
-         packet scheduling algorithm .
+         packet scheduling algorithm.
 
          See the top of <file:net/sched/sch_sfq.c> for more details.
 
 
          See the top of <file:net/sched/sch_sfq.c> for more details.
 
@@ -193,7 +130,6 @@ config NET_SCH_SFQ
 
 config NET_SCH_TEQL
        tristate "True Link Equalizer (TEQL)"
 
 config NET_SCH_TEQL
        tristate "True Link Equalizer (TEQL)"
-       depends on NET_SCHED
        ---help---
          Say Y here if you want to use the True Link Equalizer (TLE) packet
          scheduling algorithm. This queueing discipline allows the combination
        ---help---
          Say Y here if you want to use the True Link Equalizer (TLE) packet
          scheduling algorithm. This queueing discipline allows the combination
@@ -206,7 +142,6 @@ config NET_SCH_TEQL
 
 config NET_SCH_TBF
        tristate "Token Bucket Filter (TBF)"
 
 config NET_SCH_TBF
        tristate "Token Bucket Filter (TBF)"
-       depends on NET_SCHED
        ---help---
          Say Y here if you want to use the Token Bucket Filter (TBF) packet
          scheduling algorithm.
        ---help---
          Say Y here if you want to use the Token Bucket Filter (TBF) packet
          scheduling algorithm.
@@ -218,7 +153,6 @@ config NET_SCH_TBF
 
 config NET_SCH_GRED
        tristate "Generic Random Early Detection (GRED)"
 
 config NET_SCH_GRED
        tristate "Generic Random Early Detection (GRED)"
-       depends on NET_SCHED
        ---help---
          Say Y here if you want to use the Generic Random Early Detection
          (GRED) packet scheduling algorithm for some of your network devices
        ---help---
          Say Y here if you want to use the Generic Random Early Detection
          (GRED) packet scheduling algorithm for some of your network devices
@@ -230,7 +164,6 @@ config NET_SCH_GRED
 
 config NET_SCH_DSMARK
        tristate "Differentiated Services marker (DSMARK)"
 
 config NET_SCH_DSMARK
        tristate "Differentiated Services marker (DSMARK)"
-       depends on NET_SCHED
        ---help---
          Say Y if you want to schedule packets according to the
          Differentiated Services architecture proposed in RFC 2475.
        ---help---
          Say Y if you want to schedule packets according to the
          Differentiated Services architecture proposed in RFC 2475.
@@ -242,7 +175,6 @@ config NET_SCH_DSMARK
 
 config NET_SCH_NETEM
        tristate "Network emulator (NETEM)"
 
 config NET_SCH_NETEM
        tristate "Network emulator (NETEM)"
-       depends on NET_SCHED
        ---help---
          Say Y if you want to emulate network delay, loss, and packet
          re-ordering. This is often useful to simulate networks when
        ---help---
          Say Y if you want to emulate network delay, loss, and packet
          re-ordering. This is often useful to simulate networks when
@@ -255,7 +187,7 @@ config NET_SCH_NETEM
 
 config NET_SCH_INGRESS
        tristate "Ingress Qdisc"
 
 config NET_SCH_INGRESS
        tristate "Ingress Qdisc"
-       depends on NET_SCHED 
+       depends on NET_CLS_ACT
        ---help---
          Say Y here if you want to use classifiers for incoming packets.
          If unsure, say Y.
        ---help---
          Say Y here if you want to use classifiers for incoming packets.
          If unsure, say Y.
@@ -264,14 +196,12 @@ config NET_SCH_INGRESS
          module will be called sch_ingress.
 
 comment "Classification"
          module will be called sch_ingress.
 
 comment "Classification"
-       depends on NET_SCHED
 
 config NET_CLS
        boolean
 
 config NET_CLS_BASIC
        tristate "Elementary classification (BASIC)"
 
 config NET_CLS
        boolean
 
 config NET_CLS_BASIC
        tristate "Elementary classification (BASIC)"
-       depends NET_SCHED
        select NET_CLS
        ---help---
          Say Y here if you want to be able to classify packets using
        select NET_CLS
        ---help---
          Say Y here if you want to be able to classify packets using
@@ -282,7 +212,6 @@ config NET_CLS_BASIC
 
 config NET_CLS_TCINDEX
        tristate "Traffic-Control Index (TCINDEX)"
 
 config NET_CLS_TCINDEX
        tristate "Traffic-Control Index (TCINDEX)"
-       depends NET_SCHED
        select NET_CLS
        ---help---
          Say Y here if you want to be able to classify packets based on
        select NET_CLS
        ---help---
          Say Y here if you want to be able to classify packets based on
@@ -294,7 +223,6 @@ config NET_CLS_TCINDEX
 
 config NET_CLS_ROUTE4
        tristate "Routing decision (ROUTE)"
 
 config NET_CLS_ROUTE4
        tristate "Routing decision (ROUTE)"
-       depends NET_SCHED
        select NET_CLS_ROUTE
        select NET_CLS
        ---help---
        select NET_CLS_ROUTE
        select NET_CLS
        ---help---
@@ -306,11 +234,9 @@ config NET_CLS_ROUTE4
 
 config NET_CLS_ROUTE
        bool
 
 config NET_CLS_ROUTE
        bool
-       default n
 
 config NET_CLS_FW
        tristate "Netfilter mark (FW)"
 
 config NET_CLS_FW
        tristate "Netfilter mark (FW)"
-       depends NET_SCHED
        select NET_CLS
        ---help---
          If you say Y here, you will be able to classify packets
        select NET_CLS
        ---help---
          If you say Y here, you will be able to classify packets
@@ -321,10 +247,9 @@ config NET_CLS_FW
 
 config NET_CLS_U32
        tristate "Universal 32bit comparisons w/ hashing (U32)"
 
 config NET_CLS_U32
        tristate "Universal 32bit comparisons w/ hashing (U32)"
-       depends NET_SCHED
        select NET_CLS
        ---help---
        select NET_CLS
        ---help---
-         Say Y here to be able to classify packetes using a universal
+         Say Y here to be able to classify packets using a universal
          32bit pieces based comparison scheme.
 
          To compile this code as a module, choose M here: the
          32bit pieces based comparison scheme.
 
          To compile this code as a module, choose M here: the
@@ -339,15 +264,13 @@ config CLS_U32_PERF
 
 config CLS_U32_MARK
        bool "Netfilter marks support"
 
 config CLS_U32_MARK
        bool "Netfilter marks support"
-       depends on NET_CLS_U32 && NETFILTER
+       depends on NET_CLS_U32
        ---help---
          Say Y here to be able to use netfilter marks as u32 key.
 
 config NET_CLS_RSVP
        tristate "IPv4 Resource Reservation Protocol (RSVP)"
        ---help---
          Say Y here to be able to use netfilter marks as u32 key.
 
 config NET_CLS_RSVP
        tristate "IPv4 Resource Reservation Protocol (RSVP)"
-       depends on NET_SCHED
        select NET_CLS
        select NET_CLS
-       select NET_ESTIMATOR
        ---help---
          The Resource Reservation Protocol (RSVP) permits end systems to
          request a minimum and maximum data flow rate for a connection; this
        ---help---
          The Resource Reservation Protocol (RSVP) permits end systems to
          request a minimum and maximum data flow rate for a connection; this
@@ -361,23 +284,31 @@ config NET_CLS_RSVP
 
 config NET_CLS_RSVP6
        tristate "IPv6 Resource Reservation Protocol (RSVP6)"
 
 config NET_CLS_RSVP6
        tristate "IPv6 Resource Reservation Protocol (RSVP6)"
-       depends on NET_SCHED
        select NET_CLS
        select NET_CLS
-       select NET_ESTIMATOR
        ---help---
          The Resource Reservation Protocol (RSVP) permits end systems to
          request a minimum and maximum data flow rate for a connection; this
          is important for real time data such as streaming sound or video.
 
          Say Y here if you want to be able to classify outgoing packets based
        ---help---
          The Resource Reservation Protocol (RSVP) permits end systems to
          request a minimum and maximum data flow rate for a connection; this
          is important for real time data such as streaming sound or video.
 
          Say Y here if you want to be able to classify outgoing packets based
-         on their RSVP requests and you are using the IPv6.
+         on their RSVP requests and you are using the IPv6 protocol.
 
          To compile this code as a module, choose M here: the
          module will be called cls_rsvp6.
 
 
          To compile this code as a module, choose M here: the
          module will be called cls_rsvp6.
 
+config NET_CLS_FLOW
+       tristate "Flow classifier"
+       select NET_CLS
+       ---help---
+         If you say Y here, you will be able to classify packets based on
+         a configurable combination of packet keys. This is mostly useful
+         in combination with SFQ.
+
+         To compile this code as a module, choose M here: the
+         module will be called cls_flow.
+
 config NET_EMATCH
        bool "Extended Matches"
 config NET_EMATCH
        bool "Extended Matches"
-       depends NET_SCHED
        select NET_CLS
        ---help---
          Say Y here if you want to use extended matches on top of classifiers
        select NET_CLS
        ---help---
          Say Y here if you want to use extended matches on top of classifiers
@@ -433,7 +364,7 @@ config NET_EMATCH_META
        tristate "Metadata"
        depends on NET_EMATCH
        ---help---
        tristate "Metadata"
        depends on NET_EMATCH
        ---help---
-         Say Y here if you want to be ablt to classify packets based on
+         Say Y here if you want to be able to classify packets based on
          metadata such as load average, netfilter attributes, socket
          attributes and routing decisions.
 
          metadata such as load average, netfilter attributes, socket
          attributes and routing decisions.
 
@@ -456,8 +387,6 @@ config NET_EMATCH_TEXT
 
 config NET_CLS_ACT
        bool "Actions"
 
 config NET_CLS_ACT
        bool "Actions"
-       depends on EXPERIMENTAL && NET_SCHED
-       select NET_ESTIMATOR
        ---help---
          Say Y here if you want to use traffic control actions. Actions
          get attached to classifiers and are invoked after a successful
        ---help---
          Say Y here if you want to use traffic control actions. Actions
          get attached to classifiers and are invoked after a successful
@@ -508,12 +437,22 @@ config NET_ACT_IPT
         tristate "IPtables targets"
         depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
         ---help---
         tristate "IPtables targets"
         depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
         ---help---
-         Say Y here to be able to invoke iptables targets after succesful
+         Say Y here to be able to invoke iptables targets after successful
          classification.
 
          To compile this code as a module, choose M here: the
          module will be called ipt.
 
          classification.
 
          To compile this code as a module, choose M here: the
          module will be called ipt.
 
+config NET_ACT_NAT
+        tristate "Stateless NAT"
+        depends on NET_CLS_ACT
+        ---help---
+         Say Y here to do stateless NAT on IPv4 packets.  You should use
+         netfilter for NAT unless you know what you are doing.
+
+         To compile this code as a module, choose M here: the
+         module will be called nat.
+
 config NET_ACT_PEDIT
         tristate "Packet Editing"
         depends on NET_CLS_ACT
 config NET_ACT_PEDIT
         tristate "Packet Editing"
         depends on NET_CLS_ACT
@@ -537,31 +476,15 @@ config NET_ACT_SIMP
          To compile this code as a module, choose M here: the
          module will be called simple.
 
          To compile this code as a module, choose M here: the
          module will be called simple.
 
-config NET_CLS_POLICE
-       bool "Traffic Policing (obsolete)"
-       depends on NET_SCHED && NET_CLS_ACT!=y
-       select NET_ESTIMATOR
-       ---help---
-         Say Y here if you want to do traffic policing, i.e. strict
-         bandwidth limiting. This option is obsoleted by the traffic
-         policer implemented as action, it stays here for compatibility
-         reasons.
-
 config NET_CLS_IND
        bool "Incoming device classification"
 config NET_CLS_IND
        bool "Incoming device classification"
-       depends on NET_SCHED && (NET_CLS_U32 || NET_CLS_FW)
+       depends on NET_CLS_U32 || NET_CLS_FW
        ---help---
          Say Y here to extend the u32 and fw classifier to support
          classification based on the incoming device. This option is
          likely to disappear in favour of the metadata ematch.
 
        ---help---
          Say Y here to extend the u32 and fw classifier to support
          classification based on the incoming device. This option is
          likely to disappear in favour of the metadata ematch.
 
-config NET_ESTIMATOR
-       bool "Rate estimator"
-       depends on NET_SCHED
-       ---help---
-         Say Y here to allow using rate estimators to estimate the current
-         rate-of-flow for network devices, queues, etc. This module is
-         automaticaly selected if needed but can be selected manually for
-         statstical purposes.
+endif # NET_SCHED
 
 
-endmenu
+config NET_SCH_FIFO
+       bool