diff options
author | rwatson <rwatson@FreeBSD.org> | 2009-06-26 11:45:06 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2009-06-26 11:45:06 +0000 |
commit | be5740a255fbcb1d4053e709cb7f22bb96320eb0 (patch) | |
tree | 30aee113c454323f30d4c201e18a0f29e2938074 /sys/dev/cs | |
parent | ffea8e20279ff0d82924add1cef0d8e16d9538a5 (diff) | |
download | FreeBSD-src-be5740a255fbcb1d4053e709cb7f22bb96320eb0.zip FreeBSD-src-be5740a255fbcb1d4053e709cb7f22bb96320eb0.tar.gz |
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
Diffstat (limited to 'sys/dev/cs')
-rw-r--r-- | sys/dev/cs/if_cs.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/cs/if_cs.c b/sys/dev/cs/if_cs.c index f3fed0a..826f4ad 100644 --- a/sys/dev/cs/if_cs.c +++ b/sys/dev/cs/if_cs.c @@ -1022,7 +1022,7 @@ cs_setmode(struct cs_softc *sc) * Set up the filter to only accept multicast * frames we're interested in. */ - IF_ADDR_LOCK(ifp); + if_maddr_rlock(ifp); TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { struct sockaddr_dl *dl = (struct sockaddr_dl *)ifma->ifma_addr; @@ -1032,7 +1032,7 @@ cs_setmode(struct cs_softc *sc) mask = (u_int16_t) (1 << (index & 0xf)); af[port] |= mask; } - IF_ADDR_UNLOCK(ifp); + if_maddr_runlock(ifp); } cs_writereg(sc, PP_LAF + 0, af[0]); |