neigh: RCU conversion of struct neighbour
authorEric Dumazet <eric.dumazet@gmail.com>
Thu, 7 Oct 2010 00:49:21 +0000 (17:49 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 7 Oct 2010 01:01:33 +0000 (18:01 -0700)
commit767e97e1e0db0d0f3152cd2f3bd3403596aedbad
treecda6089e75f98fc3c9812993cf790fccac98b67a
parent546add79468183f266c75c632c96e4b0029e0d96
neigh: RCU conversion of struct neighbour

This is the second step for neighbour RCU conversion.

(first was commit d6bf7817 : RCU conversion of neigh hash table)

neigh_lookup() becomes lockless, but still take a reference on found
neighbour. (no more read_lock()/read_unlock() on tbl->lock)

struct neighbour gets an additional rcu_head field and is freed after an
RCU grace period.

Future work would need to eventually not take a reference on neighbour
for temporary dst (DST_NOCACHE), but this would need dst->_neighbour to
use a noref bit like we did for skb->_dst.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/neighbour.h
net/core/neighbour.c