This series converts state_by{dst,src,spi} to allow lookups without holding xfrm_state_lock.
Only xfrm_state_find() is converted here for the (more common) case where we do not query key manager. Once more flows are created/destroyed (or the flow cache is overloaded and often cleans out other entries) this function (and the state lock) start to show up in perf. Florian Westphal (6): xfrm: state: use hlist_for_each_entry_rcu helper xfrm: state: use atomic_inc_not_zero to increment refcount xfrm: state: delay freeing until rcu grace period has elapsed xfrm: state: add sequence count to detect hash resizes xfrm: state: use rcu_deref and assign_pointer helpers xfrm: state: don't use lock anymore unless acquire operation is needed include/net/netns/xfrm.h | 6 +- net/xfrm/xfrm_state.c | 103 +++++++++++++++++++++++++++++++---------------- 2 files changed, 72 insertions(+), 37 deletions(-) NB: I have a similar patch series for the policy rwlock, I will send it once/if this series is applied.