aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/DocBook/kernel-api.tmpl6
-rw-r--r--include/linux/etherdevice.h27
-rw-r--r--net/core/datagram.c4
-rw-r--r--net/ipv4/igmp.c5
-rw-r--r--net/ipv4/tcp_bic.c2
-rw-r--r--net/ipv6/addrconf.c2
-rw-r--r--net/ipv6/mcast.c4
-rw-r--r--net/sched/Kconfig394
8 files changed, 227 insertions, 217 deletions
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl
index 4d9b66d8b4db..ec474e5a25ed 100644
--- a/Documentation/DocBook/kernel-api.tmpl
+++ b/Documentation/DocBook/kernel-api.tmpl
@@ -239,9 +239,9 @@ X!Ilib/string.c
239 <title>Network device support</title> 239 <title>Network device support</title>
240 <sect1><title>Driver Support</title> 240 <sect1><title>Driver Support</title>
241!Enet/core/dev.c 241!Enet/core/dev.c
242 </sect1> 242!Enet/ethernet/eth.c
243 <sect1><title>8390 Based Network Cards</title> 243!Einclude/linux/etherdevice.h
244!Edrivers/net/8390.c 244!Enet/core/wireless.c
245 </sect1> 245 </sect1>
246 <sect1><title>Synchronous PPP</title> 246 <sect1><title>Synchronous PPP</title>
247!Edrivers/net/wan/syncppp.c 247!Edrivers/net/wan/syncppp.c
diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h
index cc84934f9059..5f49a30eb6f2 100644
--- a/include/linux/etherdevice.h
+++ b/include/linux/etherdevice.h
@@ -48,8 +48,10 @@ static inline void eth_copy_and_sum (struct sk_buff *dest,
48} 48}
49 49
50/** 50/**
51 * is_zero_ether_addr - Determine if give Ethernet address is all 51 * is_zero_ether_addr - Determine if give Ethernet address is all zeros.
52 * zeros. 52 * @addr: Pointer to a six-byte array containing the Ethernet address
53 *
54 * Return true if the address is all zeroes.
53 */ 55 */
54static inline int is_zero_ether_addr(const u8 *addr) 56static inline int is_zero_ether_addr(const u8 *addr)
55{ 57{
@@ -57,9 +59,7 @@ static inline int is_zero_ether_addr(const u8 *addr)
57} 59}
58 60
59/** 61/**
60 * is_multicast_ether_addr - Determine if the given Ethernet address is a 62 * is_multicast_ether_addr - Determine if the Ethernet address is a multicast.
61 * multicast address.
62 *
63 * @addr: Pointer to a six-byte array containing the Ethernet address 63 * @addr: Pointer to a six-byte array containing the Ethernet address
64 * 64 *
65 * Return true if the address is a multicast address. 65 * Return true if the address is a multicast address.
@@ -69,10 +69,15 @@ static inline int is_multicast_ether_addr(const u8 *addr)
69 return ((addr[0] != 0xff) && (0x01 & addr[0])); 69 return ((addr[0] != 0xff) && (0x01 & addr[0]));
70} 70}
71 71
72/**
73 * is_broadcast_ether_addr - Determine if the Ethernet address is broadcast
74 * @addr: Pointer to a six-byte array containing the Ethernet address
75 *
76 * Return true if the address is the broadcast address.
77 */
72static inline int is_broadcast_ether_addr(const u8 *addr) 78static inline int is_broadcast_ether_addr(const u8 *addr)
73{ 79{
74 return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && 80 return (addr[0] & addr[1] & addr[2] & addr[3] & addr[4] & addr[5]) == 0xff;
75 (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff));
76} 81}
77 82
78/** 83/**
@@ -108,14 +113,14 @@ static inline void random_ether_addr(u8 *addr)
108/** 113/**
109 * compare_ether_addr - Compare two Ethernet addresses 114 * compare_ether_addr - Compare two Ethernet addresses
110 * @addr1: Pointer to a six-byte array containing the Ethernet address 115 * @addr1: Pointer to a six-byte array containing the Ethernet address
111 * @addr2 Pointer other six-byte array containing the Ethernet address 116 * @addr2: Pointer other six-byte array containing the Ethernet address
112 * 117 *
113 * Compare two ethernet addresses, returns 0 if equal 118 * Compare two ethernet addresses, returns 0 if equal
114 */ 119 */
115static inline unsigned compare_ether_addr(const u8 *_a, const u8 *_b) 120static inline unsigned compare_ether_addr(const u8 *addr1, const u8 *addr2)
116{ 121{
117 const u16 *a = (const u16 *) _a; 122 const u16 *a = (const u16 *) addr1;
118 const u16 *b = (const u16 *) _b; 123 const u16 *b = (const u16 *) addr2;
119 124
120 BUILD_BUG_ON(ETH_ALEN != 6); 125 BUILD_BUG_ON(ETH_ALEN != 6);
121 return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) != 0; 126 return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) != 0;
diff --git a/net/core/datagram.c b/net/core/datagram.c
index 81987df536eb..d219435d086c 100644
--- a/net/core/datagram.c
+++ b/net/core/datagram.c
@@ -213,6 +213,10 @@ int skb_copy_datagram_iovec(const struct sk_buff *skb, int offset,
213{ 213{
214 int i, err, fraglen, end = 0; 214 int i, err, fraglen, end = 0;
215 struct sk_buff *next = skb_shinfo(skb)->frag_list; 215 struct sk_buff *next = skb_shinfo(skb)->frag_list;
216
217 if (!len)
218 return 0;
219
216next_skb: 220next_skb:
217 fraglen = skb_headlen(skb); 221 fraglen = skb_headlen(skb);
218 i = -1; 222 i = -1;
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
index 8b6d3939e1e6..c6247fc84060 100644
--- a/net/ipv4/igmp.c
+++ b/net/ipv4/igmp.c
@@ -1908,8 +1908,11 @@ int ip_mc_msfilter(struct sock *sk, struct ip_msfilter *msf, int ifindex)
1908 sock_kfree_s(sk, newpsl, IP_SFLSIZE(newpsl->sl_max)); 1908 sock_kfree_s(sk, newpsl, IP_SFLSIZE(newpsl->sl_max));
1909 goto done; 1909 goto done;
1910 } 1910 }
1911 } else 1911 } else {
1912 newpsl = NULL; 1912 newpsl = NULL;
1913 (void) ip_mc_add_src(in_dev, &msf->imsf_multiaddr,
1914 msf->imsf_fmode, 0, NULL, 0);
1915 }
1913 psl = pmc->sflist; 1916 psl = pmc->sflist;
1914 if (psl) { 1917 if (psl) {
1915 (void) ip_mc_del_src(in_dev, &msf->imsf_multiaddr, pmc->sfmode, 1918 (void) ip_mc_del_src(in_dev, &msf->imsf_multiaddr, pmc->sfmode,
diff --git a/net/ipv4/tcp_bic.c b/net/ipv4/tcp_bic.c
index 6d80e063c187..ae35e0609047 100644
--- a/net/ipv4/tcp_bic.c
+++ b/net/ipv4/tcp_bic.c
@@ -27,7 +27,7 @@
27 */ 27 */
28 28
29static int fast_convergence = 1; 29static int fast_convergence = 1;
30static int max_increment = 32; 30static int max_increment = 16;
31static int low_window = 14; 31static int low_window = 14;
32static int beta = 819; /* = 819/1024 (BICTCP_BETA_SCALE) */ 32static int beta = 819; /* = 819/1024 (BICTCP_BETA_SCALE) */
33static int low_utilization_threshold = 153; 33static int low_utilization_threshold = 153;
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 41edc14851e8..2c5f57299d63 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -2163,7 +2163,7 @@ static int addrconf_ifdown(struct net_device *dev, int how)
2163 2163
2164 /* Step 5: netlink notification of this interface */ 2164 /* Step 5: netlink notification of this interface */
2165 idev->tstamp = jiffies; 2165 idev->tstamp = jiffies;
2166 inet6_ifinfo_notify(RTM_NEWLINK, idev); 2166 inet6_ifinfo_notify(RTM_DELLINK, idev);
2167 2167
2168 /* Shot the device (if unregistered) */ 2168 /* Shot the device (if unregistered) */
2169 2169
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
index 966b2372aaab..f15e04ad026e 100644
--- a/net/ipv6/mcast.c
+++ b/net/ipv6/mcast.c
@@ -545,8 +545,10 @@ int ip6_mc_msfilter(struct sock *sk, struct group_filter *gsf)
545 sock_kfree_s(sk, newpsl, IP6_SFLSIZE(newpsl->sl_max)); 545 sock_kfree_s(sk, newpsl, IP6_SFLSIZE(newpsl->sl_max));
546 goto done; 546 goto done;
547 } 547 }
548 } else 548 } else {
549 newpsl = NULL; 549 newpsl = NULL;
550 (void) ip6_mc_add_src(idev, group, gsf->gf_fmode, 0, NULL, 0);
551 }
550 psl = pmc->sflist; 552 psl = pmc->sflist;
551 if (psl) { 553 if (psl) {
552 (void) ip6_mc_del_src(idev, group, pmc->sfmode, 554 (void) ip6_mc_del_src(idev, group, pmc->sfmode,
diff --git a/net/sched/Kconfig b/net/sched/Kconfig
index 81510da31792..7f34e7fd767c 100644
--- a/net/sched/Kconfig
+++ b/net/sched/Kconfig
@@ -2,13 +2,15 @@
2# Traffic control configuration. 2# Traffic control configuration.
3# 3#
4 4
5menuconfig NET_SCHED 5menu "QoS and/or fair queueing"
6
7config NET_SCHED
6 bool "QoS and/or fair queueing" 8 bool "QoS and/or fair queueing"
7 ---help--- 9 ---help---
8 When the kernel has several packets to send out over a network 10 When the kernel has several packets to send out over a network
9 device, it has to decide which ones to send first, which ones to 11 device, it has to decide which ones to send first, which ones to
10 delay, and which ones to drop. This is the job of the packet 12 delay, and which ones to drop. This is the job of the queueing
11 scheduler, and several different algorithms for how to do this 13 disciplines, several different algorithms for how to do this
12 "fairly" have been proposed. 14 "fairly" have been proposed.
13 15
14 If you say N here, you will get the standard packet scheduler, which 16 If you say N here, you will get the standard packet scheduler, which
@@ -23,13 +25,13 @@ menuconfig NET_SCHED
23 To administer these schedulers, you'll need the user-level utilities 25 To administer these schedulers, you'll need the user-level utilities
24 from the package iproute2+tc at <ftp://ftp.tux.org/pub/net/ip-routing/>. 26 from the package iproute2+tc at <ftp://ftp.tux.org/pub/net/ip-routing/>.
25 That package also contains some documentation; for more, check out 27 That package also contains some documentation; for more, check out
26 <http://snafu.freedom.org/linux2.2/iproute-notes.html>. 28 <http://linux-net.osdl.org/index.php/Iproute2>.
27 29
28 This Quality of Service (QoS) support will enable you to use 30 This Quality of Service (QoS) support will enable you to use
29 Differentiated Services (diffserv) and Resource Reservation Protocol 31 Differentiated Services (diffserv) and Resource Reservation Protocol
30 (RSVP) on your Linux router if you also say Y to "QoS support", 32 (RSVP) on your Linux router if you also say Y to the corresponding
31 "Packet classifier API" and to some classifiers below. Documentation 33 classifiers below. Documentation and software is at
32 and software is at <http://diffserv.sourceforge.net/>. 34 <http://diffserv.sourceforge.net/>.
33 35
34 If you say Y here and to "/proc file system" below, you will be able 36 If you say Y here and to "/proc file system" below, you will be able
35 to read status information about packet schedulers from the file 37 to read status information about packet schedulers from the file
@@ -42,7 +44,7 @@ choice
42 prompt "Packet scheduler clock source" 44 prompt "Packet scheduler clock source"
43 depends on NET_SCHED 45 depends on NET_SCHED
44 default NET_SCH_CLK_JIFFIES 46 default NET_SCH_CLK_JIFFIES
45 help 47 ---help---
46 Packet schedulers need a monotonic clock that increments at a static 48 Packet schedulers need a monotonic clock that increments at a static
47 rate. The kernel provides several suitable interfaces, each with 49 rate. The kernel provides several suitable interfaces, each with
48 different properties: 50 different properties:
@@ -56,7 +58,7 @@ choice
56 58
57config NET_SCH_CLK_JIFFIES 59config NET_SCH_CLK_JIFFIES
58 bool "Timer interrupt" 60 bool "Timer interrupt"
59 help 61 ---help---
60 Say Y here if you want to use the timer interrupt (jiffies) as clock 62 Say Y here if you want to use the timer interrupt (jiffies) as clock
61 source. This clock source is fast, synchronized on all processors and 63 source. This clock source is fast, synchronized on all processors and
62 handles cpu clock frequency changes, but its resolution is too low 64 handles cpu clock frequency changes, but its resolution is too low
@@ -64,7 +66,7 @@ config NET_SCH_CLK_JIFFIES
64 66
65config NET_SCH_CLK_GETTIMEOFDAY 67config NET_SCH_CLK_GETTIMEOFDAY
66 bool "gettimeofday" 68 bool "gettimeofday"
67 help 69 ---help---
68 Say Y here if you want to use gettimeofday as clock source. This clock 70 Say Y here if you want to use gettimeofday as clock source. This clock
69 source has high resolution, is synchronized on all processors and 71 source has high resolution, is synchronized on all processors and
70 handles cpu clock frequency changes, but it is slow. 72 handles cpu clock frequency changes, but it is slow.
@@ -77,7 +79,7 @@ config NET_SCH_CLK_GETTIMEOFDAY
77config NET_SCH_CLK_CPU 79config NET_SCH_CLK_CPU
78 bool "CPU cycle counter" 80 bool "CPU cycle counter"
79 depends on ((X86_TSC || X86_64) && !SMP) || ALPHA || SPARC64 || PPC64 || IA64 81 depends on ((X86_TSC || X86_64) && !SMP) || ALPHA || SPARC64 || PPC64 || IA64
80 help 82 ---help---
81 Say Y here if you want to use the CPU's cycle counter as clock source. 83 Say Y here if you want to use the CPU's cycle counter as clock source.
82 This is a cheap and high resolution clock source, but on some 84 This is a cheap and high resolution clock source, but on some
83 architectures it is not synchronized on all processors and doesn't 85 architectures it is not synchronized on all processors and doesn't
@@ -95,134 +97,129 @@ config NET_SCH_CLK_CPU
95 97
96endchoice 98endchoice
97 99
100comment "Queueing/Scheduling"
101 depends on NET_SCHED
102
98config NET_SCH_CBQ 103config NET_SCH_CBQ
99 tristate "CBQ packet scheduler" 104 tristate "Class Based Queueing (CBQ)"
100 depends on NET_SCHED 105 depends on NET_SCHED
101 ---help--- 106 ---help---
102 Say Y here if you want to use the Class-Based Queueing (CBQ) packet 107 Say Y here if you want to use the Class-Based Queueing (CBQ) packet
103 scheduling algorithm for some of your network devices. This 108 scheduling algorithm. This algorithm classifies the waiting packets
104 algorithm classifies the waiting packets into a tree-like hierarchy 109 into a tree-like hierarchy of classes; the leaves of this tree are
105 of classes; the leaves of this tree are in turn scheduled by 110 in turn scheduled by separate algorithms.
106 separate algorithms (called "disciplines" in this context).
107 111
108 See the top of <file:net/sched/sch_cbq.c> for references about the 112 See the top of <file:net/sched/sch_cbq.c> for more details.
109 CBQ algorithm.
110 113
111 CBQ is a commonly used scheduler, so if you're unsure, you should 114 CBQ is a commonly used scheduler, so if you're unsure, you should
112 say Y here. Then say Y to all the queueing algorithms below that you 115 say Y here. Then say Y to all the queueing algorithms below that you
113 want to use as CBQ disciplines. Then say Y to "Packet classifier 116 want to use as leaf disciplines.
114 API" and say Y to all the classifiers you want to use; a classifier
115 is a routine that allows you to sort your outgoing traffic into
116 classes based on a certain criterion.
117 117
118 To compile this code as a module, choose M here: the 118 To compile this code as a module, choose M here: the
119 module will be called sch_cbq. 119 module will be called sch_cbq.
120 120
121config NET_SCH_HTB 121config NET_SCH_HTB
122 tristate "HTB packet scheduler" 122 tristate "Hierarchical Token Bucket (HTB)"
123 depends on NET_SCHED 123 depends on NET_SCHED
124 ---help--- 124 ---help---
125 Say Y here if you want to use the Hierarchical Token Buckets (HTB) 125 Say Y here if you want to use the Hierarchical Token Buckets (HTB)
126 packet scheduling algorithm for some of your network devices. See 126 packet scheduling algorithm. See
127 <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and 127 <http://luxik.cdi.cz/~devik/qos/htb/> for complete manual and
128 in-depth articles. 128 in-depth articles.
129 129
130 HTB is very similar to the CBQ regarding its goals however is has 130 HTB is very similar to CBQ regarding its goals however is has
131 different properties and different algorithm. 131 different properties and different algorithm.
132 132
133 To compile this code as a module, choose M here: the 133 To compile this code as a module, choose M here: the
134 module will be called sch_htb. 134 module will be called sch_htb.
135 135
136config NET_SCH_HFSC 136config NET_SCH_HFSC
137 tristate "HFSC packet scheduler" 137 tristate "Hierarchical Fair Service Curve (HFSC)"
138 depends on NET_SCHED 138 depends on NET_SCHED
139 ---help--- 139 ---help---
140 Say Y here if you want to use the Hierarchical Fair Service Curve 140 Say Y here if you want to use the Hierarchical Fair Service Curve
141 (HFSC) packet scheduling algorithm for some of your network devices. 141 (HFSC) packet scheduling algorithm.
142 142
143 To compile this code as a module, choose M here: the 143 To compile this code as a module, choose M here: the
144 module will be called sch_hfsc. 144 module will be called sch_hfsc.
145 145
146#tristate ' H-PFQ packet scheduler' CONFIG_NET_SCH_HPFQ
147config NET_SCH_ATM 146config NET_SCH_ATM
148 tristate "ATM pseudo-scheduler" 147 tristate "ATM Virtual Circuits (ATM)"
149 depends on NET_SCHED && ATM 148 depends on NET_SCHED && ATM
150 ---help--- 149 ---help---
151 Say Y here if you want to use the ATM pseudo-scheduler. This 150 Say Y here if you want to use the ATM pseudo-scheduler. This
152 provides a framework for invoking classifiers (aka "filters"), which 151 provides a framework for invoking classifiers, which in turn
153 in turn select classes of this queuing discipline. Each class maps 152 select classes of this queuing discipline. Each class maps
154 the flow(s) it is handling to a given virtual circuit (see the top of 153 the flow(s) it is handling to a given virtual circuit.
155 <file:net/sched/sch_atm.c>). 154
155 See the top of <file:net/sched/sch_atm.c>) for more details.
156 156
157 To compile this code as a module, choose M here: the 157 To compile this code as a module, choose M here: the
158 module will be called sch_atm. 158 module will be called sch_atm.
159 159
160config NET_SCH_PRIO 160config NET_SCH_PRIO
161 tristate "The simplest PRIO pseudoscheduler" 161 tristate "Multi Band Priority Queueing (PRIO)"
162 depends on NET_SCHED 162 depends on NET_SCHED
163 help 163 ---help---
164 Say Y here if you want to use an n-band priority queue packet 164 Say Y here if you want to use an n-band priority queue packet
165 "scheduler" for some of your network devices or as a leaf discipline 165 scheduler.
166 for the CBQ scheduling algorithm. If unsure, say Y.
167 166
168 To compile this code as a module, choose M here: the 167 To compile this code as a module, choose M here: the
169 module will be called sch_prio. 168 module will be called sch_prio.
170 169
171config NET_SCH_RED 170config NET_SCH_RED
172 tristate "RED queue" 171 tristate "Random Early Detection (RED)"
173 depends on NET_SCHED 172 depends on NET_SCHED
174 help 173 ---help---
175 Say Y here if you want to use the Random Early Detection (RED) 174 Say Y here if you want to use the Random Early Detection (RED)
176 packet scheduling algorithm for some of your network devices (see 175 packet scheduling algorithm.
177 the top of <file:net/sched/sch_red.c> for details and references 176
178 about the algorithm). 177 See the top of <file:net/sched/sch_red.c> for more details.
179 178
180 To compile this code as a module, choose M here: the 179 To compile this code as a module, choose M here: the
181 module will be called sch_red. 180 module will be called sch_red.
182 181
183config NET_SCH_SFQ 182config NET_SCH_SFQ
184 tristate "SFQ queue" 183 tristate "Stochastic Fairness Queueing (SFQ)"
185 depends on NET_SCHED 184 depends on NET_SCHED
186 ---help--- 185 ---help---
187 Say Y here if you want to use the Stochastic Fairness Queueing (SFQ) 186 Say Y here if you want to use the Stochastic Fairness Queueing (SFQ)
188 packet scheduling algorithm for some of your network devices or as a 187 packet scheduling algorithm .
189 leaf discipline for the CBQ scheduling algorithm (see the top of 188
190 <file:net/sched/sch_sfq.c> for details and references about the SFQ 189 See the top of <file:net/sched/sch_sfq.c> for more details.
191 algorithm).
192 190
193 To compile this code as a module, choose M here: the 191 To compile this code as a module, choose M here: the
194 module will be called sch_sfq. 192 module will be called sch_sfq.
195 193
196config NET_SCH_TEQL 194config NET_SCH_TEQL
197 tristate "TEQL queue" 195 tristate "True Link Equalizer (TEQL)"
198 depends on NET_SCHED 196 depends on NET_SCHED
199 ---help--- 197 ---help---
200 Say Y here if you want to use the True Link Equalizer (TLE) packet 198 Say Y here if you want to use the True Link Equalizer (TLE) packet
201 scheduling algorithm for some of your network devices or as a leaf 199 scheduling algorithm. This queueing discipline allows the combination
202 discipline for the CBQ scheduling algorithm. This queueing 200 of several physical devices into one virtual device.
203 discipline allows the combination of several physical devices into 201
204 one virtual device. (see the top of <file:net/sched/sch_teql.c> for 202 See the top of <file:net/sched/sch_teql.c> for more details.
205 details).
206 203
207 To compile this code as a module, choose M here: the 204 To compile this code as a module, choose M here: the
208 module will be called sch_teql. 205 module will be called sch_teql.
209 206
210config NET_SCH_TBF 207config NET_SCH_TBF
211 tristate "TBF queue" 208 tristate "Token Bucket Filter (TBF)"
212 depends on NET_SCHED 209 depends on NET_SCHED
213 help 210 ---help---
214 Say Y here if you want to use the Simple Token Bucket Filter (TBF) 211 Say Y here if you want to use the Token Bucket Filter (TBF) packet
215 packet scheduling algorithm for some of your network devices or as a 212 scheduling algorithm.
216 leaf discipline for the CBQ scheduling algorithm (see the top of 213
217 <file:net/sched/sch_tbf.c> for a description of the TBF algorithm). 214 See the top of <file:net/sched/sch_tbf.c> for more details.
218 215
219 To compile this code as a module, choose M here: the 216 To compile this code as a module, choose M here: the
220 module will be called sch_tbf. 217 module will be called sch_tbf.
221 218
222config NET_SCH_GRED 219config NET_SCH_GRED
223 tristate "GRED queue" 220 tristate "Generic Random Early Detection (GRED)"
224 depends on NET_SCHED 221 depends on NET_SCHED
225 help 222 ---help---
226 Say Y here if you want to use the Generic Random Early Detection 223 Say Y here if you want to use the Generic Random Early Detection
227 (GRED) packet scheduling algorithm for some of your network devices 224 (GRED) packet scheduling algorithm for some of your network devices
228 (see the top of <file:net/sched/sch_red.c> for details and 225 (see the top of <file:net/sched/sch_red.c> for details and
@@ -232,9 +229,9 @@ config NET_SCH_GRED
232 module will be called sch_gred. 229 module will be called sch_gred.
233 230
234config NET_SCH_DSMARK 231config NET_SCH_DSMARK
235 tristate "Diffserv field marker" 232 tristate "Differentiated Services marker (DSMARK)"
236 depends on NET_SCHED 233 depends on NET_SCHED
237 help 234 ---help---
238 Say Y if you want to schedule packets according to the 235 Say Y if you want to schedule packets according to the
239 Differentiated Services architecture proposed in RFC 2475. 236 Differentiated Services architecture proposed in RFC 2475.
240 Technical information on this method, with pointers to associated 237 Technical information on this method, with pointers to associated
@@ -244,9 +241,9 @@ config NET_SCH_DSMARK
244 module will be called sch_dsmark. 241 module will be called sch_dsmark.
245 242
246config NET_SCH_NETEM 243config NET_SCH_NETEM
247 tristate "Network emulator" 244 tristate "Network emulator (NETEM)"
248 depends on NET_SCHED 245 depends on NET_SCHED
249 help 246 ---help---
250 Say Y if you want to emulate network delay, loss, and packet 247 Say Y if you want to emulate network delay, loss, and packet
251 re-ordering. This is often useful to simulate networks when 248 re-ordering. This is often useful to simulate networks when
252 testing applications or protocols. 249 testing applications or protocols.
@@ -259,58 +256,23 @@ config NET_SCH_NETEM
259config NET_SCH_INGRESS 256config NET_SCH_INGRESS
260 tristate "Ingress Qdisc" 257 tristate "Ingress Qdisc"
261 depends on NET_SCHED 258 depends on NET_SCHED
262 help 259 ---help---
263 If you say Y here, you will be able to police incoming bandwidth 260 Say Y here if you want to use classifiers for incoming packets.
264 and drop packets when this bandwidth exceeds your desired rate.
265 If unsure, say Y. 261 If unsure, say Y.
266 262
267 To compile this code as a module, choose M here: the 263 To compile this code as a module, choose M here: the
268 module will be called sch_ingress. 264 module will be called sch_ingress.
269 265
270config NET_QOS 266comment "Classification"
271 bool "QoS support"
272 depends on NET_SCHED 267 depends on NET_SCHED
273 ---help---
274 Say Y here if you want to include Quality Of Service scheduling
275 features, which means that you will be able to request certain
276 rate-of-flow limits for your network devices.
277
278 This Quality of Service (QoS) support will enable you to use
279 Differentiated Services (diffserv) and Resource Reservation Protocol
280 (RSVP) on your Linux router if you also say Y to "Packet classifier
281 API" and to some classifiers below. Documentation and software is at
282 <http://diffserv.sourceforge.net/>.
283
284 Note that the answer to this question won't directly affect the
285 kernel: saying N will just cause the configurator to skip all
286 the questions about QoS support.
287
288config NET_ESTIMATOR
289 bool "Rate estimator"
290 depends on NET_QOS
291 help
292 In order for Quality of Service scheduling to work, the current
293 rate-of-flow for a network device has to be estimated; if you say Y
294 here, the kernel will do just that.
295 268
296config NET_CLS 269config NET_CLS
297 bool "Packet classifier API" 270 boolean
298 depends on NET_SCHED
299 ---help---
300 The CBQ scheduling algorithm requires that network packets which are
301 scheduled to be sent out over a network device be classified
302 according to some criterion. If you say Y here, you will get a
303 choice of several different packet classifiers with the following
304 questions.
305
306 This will enable you to use Differentiated Services (diffserv) and
307 Resource Reservation Protocol (RSVP) on your Linux router.
308 Documentation and software is at
309 <http://diffserv.sourceforge.net/>.
310 271
311config NET_CLS_BASIC 272config NET_CLS_BASIC
312 tristate "Basic classifier" 273 tristate "Elementary classification (BASIC)"
313 depends on NET_CLS 274 depends NET_SCHED
275 select NET_CLS
314 ---help--- 276 ---help---
315 Say Y here if you want to be able to classify packets using 277 Say Y here if you want to be able to classify packets using
316 only extended matches and actions. 278 only extended matches and actions.
@@ -319,24 +281,25 @@ config NET_CLS_BASIC
319 module will be called cls_basic. 281 module will be called cls_basic.
320 282
321config NET_CLS_TCINDEX 283config NET_CLS_TCINDEX
322 tristate "TC index classifier" 284 tristate "Traffic-Control Index (TCINDEX)"
323 depends on NET_CLS 285 depends NET_SCHED
324 help 286 select NET_CLS
325 If you say Y here, you will be able to classify outgoing packets 287 ---help---
326 according to the tc_index field of the skb. You will want this 288 Say Y here if you want to be able to classify packets based on
327 feature if you want to implement Differentiated Services using 289 traffic control indices. You will want this feature if you want
328 sch_dsmark. If unsure, say Y. 290 to implement Differentiated Services together with DSMARK.
329 291
330 To compile this code as a module, choose M here: the 292 To compile this code as a module, choose M here: the
331 module will be called cls_tcindex. 293 module will be called cls_tcindex.
332 294
333config NET_CLS_ROUTE4 295config NET_CLS_ROUTE4
334 tristate "Routing table based classifier" 296 tristate "Routing decision (ROUTE)"
335 depends on NET_CLS 297 depends NET_SCHED
336 select NET_CLS_ROUTE 298 select NET_CLS_ROUTE
337 help 299 select NET_CLS
338 If you say Y here, you will be able to classify outgoing packets 300 ---help---
339 according to the route table entry they matched. If unsure, say Y. 301 If you say Y here, you will be able to classify packets
302 according to the route table entry they matched.
340 303
341 To compile this code as a module, choose M here: the 304 To compile this code as a module, choose M here: the
342 module will be called cls_route. 305 module will be called cls_route.
@@ -346,58 +309,45 @@ config NET_CLS_ROUTE
346 default n 309 default n
347 310
348config NET_CLS_FW 311config NET_CLS_FW
349 tristate "Firewall based classifier" 312 tristate "Netfilter mark (FW)"
350 depends on NET_CLS 313 depends NET_SCHED
351 help 314 select NET_CLS
352 If you say Y here, you will be able to classify outgoing packets 315 ---help---
353 according to firewall criteria you specified. 316 If you say Y here, you will be able to classify packets
317 according to netfilter/firewall marks.
354 318
355 To compile this code as a module, choose M here: the 319 To compile this code as a module, choose M here: the
356 module will be called cls_fw. 320 module will be called cls_fw.
357 321
358config NET_CLS_U32 322config NET_CLS_U32
359 tristate "U32 classifier" 323 tristate "Universal 32bit comparisons w/ hashing (U32)"
360 depends on NET_CLS 324 depends NET_SCHED
361 help 325 select NET_CLS
362 If you say Y here, you will be able to classify outgoing packets 326 ---help---
363 according to their destination address. If unsure, say Y. 327 Say Y here to be able to classify packetes using a universal
328 32bit pieces based comparison scheme.
364 329
365 To compile this code as a module, choose M here: the 330 To compile this code as a module, choose M here: the
366 module will be called cls_u32. 331 module will be called cls_u32.
367 332
368config CLS_U32_PERF 333config CLS_U32_PERF
369 bool "U32 classifier performance counters" 334 bool "Performance counters support"
370 depends on NET_CLS_U32 335 depends on NET_CLS_U32
371 help 336 ---help---
372 gathers stats that could be used to tune u32 classifier performance. 337 Say Y here to make u32 gather additional statistics useful for
373 Requires a new iproute2 338 fine tuning u32 classifiers.
374 You MUST NOT turn this on if you dont have an update iproute2.
375
376config NET_CLS_IND
377 bool "classify input device (slows things u32/fw) "
378 depends on NET_CLS_U32 || NET_CLS_FW
379 help
380 This option will be killed eventually when a
381 metadata action appears because it slows things a little
382 Available only for u32 and fw classifiers.
383 Requires a new iproute2
384 You MUST NOT turn this on if you dont have an update iproute2.
385 339
386config CLS_U32_MARK 340config CLS_U32_MARK
387 bool "Use nfmark as a key in U32 classifier" 341 bool "Netfilter marks support"
388 depends on NET_CLS_U32 && NETFILTER 342 depends on NET_CLS_U32 && NETFILTER
389 help 343 ---help---
390 This allows you to match mark in a u32 filter. 344 Say Y here to be able to use netfilter marks as u32 key.
391 Example:
392 tc filter add dev eth0 protocol ip parent 1:0 prio 5 u32 \
393 match mark 0x0090 0xffff \
394 match ip dst 4.4.4.4 \
395 flowid 1:90
396 You must use a new iproute2 to use this feature.
397 345
398config NET_CLS_RSVP 346config NET_CLS_RSVP
399 tristate "Special RSVP classifier" 347 tristate "IPv4 Resource Reservation Protocol (RSVP)"
400 depends on NET_CLS && NET_QOS 348 depends on NET_SCHED
349 select NET_CLS
350 select NET_ESTIMATOR
401 ---help--- 351 ---help---
402 The Resource Reservation Protocol (RSVP) permits end systems to 352 The Resource Reservation Protocol (RSVP) permits end systems to
403 request a minimum and maximum data flow rate for a connection; this 353 request a minimum and maximum data flow rate for a connection; this
@@ -410,31 +360,33 @@ config NET_CLS_RSVP
410 module will be called cls_rsvp. 360 module will be called cls_rsvp.
411 361
412config NET_CLS_RSVP6 362config NET_CLS_RSVP6
413 tristate "Special RSVP classifier for IPv6" 363 tristate "IPv6 Resource Reservation Protocol (RSVP6)"
414 depends on NET_CLS && NET_QOS 364 depends on NET_SCHED
365 select NET_CLS
366 select NET_ESTIMATOR
415 ---help--- 367 ---help---
416 The Resource Reservation Protocol (RSVP) permits end systems to 368 The Resource Reservation Protocol (RSVP) permits end systems to
417 request a minimum and maximum data flow rate for a connection; this 369 request a minimum and maximum data flow rate for a connection; this
418 is important for real time data such as streaming sound or video. 370 is important for real time data such as streaming sound or video.
419 371
420 Say Y here if you want to be able to classify outgoing packets based 372 Say Y here if you want to be able to classify outgoing packets based
421 on their RSVP requests and you are using the new Internet Protocol 373 on their RSVP requests and you are using the IPv6.
422 IPv6 as opposed to the older and more common IPv4.
423 374
424 To compile this code as a module, choose M here: the 375 To compile this code as a module, choose M here: the
425 module will be called cls_rsvp6. 376 module will be called cls_rsvp6.
426 377
427config NET_EMATCH 378config NET_EMATCH
428 bool "Extended Matches" 379 bool "Extended Matches"
429 depends on NET_CLS 380 depends NET_SCHED
381 select NET_CLS
430 ---help--- 382 ---help---
431 Say Y here if you want to use extended matches on top of classifiers 383 Say Y here if you want to use extended matches on top of classifiers
432 and select the extended matches below. 384 and select the extended matches below.
433 385
434 Extended matches are small classification helpers not worth writing 386 Extended matches are small classification helpers not worth writing
435 a separate classifier. 387 a separate classifier for.
436 388
437 You must have a recent version of the iproute2 tools in order to use 389 A recent version of the iproute2 package is required to use
438 extended matches. 390 extended matches.
439 391
440config NET_EMATCH_STACK 392config NET_EMATCH_STACK
@@ -468,7 +420,7 @@ config NET_EMATCH_NBYTE
468 module will be called em_nbyte. 420 module will be called em_nbyte.
469 421
470config NET_EMATCH_U32 422config NET_EMATCH_U32
471 tristate "U32 hashing key" 423 tristate "U32 key"
472 depends on NET_EMATCH 424 depends on NET_EMATCH
473 ---help--- 425 ---help---
474 Say Y here if you want to be able to classify packets using 426 Say Y here if you want to be able to classify packets using
@@ -496,76 +448,120 @@ config NET_EMATCH_TEXT
496 select TEXTSEARCH_BM 448 select TEXTSEARCH_BM
497 select TEXTSEARCH_FSM 449 select TEXTSEARCH_FSM
498 ---help--- 450 ---help---
499 Say Y here if you want to be ablt to classify packets based on 451 Say Y here if you want to be able to classify packets based on
500 textsearch comparisons. 452 textsearch comparisons.
501 453
502 To compile this code as a module, choose M here: the 454 To compile this code as a module, choose M here: the
503 module will be called em_text. 455 module will be called em_text.
504 456
505config NET_CLS_ACT 457config NET_CLS_ACT
506 bool "Packet ACTION" 458 bool "Actions"
507 depends on EXPERIMENTAL && NET_CLS && NET_QOS 459 depends on EXPERIMENTAL && NET_SCHED
460 select NET_ESTIMATOR
508 ---help--- 461 ---help---
509 This option requires you have a new iproute2. It enables 462 Say Y here if you want to use traffic control actions. Actions
510 tc extensions which can be used with tc classifiers. 463 get attached to classifiers and are invoked after a successful
511 You MUST NOT turn this on if you dont have an update iproute2. 464 classification. They are used to overwrite the classification
465 result, instantly drop or redirect packets, etc.
466
467 A recent version of the iproute2 package is required to use
468 extended matches.
512 469
513config NET_ACT_POLICE 470config NET_ACT_POLICE
514 tristate "Policing Actions" 471 tristate "Traffic Policing"
515 depends on NET_CLS_ACT 472 depends on NET_CLS_ACT
516 ---help--- 473 ---help---
517 If you are using a newer iproute2 select this one, otherwise use one 474 Say Y here if you want to do traffic policing, i.e. strict
518 below to select a policer. 475 bandwidth limiting. This action replaces the existing policing
519 You MUST NOT turn this on if you dont have an update iproute2. 476 module.
477
478 To compile this code as a module, choose M here: the
479 module will be called police.
520 480
521config NET_ACT_GACT 481config NET_ACT_GACT
522 tristate "generic Actions" 482 tristate "Generic actions"
523 depends on NET_CLS_ACT 483 depends on NET_CLS_ACT
524 ---help--- 484 ---help---
525 You must have new iproute2 to use this feature. 485 Say Y here to take generic actions such as dropping and
526 This adds simple filtering actions like drop, accept etc. 486 accepting packets.
487
488 To compile this code as a module, choose M here: the
489 module will be called gact.
527 490
528config GACT_PROB 491config GACT_PROB
529 bool "generic Actions probability" 492 bool "Probability support"
530 depends on NET_ACT_GACT 493 depends on NET_ACT_GACT
531 ---help--- 494 ---help---
532 Allows generic actions to be randomly or deterministically used. 495 Say Y here to use the generic action randomly or deterministically.
533 496
534config NET_ACT_MIRRED 497config NET_ACT_MIRRED
535 tristate "Packet In/Egress redirecton/mirror Actions" 498 tristate "Redirecting and Mirroring"
536 depends on NET_CLS_ACT 499 depends on NET_CLS_ACT
537 ---help--- 500 ---help---
538 requires new iproute2 501 Say Y here to allow packets to be mirrored or redirected to
539 This allows packets to be mirrored or redirected to netdevices 502 other devices.
503
504 To compile this code as a module, choose M here: the
505 module will be called mirred.
540 506
541config NET_ACT_IPT 507config NET_ACT_IPT
542 tristate "iptables Actions" 508 tristate "IPtables targets"
543 depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES 509 depends on NET_CLS_ACT && NETFILTER && IP_NF_IPTABLES
544 ---help--- 510 ---help---
545 requires new iproute2 511 Say Y here to be able to invoke iptables targets after succesful
546 This allows iptables targets to be used by tc filters 512 classification.
513
514 To compile this code as a module, choose M here: the
515 module will be called ipt.
547 516
548config NET_ACT_PEDIT 517config NET_ACT_PEDIT
549 tristate "Generic Packet Editor Actions" 518 tristate "Packet Editing"
550 depends on NET_CLS_ACT 519 depends on NET_CLS_ACT
551 ---help--- 520 ---help---
552 requires new iproute2 521 Say Y here if you want to mangle the content of packets.
553 This allows for packets to be generically edited
554 522
555config NET_CLS_POLICE 523 To compile this code as a module, choose M here: the
556 bool "Traffic policing (needed for in/egress)" 524 module will be called pedit.
557 depends on NET_CLS && NET_QOS && NET_CLS_ACT!=y
558 help
559 Say Y to support traffic policing (bandwidth limits). Needed for
560 ingress and egress rate limiting.
561 525
562config NET_ACT_SIMP 526config NET_ACT_SIMP
563 tristate "Simple action" 527 tristate "Simple Example (Debug)"
564 depends on NET_CLS_ACT 528 depends on NET_CLS_ACT
565 ---help--- 529 ---help---
566 You must have new iproute2 to use this feature. 530 Say Y here to add a simple action for demonstration purposes.
567 This adds a very simple action for demonstration purposes 531 It is meant as an example and for debugging purposes. It will
568 The idea is to give action authors a basic example to look at. 532 print a configured policy string followed by the packet count
569 All this action will do is print on the console the configured 533 to the console for every packet that passes by.
570 policy string followed by _ then packet count. 534
535 If unsure, say N.
536
537 To compile this code as a module, choose M here: the
538 module will be called simple.
539
540config NET_CLS_POLICE
541 bool "Traffic Policing (obsolete)"
542 depends on NET_SCHED && NET_CLS_ACT!=y
543 select NET_ESTIMATOR
544 ---help---
545 Say Y here if you want to do traffic policing, i.e. strict
546 bandwidth limiting. This option is obsoleted by the traffic
547 policer implemented as action, it stays here for compatibility
548 reasons.
549
550config NET_CLS_IND
551 bool "Incoming device classification"
552 depends on NET_SCHED && (NET_CLS_U32 || NET_CLS_FW)
553 ---help---
554 Say Y here to extend the u32 and fw classifier to support
555 classification based on the incoming device. This option is
556 likely to disappear in favour of the metadata ematch.
557
558config NET_ESTIMATOR
559 bool "Rate estimator"
560 depends on NET_SCHED
561 ---help---
562 Say Y here to allow using rate estimators to estimate the current
563 rate-of-flow for network devices, queues, etc. This module is
564 automaticaly selected if needed but can be selected manually for
565 statstical purposes.
571 566
567endmenu