aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ae
diff options
context:
space:
mode:
authorRobert Watson <rwatson@FreeBSD.org>2009-06-26 11:45:06 +0000
committerRobert Watson <rwatson@FreeBSD.org>2009-06-26 11:45:06 +0000
commiteb956cd041f956275522092d6ba66671356ff84f (patch)
tree30aee113c454323f30d4c201e18a0f29e2938074 /sys/dev/ae
parentbe80e49a01a84d1920236c2258b9ccb0df28062d (diff)
downloadsrc-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/ae')
-rw-r--r--sys/dev/ae/if_ae.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/ae/if_ae.c b/sys/dev/ae/if_ae.c
index f6d8e4251dbb..da26ee79951b 100644
--- a/sys/dev/ae/if_ae.c
+++ b/sys/dev/ae/if_ae.c
@@ -2073,7 +2073,7 @@ ae_rxfilter(ae_softc_t *sc)
* Load multicast tables.
*/
bzero(mchash, sizeof(mchash));
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK)
continue;
@@ -2081,7 +2081,7 @@ ae_rxfilter(ae_softc_t *sc)
ifma->ifma_addr), ETHER_ADDR_LEN);
mchash[crc >> 31] |= 1 << ((crc >> 26) & 0x1f);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
AE_WRITE_4(sc, AE_REG_MHT0, mchash[0]);
AE_WRITE_4(sc, AE_REG_MHT1, mchash[1]);
AE_WRITE_4(sc, AE_MAC_REG, rxcfg);