summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authorae <ae@FreeBSD.org>2014-01-02 08:40:37 +0000
committerae <ae@FreeBSD.org>2014-01-02 08:40:37 +0000
commit4b9dcf4e758fb36bc823ff1c398cefe475eda2a6 (patch)
tree90a85cde7dc5f8afdd3406e0a53b44a42e6e8077 /sys/netinet
parent37d46199e9d73bd67f43aef06394bf6f2bb1acbd (diff)
downloadFreeBSD-src-4b9dcf4e758fb36bc823ff1c398cefe475eda2a6.zip
FreeBSD-src-4b9dcf4e758fb36bc823ff1c398cefe475eda2a6.tar.gz
lla_lookup() does modification only when LLE_CREATE is specified.
Thus we can use IF_AFDATA_RLOCK() instead of IF_AFDATA_LOCK() when doing lla_lookup() without LLE_CREATE flag. Reviewed by: glebius, adrian MFC after: 1 week Sponsored by: Yandex LLC
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/if_ether.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c
index 6228ea4..a26e179 100644
--- a/sys/netinet/if_ether.c
+++ b/sys/netinet/if_ether.c
@@ -149,10 +149,10 @@ arp_ifscrub(struct ifnet *ifp, uint32_t addr)
addr4.sin_len = sizeof(addr4);
addr4.sin_family = AF_INET;
addr4.sin_addr.s_addr = addr;
- IF_AFDATA_LOCK(ifp);
+ IF_AFDATA_RLOCK(ifp);
lla_lookup(LLTABLE(ifp), (LLE_DELETE | LLE_IFADDR),
(struct sockaddr *)&addr4);
- IF_AFDATA_UNLOCK(ifp);
+ IF_AFDATA_RUNLOCK(ifp);
}
#endif
@@ -801,9 +801,9 @@ reply:
struct llentry *lle = NULL;
sin.sin_addr = itaddr;
- IF_AFDATA_LOCK(ifp);
+ IF_AFDATA_RLOCK(ifp);
lle = lla_lookup(LLTABLE(ifp), 0, (struct sockaddr *)&sin);
- IF_AFDATA_UNLOCK(ifp);
+ IF_AFDATA_RUNLOCK(ifp);
if ((lle != NULL) && (lle->la_flags & LLE_PUB)) {
(void)memcpy(ar_tha(ah), ar_sha(ah), ah->ar_hln);
OpenPOWER on IntegriCloud