- 06 11月, 2005 23 次提交
-
-
由 Thomas Graf 提交于
Adds a new u8 flags in a unused padding area of the netlink message. Adds ECN marking support to be used instead of dropping packets immediately. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Removes unnecessary includes, initializers, and simplifies the code a bit. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Since we are no longer depending on the default VQ to be always allocated we can leave it up to the user to actually create it. This gives the user the ability to leave it out on purpose and enqueue packets directly to the device without applying the RED algorithm. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Introduces a new red parameter set for use in equalize mode, although only the qavg variable and the idle period marker are being used for now this makes it possible to allow a separate parameter set to be used for equalize later on. The use of this separate parameter set fixes a bogus start of an idle period in gred_drop() which did start an idle period on the default VQ even if equalize mode was disabled. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
The case when the default VQ is not set up yet is already handled in a less error prone way. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Try to enqueue packets if we cannot associate it with a VQ, this basically means that the default VQ has not been set up yet. We must check if the VQ still exists while requeueing, the VQ might have been changed between dequeue and the requeue of the underlying qdisc. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Adds a transformation function returning the DP index for a given skb according to its tc_index. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Qdiscs are not supposed to reset statistics in reset() and while changing parameters. My argumentation is that if the user wants the counters to be reset he can simply remove and readd the qdiscs, that's what most users do anyway. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Simplifies code a lot by separating the red algorithm and the queueing logic. We now differentiate between probability marks and forced marks but sum them together again to not break backwards compatibility. This brings GRED back to the level of RED and improves the accuracy of the averge queue length calculations when stab suggests a zero shift. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Introduces a function gred_change_vq() acting as a central point to change VQ parameters. Fixes priority inheritance in rio mode when the default DP equals 0. Adds proper locking during changes. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Introduces a function gred_change_table_def() acting as a central point to change the table definition. Adds missing validations for table definition: MAX_DPs > DPs > 0 and def_DP < DPs thus fixing possible invalid memory reference oopses. Only root could do it but having a typo crashing the machine is a bit hard. Adds missing locking while changing the table definition, the operation of changing the number of DPs and removing shadowed VQs may not be interrupted by a dequeue. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Avoids the allocation of a buffer by appending the VQs directly to the skb and simplifies the code by using the appropriate message construction macros. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Introduces a flags variable using bitops and transforms eqp to use it. Converts the conditions of the form (wred && rio) to (wred) since wred can only be enabled in rio mode anyway. The patch also improves WRED mode detection. The current behaviour does not allow WRED mode to be turned off again without removing the whole qdisc first. The new algorithm checks each VQ against each other looking for equal priorities every time a VQ is changed or added. The performance is poor, O(n**2), but it's used only during administrative tasks and the number of VQs is strictly limited. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Removes the skb trimming code which is not needed since we never touch the skb upon failure. Removes unnecessary includes, initializers, and simplifies the code a bit. Removes Jamal's obsolete email addresses upon his own request. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
We should not interrupt and restart an idle period while idling already. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
由 Thomas Graf 提交于
Simplifies code a lot by separating the red algorithm and the queueing logic. We now differentiate between probability marks and forced marks but sum them together again to not break backwards compatibility. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
- 03 11月, 2005 1 次提交
-
-
由 Thomas Graf 提交于
Make "QoS and/or fair queueing" have its own menu, it's too big to be inlined into "Network options". Remove the obsolete NET_QOS option. Automatically select NET_CLS if needed. Do the same for NET_ESTIMATOR but allow it to be selected manually for statistical purposes. Add comments to separate queueing from classification. Fix dependencies and ordering of classifiers. Improve descriptions/help texts and remove outdated pieces. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NArnaldo Carvalho de Melo <acme@mandriva.com>
-
- 14 10月, 2005 1 次提交
-
-
由 Andi Kleen 提交于
Opterons with frequency scaling have fully unsynchronized TSCs running at different frequencies, so using TSCs there is not a good idea. Also some other x86 boxes have this problem. gettimeofday should be good enough, so just disable it. Signed-off-by: NAndi Kleen <ak@suse.de> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 04 10月, 2005 1 次提交
-
-
由 Eric Dumazet 提交于
Arnaldo and I agreed it could be applied now, because I have other pending patches depending on this one (Thank you Arnaldo) (The other important patch moves skc_refcnt in a separate cache line, so that the SMP/NUMA performance doesnt suffer from cache line ping pongs) 1) First some performance data : -------------------------------- tcp_v4_rcv() wastes a *lot* of time in __inet_lookup_established() The most time critical code is : sk_for_each(sk, node, &head->chain) { if (INET_MATCH(sk, acookie, saddr, daddr, ports, dif)) goto hit; /* You sunk my battleship! */ } The sk_for_each() does use prefetch() hints but only the begining of "struct sock" is prefetched. As INET_MATCH first comparison uses inet_sk(__sk)->daddr, wich is far away from the begining of "struct sock", it has to bring into CPU cache cold cache line. Each iteration has to use at least 2 cache lines. This can be problematic if some chains are very long. 2) The goal ----------- The idea I had is to change things so that INET_MATCH() may return FALSE in 99% of cases only using the data already in the CPU cache, using one cache line per iteration. 3) Description of the patch --------------------------- Adds a new 'unsigned int skc_hash' field in 'struct sock_common', filling a 32 bits hole on 64 bits platform. struct sock_common { unsigned short skc_family; volatile unsigned char skc_state; unsigned char skc_reuse; int skc_bound_dev_if; struct hlist_node skc_node; struct hlist_node skc_bind_node; atomic_t skc_refcnt; + unsigned int skc_hash; struct proto *skc_prot; }; Store in this 32 bits field the full hash, not masked by (ehash_size - 1) Using this full hash as the first comparison done in INET_MATCH permits us immediatly skip the element without touching a second cache line in case of a miss. Suppress the sk_hashent/tw_hashent fields since skc_hash (aliased to sk_hash and tw_hash) already contains the slot number if we mask with (ehash_size - 1) File include/net/inet_hashtables.h 64 bits platforms : #define INET_MATCH(__sk, __hash, __cookie, __saddr, __daddr, __ports, __dif)\ (((__sk)->sk_hash == (__hash)) ((*((__u64 *)&(inet_sk(__sk)->daddr)))== (__cookie)) && \ ((*((__u32 *)&(inet_sk(__sk)->dport))) == (__ports)) && \ (!((__sk)->sk_bound_dev_if) || ((__sk)->sk_bound_dev_if == (__dif)))) 32bits platforms: #define TCP_IPV4_MATCH(__sk, __hash, __cookie, __saddr, __daddr, __ports, __dif)\ (((__sk)->sk_hash == (__hash)) && \ (inet_sk(__sk)->daddr == (__saddr)) && \ (inet_sk(__sk)->rcv_saddr == (__daddr)) && \ (!((__sk)->sk_bound_dev_if) || ((__sk)->sk_bound_dev_if == (__dif)))) - Adds a prefetch(head->chain.first) in __inet_lookup_established()/__tcp_v4_check_established() and __inet6_lookup_established()/__tcp_v6_check_established() and __dccp_v4_check_established() to bring into cache the first element of the list, before the {read|write}_lock(&head->lock); Signed-off-by: NEric Dumazet <dada1@cosmosbay.com> Acked-by: NArnaldo Carvalho de Melo <acme@ghostprotocols.net> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 10 9月, 2005 1 次提交
-
-
由 Ingo Molnar 提交于
Clean up timer initialization by introducing DEFINE_TIMER a'la DEFINE_SPINLOCK. Build and boot-tested on x86. A similar patch has been been in the -RT tree for some time. Signed-off-by: NIngo Molnar <mingo@elte.hu> Signed-off-by: NAndrew Morton <akpm@osdl.org> Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
-
- 30 8月, 2005 4 次提交
-
-
由 David S. Miller 提交于
And select it when the relevant modules are enabled. Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Patrick McHardy 提交于
Signed-off-by: NPatrick McHardy <kaber@trash.net> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Denis Vlasenko 提交于
# grep -r 'netif_carrier_o[nf]' linux-2.6.12 | wc -l 246 # size vmlinux.org vmlinux.carrier text data bss dec hex filename 4339634 1054414 259296 5653344 564360 vmlinux.org 4337710 1054414 259296 5651420 563bdc vmlinux.carrier And this ain't an allyesconfig kernel! Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Patrick McHardy 提交于
Signed-off-by: NPatrick McHardy <kaber@trash.net> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 24 8月, 2005 1 次提交
-
-
由 Thomas Graf 提交于
qdisc_create_dflt() is missing to destroy the newly allocated default qdisc if the initialization fails resulting in leaks of all kinds. The only caller in mainline which may trigger this bug is sch_tbf.c in tbf_create_dflt_qdisc(). Note: qdisc_create_dflt() doesn't fulfill the official locking requirements of qdisc_destroy() but since the qdisc could never be seen by the outside world this doesn't matter and it can stay as-is until the locking of pkt_sched is cleaned up. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 25 7月, 2005 1 次提交
-
-
由 Patrick McHardy 提交于
Signed-off-by: NPatrick McHardy <kaber@trash.net> Acked-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 23 7月, 2005 2 次提交
-
-
由 David S. Miller 提交于
More unusable TCF_META_* match types that need to get eliminated before 2.6.13 goes out the door. Signed-off-by: NDavid S. Miller <davem@davemloft.net> Acked-by: NThomas Graf <tgraf@suug.ch>
-
由 David S. Miller 提交于
It won't exist any longer when we shrink the SKB in 2.6.14, and we should kill this off before anyone in userspace starts using it. Signed-off-by: NDavid S. Miller <davem@davemloft.net> Acked-by: NThomas Graf <tgraf@suug.ch>
-
- 19 7月, 2005 3 次提交
-
-
由 David S. Miller 提交于
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Thomas Graf 提交于
The current call to __qdisc_dequeue_head leads to a branch misprediction for every loop iteration, the fact that the most common priority is 2 makes this even worse. This issue has been brought up by Eric Dumazet <dada1@cosmosbay.com> but unlike his solution which was to manually unroll the loop, this approach preserves the possibility to increase the number of bands at compile time. Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Thomas Graf 提交于
Signed-off-by: NThomas Graf <tgraf@suug.ch> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 12 7月, 2005 1 次提交
-
-
由 Sam Ravnborg 提交于
Move the protocol specific config options out to the specific protocols. With this change net/Kconfig now starts to become readable and serve as a good basis for further re-structuring. The menu structure is left almost intact, except that indention is fixed in most cases. Most visible are the INET changes where several "depends on INET" are replaced with a single ifdef INET / endif pair. Several new files were created to accomplish this change - they are small but serve the purpose that config options are now distributed out where they belongs. Signed-off-by: NSam Ravnborg <sam@ravnborg.org> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 09 7月, 2005 1 次提交
-
-
由 David S. Miller 提交于
This is part of the grand scheme to eliminate the qlen member of skb_queue_head, and subsequently remove the 'list' member of sk_buff. Most users of skb_queue_len() want to know if the queue is empty or not, and that's trivially done with skb_queue_empty() which doesn't use the skb_queue_head->qlen member and instead uses the queue list emptyness as the test. Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-