diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-11-11 08:14:07 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-11-11 19:29:40 +0100 |
commit | 72cdd1d971c0deb1619c5c339270570c43647a78 (patch) | |
tree | 15e3c63cf135818ae1b5cbc9d85ef2c48c03804c /include/net/route.h | |
parent | neigh: reorder struct neighbour (diff) | |
download | linux-72cdd1d971c0deb1619c5c339270570c43647a78.tar.xz linux-72cdd1d971c0deb1619c5c339270570c43647a78.zip |
net: get rid of rtable->idev
It seems idev field in struct rtable has no special purpose, but adding
extra atomic ops.
We hold refcounts on the device itself (using percpu data, so pretty
cheap in current kernel).
infiniband case is solved using dst.dev instead of idev->dev
Removal of this field means routing without route cache is now using
shared data, percpu data, and only potential contention is a pair of
atomic ops on struct neighbour per forwarded packet.
About 5% speedup on routing test.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Roland Dreier <rolandd@cisco.com>
Cc: Sean Hefty <sean.hefty@intel.com>
Cc: Hal Rosenstock <hal.rosenstock@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/route.h')
-rw-r--r-- | include/net/route.h | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/include/net/route.h b/include/net/route.h index 7e5e73bfa4de..cea533eaa853 100644 --- a/include/net/route.h +++ b/include/net/route.h @@ -55,8 +55,6 @@ struct rtable { /* Cache lookup keys */ struct flowi fl; - struct in_device *idev; - int rt_genid; unsigned rt_flags; __u16 rt_type; |