summaryrefslogtreecommitdiffstats
path: root/sys/netinet6/ip6_input.c
diff options
context:
space:
mode:
authorae <ae@FreeBSD.org>2015-07-29 08:12:05 +0000
committerae <ae@FreeBSD.org>2015-07-29 08:12:05 +0000
commit75425458ac884224851416fa8b7b06d187702f59 (patch)
tree138dc350c71d58f402cf101b1018071f60b0ab4b /sys/netinet6/ip6_input.c
parent5583964cfc80625a7658e4e03e934d60792eff3b (diff)
downloadFreeBSD-src-75425458ac884224851416fa8b7b06d187702f59.zip
FreeBSD-src-75425458ac884224851416fa8b7b06d187702f59.tar.gz
Convert in_ifaddr_lock and in6_ifaddr_lock to rmlock.
Both are used to protect access to IP addresses lists and they can be acquired for reading several times per packet. To reduce lock contention it is better to use rmlock here. Reviewed by: gnn (previous version) Obtained from: Yandex LLC Sponsored by: Yandex LLC Differential Revision: https://reviews.freebsd.org/D3149
Diffstat (limited to 'sys/netinet6/ip6_input.c')
-rw-r--r--sys/netinet6/ip6_input.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/netinet6/ip6_input.c b/sys/netinet6/ip6_input.c
index 78e8ef3..e4e388f 100644
--- a/sys/netinet6/ip6_input.c
+++ b/sys/netinet6/ip6_input.c
@@ -82,6 +82,8 @@ __FBSDID("$FreeBSD$");
#include <sys/errno.h>
#include <sys/time.h>
#include <sys/kernel.h>
+#include <sys/lock.h>
+#include <sys/rmlock.h>
#include <sys/syslog.h>
#include <net/if.h>
@@ -144,8 +146,8 @@ VNET_PCPUSTAT_SYSINIT(ip6stat);
VNET_PCPUSTAT_SYSUNINIT(ip6stat);
#endif /* VIMAGE */
-struct rwlock in6_ifaddr_lock;
-RW_SYSINIT(in6_ifaddr_lock, &in6_ifaddr_lock, "in6_ifaddr_lock");
+struct rmlock in6_ifaddr_lock;
+RM_SYSINIT(in6_ifaddr_lock, &in6_ifaddr_lock, "in6_ifaddr_lock");
static void ip6_init2(void *);
static int ip6_hopopts_input(u_int32_t *, u_int32_t *, struct mbuf **, int *);
OpenPOWER on IntegriCloud