15 Jul, 2011
1 commit
-
Remove it, as it indirectly exposes netdev features. It's not used in
iproute2 (2.6.38) - is anything else using its interface?Signed-off-by: Michał Mirosław
Signed-off-by: David S. Miller
25 Aug, 2010
1 commit
-
Trivial extension to existing meta data match rules to allow
matching on skb receive hash value.Signed-off-by: Stephen Hemminger
Signed-off-by: David S. Miller
05 Nov, 2009
1 commit
-
This cleanup patch puts struct/union/enum opening braces,
in first line to ease grep games.struct something
{becomes :
struct something {
Signed-off-by: Eric Dumazet
Signed-off-by: David S. Miller
31 Jan, 2009
4 commits
-
fix the following 'make headers_check' warning:
usr/include/linux/tc_ematch/tc_em_text.h:11: found __[us]{8,16,32,64} type without #include
Signed-off-by: Jaswinder Singh Rajput
-
fix the following 'make headers_check' warning:
usr/include/linux/tc_ematch/tc_em_nbyte.h:8: found __[us]{8,16,32,64} type without #include
Signed-off-by: Jaswinder Singh Rajput
-
fix the following 'make headers_check' warning:
usr/include/linux/tc_ematch/tc_em_meta.h:18: found __[us]{8,16,32,64} type without #include
Signed-off-by: Jaswinder Singh Rajput
-
fix the following 'make headers_check' warning:
usr/include/linux/tc_ematch/tc_em_cmp.h:8: found __[us]{8,16,32,64} type without #include
Signed-off-by: Jaswinder Singh Rajput
05 Feb, 2008
1 commit
-
Provide a way to use tc filters on vlan tag even if tag is buried in
skb due to hardware acceleration.Signed-off-by: Stephen Hemminger
Signed-off-by: David S. Miller
19 Sep, 2006
1 commit
-
Signed-off-by: David Woodhouse
18 Jun, 2006
1 commit
-
This adds the Kbuild files listing the files which are to be installed by
the 'headers_install' make target, in generic directories.Signed-off-by: David Woodhouse
04 Oct, 2005
1 commit
-
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: Eric Dumazet
Acked-by: Arnaldo Carvalho de Melo
Signed-off-by: David S. Miller
23 Jul, 2005
2 commits
-
More unusable TCF_META_* match types that need to get eliminated
before 2.6.13 goes out the door.Signed-off-by: David S. Miller
Acked-by: Thomas Graf -
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: David S. Miller
Acked-by: Thomas Graf
19 Jul, 2005
1 commit
-
Thomas Graf states:
> I used to mark such ids as obsolete in the header but since
> skb is on diet anyway and there has been no official
> iproute2 release with the ematch bits included it might be
> a better idea to remove the ids from the header completely.
> Those that have picked up my patch on netdev shouldn't care
> about a ABI breakage, actually I doubt that someone is using
> it already.So here's the patch to remove it.
Signed-off-by: Patrick McHardy
Signed-off-by: David S. Miller
06 Jul, 2005
1 commit
-
Signed-off-by: Thomas Graf
Signed-off-by: David S. Miller
24 Jun, 2005
1 commit
-
Signed-off-by: Thomas Graf
Signed-off-by: David S. Miller
09 Jun, 2005
1 commit
-
Adds meta collectors for all socket attributes that make sense
to be filtered upon. Some of them are only useful for debugging
but having them doesn't hurt.Signed-off-by: Thomas Graf
Signed-off-by: David S. Miller
17 Apr, 2005
1 commit
-
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.Let it rip!