diff options
author | Eric Dumazet <edumazet@google.com> | 2015-01-14 15:17:06 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-01-15 18:26:16 -0500 |
commit | 5055c371bfd53fd369b895051b541318c2bad495 (patch) | |
tree | 28748ee77408e82a64ae13dbb4bd65f1eff6aa26 /include/net/route.h | |
parent | 0799c2d6f42db2b275b6479035f5b7a30ef4ee39 (diff) | |
download | op-kernel-dev-5055c371bfd53fd369b895051b541318c2bad495.zip op-kernel-dev-5055c371bfd53fd369b895051b541318c2bad495.tar.gz |
ipv4: per cpu uncached list
RAW sockets with hdrinc suffer from contention on rt_uncached_lock
spinlock.
One solution is to use percpu lists, since most routes are destroyed
by the cpu that created them.
It is unclear why we even have to put these routes in uncached_list,
as all outgoing packets should be freed when a device is dismantled.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Fixes: caacf05e5ad1 ("ipv4: Properly purge netdev references on uncached routes.")
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, 2 insertions, 0 deletions
diff --git a/include/net/route.h b/include/net/route.h index b17cf28..fe22d03 100644 --- a/include/net/route.h +++ b/include/net/route.h @@ -46,6 +46,7 @@ struct fib_nh; struct fib_info; +struct uncached_list; struct rtable { struct dst_entry dst; @@ -64,6 +65,7 @@ struct rtable { u32 rt_pmtu; struct list_head rt_uncached; + struct uncached_list *rt_uncached_list; }; static inline bool rt_is_input_route(const struct rtable *rt) |