diff options
author | Robert Watson <rwatson@FreeBSD.org> | 2009-06-26 11:45:06 +0000 |
---|---|---|
committer | Robert Watson <rwatson@FreeBSD.org> | 2009-06-26 11:45:06 +0000 |
commit | eb956cd041f956275522092d6ba66671356ff84f (patch) | |
tree | 30aee113c454323f30d4c201e18a0f29e2938074 /sys/dev/bm | |
parent | be80e49a01a84d1920236c2258b9ccb0df28062d (diff) | |
download | src-eb956cd041f956275522092d6ba66671356ff84f.tar.gz src-eb956cd041f956275522092d6ba66671356ff84f.zip |
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
Notes
Notes:
svn path=/head/; revision=195049
Diffstat (limited to 'sys/dev/bm')
-rw-r--r-- | sys/dev/bm/if_bm.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/bm/if_bm.c b/sys/dev/bm/if_bm.c index 1bb07b2f3a48..c2a43589baf0 100644 --- a/sys/dev/bm/if_bm.c +++ b/sys/dev/bm/if_bm.c @@ -1072,7 +1072,7 @@ bm_setladrf(struct bm_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; @@ -1085,7 +1085,7 @@ bm_setladrf(struct bm_softc *sc) /* Set the corresponding bit in the filter. */ hash[crc >> 4] |= 1 << (crc & 0xf); } - IF_ADDR_UNLOCK(ifp); + if_maddr_runlock(ifp); } /* Write out new hash table */ |