From eb956cd041f956275522092d6ba66671356ff84f Mon Sep 17 00:00:00 2001 From: Robert Watson Date: Fri, 26 Jun 2009 11:45:06 +0000 Subject: Use if_maddr_rlock()/if_maddr_runlock() rather than IF_ADDR_LOCK()/ IF_ADDR_UNLOCK() across network device drivers when accessing the per-interface multicast address list, if_multiaddrs. This will allow us to change the locking strategy without affecting our driver programming interface or binary interface. For two wireless drivers, remove unnecessary locking, since they don't actually access the multicast address list. Approved by: re (kib) MFC after: 6 weeks --- sys/dev/gem/if_gem.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'sys/dev/gem') diff --git a/sys/dev/gem/if_gem.c b/sys/dev/gem/if_gem.c index 86c9334558b02..945638395b2a4 100644 --- a/sys/dev/gem/if_gem.c +++ b/sys/dev/gem/if_gem.c @@ -2201,7 +2201,7 @@ gem_setladrf(struct gem_softc *sc) /* Clear the hash table. */ memset(hash, 0, sizeof(hash)); - IF_ADDR_LOCK(ifp); + if_maddr_rlock(ifp); TAILQ_FOREACH(inm, &ifp->if_multiaddrs, ifma_link) { if (inm->ifma_addr->sa_family != AF_LINK) continue; @@ -2214,7 +2214,7 @@ gem_setladrf(struct gem_softc *sc) /* Set the corresponding bit in the filter. */ hash[crc >> 4] |= 1 << (15 - (crc & 15)); } - IF_ADDR_UNLOCK(ifp); + if_maddr_runlock(ifp); v |= GEM_MAC_RX_HASH_FILTER; -- cgit v1.3