summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/arm/at91/if_ate.c6
-rw-r--r--sys/arm/xscale/ixp425/if_npe.c4
-rw-r--r--sys/dev/ae/if_ae.c4
-rw-r--r--sys/dev/age/if_age.c4
-rw-r--r--sys/dev/alc/if_alc.c4
-rw-r--r--sys/dev/ale/if_ale.c4
-rw-r--r--sys/dev/ath/if_ath.c4
-rw-r--r--sys/dev/bce/if_bce.c4
-rw-r--r--sys/dev/bfe/if_bfe.c4
-rw-r--r--sys/dev/bge/if_bge.c4
-rw-r--r--sys/dev/bm/if_bm.c4
-rw-r--r--sys/dev/cas/if_cas.c4
-rw-r--r--sys/dev/cs/if_cs.c4
-rw-r--r--sys/dev/dc/if_dc.c16
-rw-r--r--sys/dev/de/if_de.c4
-rw-r--r--sys/dev/e1000/if_em.c4
-rw-r--r--sys/dev/e1000/if_igb.c4
-rw-r--r--sys/dev/ed/if_ed.c4
-rw-r--r--sys/dev/et/if_et.c4
-rw-r--r--sys/dev/ex/if_ex.c8
-rw-r--r--sys/dev/fe/if_fe.c4
-rw-r--r--sys/dev/fxp/if_fxp.c4
-rw-r--r--sys/dev/gem/if_gem.c4
-rw-r--r--sys/dev/hme/if_hme.c4
-rw-r--r--sys/dev/ie/if_ie.c4
-rw-r--r--sys/dev/if_ndis/if_ndis.c6
-rw-r--r--sys/dev/ixgb/if_ixgb.c4
-rw-r--r--sys/dev/ixgbe/ixgbe.c4
-rw-r--r--sys/dev/jme/if_jme.c4
-rw-r--r--sys/dev/le/lance.c4
-rw-r--r--sys/dev/lge/if_lge.c4
-rw-r--r--sys/dev/malo/if_malo.c6
-rw-r--r--sys/dev/mge/if_mge.c4
-rw-r--r--sys/dev/msk/if_msk.c4
-rw-r--r--sys/dev/mxge/if_mxge.c6
-rw-r--r--sys/dev/my/if_my.c4
-rw-r--r--sys/dev/nfe/if_nfe.c4
-rw-r--r--sys/dev/nge/if_nge.c4
-rw-r--r--sys/dev/nve/if_nve.c4
-rw-r--r--sys/dev/nxge/if_nxge.c8
-rw-r--r--sys/dev/pcn/if_pcn.c4
-rw-r--r--sys/dev/pdq/pdq_ifsubr.c4
-rw-r--r--sys/dev/re/if_re.c4
-rw-r--r--sys/dev/sf/if_sf.c4
-rw-r--r--sys/dev/sis/if_sis.c8
-rw-r--r--sys/dev/sk/if_sk.c8
-rw-r--r--sys/dev/sn/if_sn.c6
-rw-r--r--sys/dev/snc/dp83932.c4
-rw-r--r--sys/dev/ste/if_ste.c4
-rw-r--r--sys/dev/stge/if_stge.c4
-rw-r--r--sys/dev/ti/if_ti.c4
-rw-r--r--sys/dev/tl/if_tl.c4
-rw-r--r--sys/dev/tsec/if_tsec.c4
-rw-r--r--sys/dev/tx/if_tx.c4
-rw-r--r--sys/dev/txp/if_txp.c4
-rw-r--r--sys/dev/usb/net/if_aue.c4
-rw-r--r--sys/dev/usb/net/if_axe.c4
-rw-r--r--sys/dev/usb/net/if_cue.c4
-rw-r--r--sys/dev/usb/net/if_kue.c4
-rw-r--r--sys/dev/usb/net/if_rue.c4
-rw-r--r--sys/dev/usb/net/if_udav.c4
-rw-r--r--sys/dev/usb/wlan/if_upgt.c2
-rw-r--r--sys/dev/usb/wlan/if_urtw.c2
-rw-r--r--sys/dev/usb/wlan/if_zyd.c4
-rw-r--r--sys/dev/vge/if_vge.c4
-rw-r--r--sys/dev/vr/if_vr.c4
-rw-r--r--sys/dev/wb/if_wb.c4
-rw-r--r--sys/dev/wi/if_wi.c4
-rw-r--r--sys/dev/wl/if_wl.c4
-rw-r--r--sys/dev/xe/if_xe.c4
-rw-r--r--sys/dev/xl/if_xl.c8
-rw-r--r--sys/mips/adm5120/if_admsw.c4
-rw-r--r--sys/netgraph/ng_ether.c4
-rw-r--r--sys/pci/if_rl.c4
74 files changed, 165 insertions, 169 deletions
diff --git a/sys/arm/at91/if_ate.c b/sys/arm/at91/if_ate.c
index 00d3e3b..ec4771c 100644
--- a/sys/arm/at91/if_ate.c
+++ b/sys/arm/at91/if_ate.c
@@ -413,7 +413,7 @@ ate_setmcast(struct ate_softc *sc)
*/
mcaf[0] = 0;
mcaf[1] = 0;
- 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;
@@ -421,14 +421,14 @@ ate_setmcast(struct ate_softc *sc)
ifma->ifma_addr), ETHER_ADDR_LEN) >> 26;
af[index >> 3] |= 1 << (index & 7);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
/*
* Write the hash to the hash register. This card can also
* accept unicast packets as well as multicast packets using this
* register for easier bridging operations, but we don't take
* advantage of that. Locks here are to avoid LOR with the
- * IF_ADDR_LOCK, but might not be strictly necessary.
+ * if_maddr_rlock, but might not be strictly necessary.
*/
WR4(sc, ETH_HSL, mcaf[0]);
WR4(sc, ETH_HSH, mcaf[1]);
diff --git a/sys/arm/xscale/ixp425/if_npe.c b/sys/arm/xscale/ixp425/if_npe.c
index c02058b..5b605ae 100644
--- a/sys/arm/xscale/ixp425/if_npe.c
+++ b/sys/arm/xscale/ixp425/if_npe.c
@@ -435,7 +435,7 @@ npe_setmcast(struct npe_softc *sc)
memset(clr, 0, ETHER_ADDR_LEN);
memset(set, 0xff, ETHER_ADDR_LEN);
- 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;
@@ -445,7 +445,7 @@ npe_setmcast(struct npe_softc *sc)
set[i] &= mac[i];
}
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
for (i = 0; i < ETHER_ADDR_LEN; i++) {
mask[i] = set[i] | ~clr[i];
diff --git a/sys/dev/ae/if_ae.c b/sys/dev/ae/if_ae.c
index f6d8e42..da26ee7 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);
diff --git a/sys/dev/age/if_age.c b/sys/dev/age/if_age.c
index d60c285..f2a3725 100644
--- a/sys/dev/age/if_age.c
+++ b/sys/dev/age/if_age.c
@@ -3131,7 +3131,7 @@ age_rxfilter(struct age_softc *sc)
/* Program new filter. */
bzero(mchash, sizeof(mchash));
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(ifma, &sc->age_ifp->if_multiaddrs, ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK)
continue;
@@ -3139,7 +3139,7 @@ age_rxfilter(struct age_softc *sc)
ifma->ifma_addr), ETHER_ADDR_LEN);
mchash[crc >> 31] |= 1 << ((crc >> 26) & 0x1f);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
CSR_WRITE_4(sc, AGE_MAR0, mchash[0]);
CSR_WRITE_4(sc, AGE_MAR1, mchash[1]);
diff --git a/sys/dev/alc/if_alc.c b/sys/dev/alc/if_alc.c
index dc1c1fd..b28a411 100644
--- a/sys/dev/alc/if_alc.c
+++ b/sys/dev/alc/if_alc.c
@@ -3446,7 +3446,7 @@ alc_rxfilter(struct alc_softc *sc)
goto chipit;
}
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(ifma, &sc->alc_ifp->if_multiaddrs, ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK)
continue;
@@ -3454,7 +3454,7 @@ alc_rxfilter(struct alc_softc *sc)
ifma->ifma_addr), ETHER_ADDR_LEN);
mchash[crc >> 31] |= 1 << ((crc >> 26) & 0x1f);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
chipit:
CSR_WRITE_4(sc, ALC_MAR0, mchash[0]);
diff --git a/sys/dev/ale/if_ale.c b/sys/dev/ale/if_ale.c
index 19ec2e9..f5ecb6a 100644
--- a/sys/dev/ale/if_ale.c
+++ b/sys/dev/ale/if_ale.c
@@ -3048,7 +3048,7 @@ ale_rxfilter(struct ale_softc *sc)
/* Program new filter. */
bzero(mchash, sizeof(mchash));
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(ifma, &sc->ale_ifp->if_multiaddrs, ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK)
continue;
@@ -3056,7 +3056,7 @@ ale_rxfilter(struct ale_softc *sc)
ifma->ifma_addr), ETHER_ADDR_LEN);
mchash[crc >> 31] |= 1 << ((crc >> 26) & 0x1f);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
CSR_WRITE_4(sc, ALE_MAR0, mchash[0]);
CSR_WRITE_4(sc, ALE_MAR1, mchash[1]);
diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c
index 4a0401f..7d0eb5e 100644
--- a/sys/dev/ath/if_ath.c
+++ b/sys/dev/ath/if_ath.c
@@ -2408,7 +2408,7 @@ ath_update_mcast(struct ifnet *ifp)
* Merge multicast addresses to form the hardware filter.
*/
mfilt[0] = mfilt[1] = 0;
- IF_ADDR_LOCK(ifp); /* XXX need some fiddling to remove? */
+ if_maddr_rlock(ifp); /* XXX need some fiddling to remove? */
TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
caddr_t dl;
u_int32_t val;
@@ -2423,7 +2423,7 @@ ath_update_mcast(struct ifnet *ifp)
pos &= 0x3f;
mfilt[pos / 32] |= (1 << (pos % 32));
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
} else
mfilt[0] = mfilt[1] = ~0;
ath_hal_setmcastfilter(sc->sc_ah, mfilt[0], mfilt[1]);
diff --git a/sys/dev/bce/if_bce.c b/sys/dev/bce/if_bce.c
index c65451d..431ed9f 100644
--- a/sys/dev/bce/if_bce.c
+++ b/sys/dev/bce/if_bce.c
@@ -7260,7 +7260,7 @@ bce_set_rx_mode(struct bce_softc *sc)
/* Accept one or more multicast(s). */
DBPRINT(sc, BCE_INFO_MISC, "Enabling selective multicast mode.\n");
- 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;
@@ -7268,7 +7268,7 @@ bce_set_rx_mode(struct bce_softc *sc)
ifma->ifma_addr), ETHER_ADDR_LEN) & 0xFF;
hashes[(h & 0xE0) >> 5] |= 1 << (h & 0x1F);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
for (i = 0; i < NUM_MC_HASH_REGISTERS; i++)
REG_WR(sc, BCE_EMAC_MULTICAST_HASH0 + (i * 4), hashes[i]);
diff --git a/sys/dev/bfe/if_bfe.c b/sys/dev/bfe/if_bfe.c
index fb95eba..00a2e97 100644
--- a/sys/dev/bfe/if_bfe.c
+++ b/sys/dev/bfe/if_bfe.c
@@ -1111,14 +1111,14 @@ bfe_set_rx_mode(struct bfe_softc *sc)
val |= BFE_RXCONF_ALLMULTI;
else {
val &= ~BFE_RXCONF_ALLMULTI;
- 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;
bfe_cam_write(sc,
LLADDR((struct sockaddr_dl *)ifma->ifma_addr), i++);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
}
CSR_WRITE_4(sc, BFE_RXCONF, val);
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c
index 87c05a3..4528762 100644
--- a/sys/dev/bge/if_bge.c
+++ b/sys/dev/bge/if_bge.c
@@ -1186,7 +1186,7 @@ bge_setmulti(struct bge_softc *sc)
CSR_WRITE_4(sc, BGE_MAR0 + (i * 4), 0);
/* Now program new ones. */
- 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;
@@ -1194,7 +1194,7 @@ bge_setmulti(struct bge_softc *sc)
ifma->ifma_addr), ETHER_ADDR_LEN) & 0x7F;
hashes[(h & 0x60) >> 5] |= 1 << (h & 0x1F);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
for (i = 0; i < 4; i++)
CSR_WRITE_4(sc, BGE_MAR0 + (i * 4), hashes[i]);
diff --git a/sys/dev/bm/if_bm.c b/sys/dev/bm/if_bm.c
index 1bb07b2..c2a4358 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 */
diff --git a/sys/dev/cas/if_cas.c b/sys/dev/cas/if_cas.c
index 4c196a5..edcfec4 100644
--- a/sys/dev/cas/if_cas.c
+++ b/sys/dev/cas/if_cas.c
@@ -2531,7 +2531,7 @@ cas_setladrf(struct cas_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;
@@ -2544,7 +2544,7 @@ cas_setladrf(struct cas_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 |= CAS_MAC_RX_CONF_HFILTER;
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]);
diff --git a/sys/dev/dc/if_dc.c b/sys/dev/dc/if_dc.c
index d1f51ac..64e7aef 100644
--- a/sys/dev/dc/if_dc.c
+++ b/sys/dev/dc/if_dc.c
@@ -1110,7 +1110,7 @@ dc_setfilt_21143(struct dc_softc *sc)
else
DC_CLRBIT(sc, DC_NETCFG, DC_NETCFG_RX_ALLMULTI);
- 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;
@@ -1118,7 +1118,7 @@ dc_setfilt_21143(struct dc_softc *sc)
LLADDR((struct sockaddr_dl *)ifma->ifma_addr));
sp[h >> 4] |= htole32(1 << (h & 0xF));
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (ifp->if_flags & IFF_BROADCAST) {
h = dc_mchash_le(sc, ifp->if_broadcastaddr);
@@ -1185,7 +1185,7 @@ dc_setfilt_admtek(struct dc_softc *sc)
return;
/* Now program new ones. */
- 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;
@@ -1200,7 +1200,7 @@ dc_setfilt_admtek(struct dc_softc *sc)
else
hashes[1] |= (1 << (h - 32));
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
CSR_WRITE_4(sc, DC_AL_MAR0, hashes[0]);
CSR_WRITE_4(sc, DC_AL_MAR1, hashes[1]);
@@ -1258,7 +1258,7 @@ dc_setfilt_asix(struct dc_softc *sc)
return;
/* now program new ones */
- 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;
@@ -1268,7 +1268,7 @@ dc_setfilt_asix(struct dc_softc *sc)
else
hashes[1] |= (1 << (h - 32));
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
CSR_WRITE_4(sc, DC_AX_FILTIDX, DC_AX_FILTIDX_MAR0);
CSR_WRITE_4(sc, DC_AX_FILTDATA, hashes[0]);
@@ -1313,7 +1313,7 @@ dc_setfilt_xircom(struct dc_softc *sc)
else
DC_CLRBIT(sc, DC_NETCFG, DC_NETCFG_RX_ALLMULTI);
- 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;
@@ -1321,7 +1321,7 @@ dc_setfilt_xircom(struct dc_softc *sc)
LLADDR((struct sockaddr_dl *)ifma->ifma_addr));
sp[h >> 4] |= htole32(1 << (h & 0xF));
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (ifp->if_flags & IFF_BROADCAST) {
h = dc_mchash_le(sc, ifp->if_broadcastaddr);
diff --git a/sys/dev/de/if_de.c b/sys/dev/de/if_de.c
index cda4d3b..2acf1a8 100644
--- a/sys/dev/de/if_de.c
+++ b/sys/dev/de/if_de.c
@@ -3041,7 +3041,7 @@ tulip_addr_filter(tulip_softc_t * const sc)
multicnt = 0;
ifp = sc->tulip_ifp;
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
/* Copy MAC address on stack to align. */
if (ifp->if_input != NULL)
@@ -3134,7 +3134,7 @@ tulip_addr_filter(tulip_softc_t * const sc)
*sp++ = TULIP_SP_MAC(eaddr[2]);
}
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
}
static void
diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c
index 43990b6..14d82f0 100644
--- a/sys/dev/e1000/if_em.c
+++ b/sys/dev/e1000/if_em.c
@@ -2538,7 +2538,7 @@ em_set_multi(struct adapter *adapter)
if (mta == NULL)
panic("em_set_multi memory failure\n");
- 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;
@@ -2550,7 +2550,7 @@ em_set_multi(struct adapter *adapter)
&mta[mcnt * ETH_ADDR_LEN], ETH_ADDR_LEN);
mcnt++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (mcnt >= MAX_NUM_MULTICAST_ADDRESSES) {
reg_rctl = E1000_READ_REG(&adapter->hw, E1000_RCTL);
diff --git a/sys/dev/e1000/if_igb.c b/sys/dev/e1000/if_igb.c
index e5297da..0924eda 100644
--- a/sys/dev/e1000/if_igb.c
+++ b/sys/dev/e1000/if_igb.c
@@ -1886,7 +1886,7 @@ igb_set_multi(struct adapter *adapter)
IOCTL_DEBUGOUT("igb_set_multi: begin");
- 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;
@@ -1898,7 +1898,7 @@ igb_set_multi(struct adapter *adapter)
&mta[mcnt * ETH_ADDR_LEN], ETH_ADDR_LEN);
mcnt++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (mcnt >= MAX_NUM_MULTICAST_ADDRESSES) {
reg_rctl = E1000_READ_REG(&adapter->hw, E1000_RCTL);
diff --git a/sys/dev/ed/if_ed.c b/sys/dev/ed/if_ed.c
index f94ec8b..12483a8 100644
--- a/sys/dev/ed/if_ed.c
+++ b/sys/dev/ed/if_ed.c
@@ -1614,7 +1614,7 @@ ed_ds_getmcaf(struct ed_softc *sc, uint32_t *mcaf)
mcaf[0] = 0;
mcaf[1] = 0;
- IF_ADDR_LOCK(sc->ifp);
+ if_maddr_rlock(sc->ifp);
TAILQ_FOREACH(ifma, &sc->ifp->if_multiaddrs, ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK)
continue;
@@ -1622,7 +1622,7 @@ ed_ds_getmcaf(struct ed_softc *sc, uint32_t *mcaf)
ifma->ifma_addr), ETHER_ADDR_LEN) >> 26;
af[index >> 3] |= 1 << (index & 7);
}
- IF_ADDR_UNLOCK(sc->ifp);
+ if_maddr_runlock(sc->ifp);
}
int
diff --git a/sys/dev/et/if_et.c b/sys/dev/et/if_et.c
index b59cf78..1e28f0b 100644
--- a/sys/dev/et/if_et.c
+++ b/sys/dev/et/if_et.c
@@ -1361,7 +1361,7 @@ et_setmulti(struct et_softc *sc)
}
count = 0;
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
uint32_t *hp, h;
@@ -1387,7 +1387,7 @@ et_setmulti(struct et_softc *sc)
++count;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
for (i = 0; i < 4; ++i)
CSR_WRITE_4(sc, ET_MULTI_HASH + (i * 4), hash[i]);
diff --git a/sys/dev/ex/if_ex.c b/sys/dev/ex/if_ex.c
index 3e6c90c..7a3d74f 100644
--- a/sys/dev/ex/if_ex.c
+++ b/sys/dev/ex/if_ex.c
@@ -870,13 +870,13 @@ ex_setmulti(struct ex_softc *sc)
ifp = sc->ifp;
count = 0;
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(maddr, &ifp->if_multiaddrs, ifma_link) {
if (maddr->ifma_addr->sa_family != AF_LINK)
continue;
count++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if ((ifp->if_flags & IFF_PROMISC) || (ifp->if_flags & IFF_ALLMULTI)
|| count > 63) {
@@ -904,7 +904,7 @@ ex_setmulti(struct ex_softc *sc)
CSR_WRITE_2(sc, IO_PORT_REG, 0);
CSR_WRITE_2(sc, IO_PORT_REG, (count + 1) * 6);
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(maddr, &ifp->if_multiaddrs, ifma_link) {
if (maddr->ifma_addr->sa_family != AF_LINK)
continue;
@@ -915,7 +915,7 @@ ex_setmulti(struct ex_softc *sc)
CSR_WRITE_2(sc, IO_PORT_REG, *addr++);
CSR_WRITE_2(sc, IO_PORT_REG, *addr++);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
/* Program our MAC address as well */
/* XXX: Is this necessary? The Linux driver does this
diff --git a/sys/dev/fe/if_fe.c b/sys/dev/fe/if_fe.c
index ed50841..eff92b7 100644
--- a/sys/dev/fe/if_fe.c
+++ b/sys/dev/fe/if_fe.c
@@ -2080,7 +2080,7 @@ fe_mcaf ( struct fe_softc *sc )
struct ifmultiaddr *ifma;
filter = fe_filter_nothing;
- IF_ADDR_LOCK(sc->ifp);
+ if_maddr_rlock(sc->ifp);
TAILQ_FOREACH(ifma, &sc->ifp->if_multiaddrs, ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK)
continue;
@@ -2093,7 +2093,7 @@ fe_mcaf ( struct fe_softc *sc )
filter.data[index >> 3] |= 1 << (index & 7);
}
- IF_ADDR_UNLOCK(sc->ifp);
+ if_maddr_runlock(sc->ifp);
return ( filter );
}
diff --git a/sys/dev/fxp/if_fxp.c b/sys/dev/fxp/if_fxp.c
index 4d93c00..4fb890f 100644
--- a/sys/dev/fxp/if_fxp.c
+++ b/sys/dev/fxp/if_fxp.c
@@ -2851,7 +2851,7 @@ fxp_mc_addrs(struct fxp_softc *sc)
nmcasts = 0;
if ((ifp->if_flags & IFF_ALLMULTI) == 0) {
- 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;
@@ -2864,7 +2864,7 @@ fxp_mc_addrs(struct fxp_softc *sc)
&sc->mcsp->mc_addr[nmcasts][0], ETHER_ADDR_LEN);
nmcasts++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
}
mcsp->mc_cnt = htole16(nmcasts * ETHER_ADDR_LEN);
return (nmcasts);
diff --git a/sys/dev/gem/if_gem.c b/sys/dev/gem/if_gem.c
index 86c9334..9456383 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;
diff --git a/sys/dev/hme/if_hme.c b/sys/dev/hme/if_hme.c
index 393bf2f..d78e8f1 100644
--- a/sys/dev/hme/if_hme.c
+++ b/sys/dev/hme/if_hme.c
@@ -1710,7 +1710,7 @@ hme_setladrf(struct hme_softc *sc, int reenable)
* the word.
*/
- 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;
@@ -1723,7 +1723,7 @@ hme_setladrf(struct hme_softc *sc, int reenable)
/* Set the corresponding bit in the filter. */
hash[crc >> 4] |= 1 << (crc & 0xf);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
chipit:
/* Now load the hash table into the chip */
diff --git a/sys/dev/ie/if_ie.c b/sys/dev/ie/if_ie.c
index e3ba1d2..34c658e 100644
--- a/sys/dev/ie/if_ie.c
+++ b/sys/dev/ie/if_ie.c
@@ -1675,7 +1675,7 @@ ie_mc_reset(struct ie_softc *sc)
* Step through the list of addresses.
*/
sc->mcast_count = 0;
- IF_ADDR_LOCK(sc->ifp);
+ if_maddr_rlock(sc->ifp);
TAILQ_FOREACH(ifma, &sc->ifp->if_multiaddrs, ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK)
continue;
@@ -1691,7 +1691,7 @@ ie_mc_reset(struct ie_softc *sc)
&(sc->mcast_addrs[sc->mcast_count]), 6);
sc->mcast_count++;
}
- IF_ADDR_UNLOCK(sc->ifp);
+ if_maddr_runlock(sc->ifp);
setflag:
sc->want_mcsetup = 1;
diff --git a/sys/dev/if_ndis/if_ndis.c b/sys/dev/if_ndis/if_ndis.c
index f9a2186..426418b 100644
--- a/sys/dev/if_ndis/if_ndis.c
+++ b/sys/dev/if_ndis/if_ndis.c
@@ -320,7 +320,7 @@ ndis_setmulti(sc)
sc->ndis_filter |= NDIS_PACKET_TYPE_MULTICAST;
len = 0;
- 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;
@@ -328,13 +328,13 @@ ndis_setmulti(sc)
mclist + (ETHER_ADDR_LEN * len), ETHER_ADDR_LEN);
len++;
if (len > mclistsz) {
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
sc->ndis_filter |= NDIS_PACKET_TYPE_ALL_MULTICAST;
sc->ndis_filter &= ~NDIS_PACKET_TYPE_MULTICAST;
goto out;
}
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
len = len * ETHER_ADDR_LEN;
error = ndis_set_info(sc, OID_802_3_MULTICAST_LIST, mclist, &len);
diff --git a/sys/dev/ixgb/if_ixgb.c b/sys/dev/ixgb/if_ixgb.c
index f555e79..90b3c91 100644
--- a/sys/dev/ixgb/if_ixgb.c
+++ b/sys/dev/ixgb/if_ixgb.c
@@ -1090,7 +1090,7 @@ ixgb_set_multi(struct adapter * adapter)
IOCTL_DEBUGOUT("ixgb_set_multi: begin");
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
#if __FreeBSD_version < 500000
LIST_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
#else
@@ -1103,7 +1103,7 @@ ixgb_set_multi(struct adapter * adapter)
&mta[mcnt * IXGB_ETH_LENGTH_OF_ADDRESS], IXGB_ETH_LENGTH_OF_ADDRESS);
mcnt++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (mcnt > MAX_NUM_MULTICAST_ADDRESSES) {
reg_rctl = IXGB_READ_REG(&adapter->hw, RCTL);
diff --git a/sys/dev/ixgbe/ixgbe.c b/sys/dev/ixgbe/ixgbe.c
index 040863c..2d2e859 100644
--- a/sys/dev/ixgbe/ixgbe.c
+++ b/sys/dev/ixgbe/ixgbe.c
@@ -1883,7 +1883,7 @@ ixgbe_set_multi(struct adapter *adapter)
IXGBE_WRITE_REG(&adapter->hw, IXGBE_FCTRL, fctrl);
- 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;
@@ -1892,7 +1892,7 @@ ixgbe_set_multi(struct adapter *adapter)
IXGBE_ETH_LENGTH_OF_ADDRESS);
mcnt++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
update_ptr = mta;
ixgbe_update_mc_addr_list(&adapter->hw,
diff --git a/sys/dev/jme/if_jme.c b/sys/dev/jme/if_jme.c
index 8353b04..86d9c57 100644
--- a/sys/dev/jme/if_jme.c
+++ b/sys/dev/jme/if_jme.c
@@ -3122,7 +3122,7 @@ jme_set_filter(struct jme_softc *sc)
rxcfg |= RXMAC_MULTICAST;
bzero(mchash, sizeof(mchash));
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(ifma, &sc->jme_ifp->if_multiaddrs, ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK)
continue;
@@ -3135,7 +3135,7 @@ jme_set_filter(struct jme_softc *sc)
/* Set the corresponding bit in the hash table. */
mchash[crc >> 5] |= 1 << (crc & 0x1f);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
CSR_WRITE_4(sc, JME_MAR0, mchash[0]);
CSR_WRITE_4(sc, JME_MAR1, mchash[1]);
diff --git a/sys/dev/le/lance.c b/sys/dev/le/lance.c
index 68673a9..db20099 100644
--- a/sys/dev/le/lance.c
+++ b/sys/dev/le/lance.c
@@ -605,7 +605,7 @@ lance_setladrf(struct lance_softc *sc, uint16_t *af)
}
af[0] = af[1] = af[2] = af[3] = 0x0000;
- 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;
@@ -619,7 +619,7 @@ lance_setladrf(struct lance_softc *sc, uint16_t *af)
/* Set the corresponding bit in the filter. */
af[crc >> 4] |= LE_HTOLE16(1 << (crc & 0xf));
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
}
/*
diff --git a/sys/dev/lge/if_lge.c b/sys/dev/lge/if_lge.c
index ecae572..79a9156 100644
--- a/sys/dev/lge/if_lge.c
+++ b/sys/dev/lge/if_lge.c
@@ -393,7 +393,7 @@ lge_setmulti(sc)
CSR_WRITE_4(sc, LGE_MAR1, 0);
/* now program new ones */
- 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;
@@ -404,7 +404,7 @@ lge_setmulti(sc)
else
hashes[1] |= (1 << (h - 32));
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
CSR_WRITE_4(sc, LGE_MAR0, hashes[0]);
CSR_WRITE_4(sc, LGE_MAR1, hashes[1]);
diff --git a/sys/dev/malo/if_malo.c b/sys/dev/malo/if_malo.c
index e9c6716..d77718b 100644
--- a/sys/dev/malo/if_malo.c
+++ b/sys/dev/malo/if_malo.c
@@ -1577,14 +1577,14 @@ malo_setmcastfilter(struct malo_softc *sc)
(ifp->if_flags & (IFF_ALLMULTI | IFF_PROMISC)))
goto all;
- 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;
if (nmc == MALO_HAL_MCAST_MAX) {
ifp->if_flags |= IFF_ALLMULTI;
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
goto all;
}
IEEE80211_ADDR_COPY(mp,
@@ -1592,7 +1592,7 @@ malo_setmcastfilter(struct malo_softc *sc)
mp += IEEE80211_ADDR_LEN, nmc++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
malo_hal_setmcast(sc->malo_mh, nmc, macs);
diff --git a/sys/dev/mge/if_mge.c b/sys/dev/mge/if_mge.c
index 66d670f..ff505e9 100644
--- a/sys/dev/mge/if_mge.c
+++ b/sys/dev/mge/if_mge.c
@@ -1731,7 +1731,7 @@ mge_setup_multicast(struct mge_softc *sc)
memset(smt, 0, sizeof(smt));
memset(omt, 0, sizeof(omt));
- 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;
@@ -1745,7 +1745,7 @@ mge_setup_multicast(struct mge_softc *sc)
omt[i >> 2] |= v << ((i & 0x03) << 3);
}
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
}
for (i = 0; i < MGE_MCAST_REG_NUMBER; i++) {
diff --git a/sys/dev/msk/if_msk.c b/sys/dev/msk/if_msk.c
index 73d5232..f5f94ba 100644
--- a/sys/dev/msk/if_msk.c
+++ b/sys/dev/msk/if_msk.c
@@ -601,7 +601,7 @@ msk_rxfilter(struct msk_if_softc *sc_if)
mchash[1] = 0xffff;
} else {
mode |= GM_RXCR_UCF_ENA;
- 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;
@@ -612,7 +612,7 @@ msk_rxfilter(struct msk_if_softc *sc_if)
/* Set the corresponding bit in the hash table. */
mchash[crc >> 5] |= 1 << (crc & 0x1f);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (mchash[0] != 0 || mchash[1] != 0)
mode |= GM_RXCR_MCF_ENA;
}
diff --git a/sys/dev/mxge/if_mxge.c b/sys/dev/mxge/if_mxge.c
index 16453e9..367cec0 100644
--- a/sys/dev/mxge/if_mxge.c
+++ b/sys/dev/mxge/if_mxge.c
@@ -1130,7 +1130,7 @@ mxge_set_multicast_list(mxge_softc_t *sc)
/* Walk the multicast list, and add each address */
- 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;
@@ -1146,11 +1146,11 @@ mxge_set_multicast_list(mxge_softc_t *sc)
"MXGEFW_JOIN_MULTICAST_GROUP, error status:"
"%d\t", err);
/* abort, leaving multicast filtering off */
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
return;
}
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
/* Enable multicast filtering */
err = mxge_send_cmd(sc, MXGEFW_DISABLE_ALLMULTI, &cmd);
if (err != 0) {
diff --git a/sys/dev/my/if_my.c b/sys/dev/my/if_my.c
index b25ae22..8bfeb34 100644
--- a/sys/dev/my/if_my.c
+++ b/sys/dev/my/if_my.c
@@ -337,7 +337,7 @@ my_setmulti(struct my_softc * sc)
CSR_WRITE_4(sc, MY_MAR1, 0);
/* now program new ones */
- 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;
@@ -349,7 +349,7 @@ my_setmulti(struct my_softc * sc)
hashes[1] |= (1 << (h - 32));
mcnt++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (mcnt)
rxfilt |= MY_AM;
diff --git a/sys/dev/nfe/if_nfe.c b/sys/dev/nfe/if_nfe.c
index 99f75aa..67d4871 100644
--- a/sys/dev/nfe/if_nfe.c
+++ b/sys/dev/nfe/if_nfe.c
@@ -2491,7 +2491,7 @@ nfe_setmulti(struct nfe_softc *sc)
bcopy(etherbroadcastaddr, addr, ETHER_ADDR_LEN);
bcopy(etherbroadcastaddr, mask, ETHER_ADDR_LEN);
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
u_char *addrp;
@@ -2505,7 +2505,7 @@ nfe_setmulti(struct nfe_softc *sc)
mask[i] &= ~mcaddr;
}
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
for (i = 0; i < ETHER_ADDR_LEN; i++) {
mask[i] |= addr[i];
diff --git a/sys/dev/nge/if_nge.c b/sys/dev/nge/if_nge.c
index 7917331..1b346dd 100644
--- a/sys/dev/nge/if_nge.c
+++ b/sys/dev/nge/if_nge.c
@@ -863,7 +863,7 @@ nge_rxfilter(struct nge_softc *sc)
* that needs to be updated, and the lower 4 bits represent
* which bit within that byte needs to be set.
*/
- 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;
@@ -875,7 +875,7 @@ nge_rxfilter(struct nge_softc *sc)
NGE_FILTADDR_MCAST_LO + (index * 2));
NGE_SETBIT(sc, NGE_RXFILT_DATA, (1 << bit));
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
done:
CSR_WRITE_4(sc, NGE_RXFILT_CTL, rxfilt);
diff --git a/sys/dev/nve/if_nve.c b/sys/dev/nve/if_nve.c
index c4f8710..a987c6c 100644
--- a/sys/dev/nve/if_nve.c
+++ b/sys/dev/nve/if_nve.c
@@ -1133,7 +1133,7 @@ nve_setmulti(struct nve_softc *sc)
return;
}
/* Setup multicast filter */
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
u_char *addrp;
@@ -1147,7 +1147,7 @@ nve_setmulti(struct nve_softc *sc)
oraddr[i] |= mcaddr;
}
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
for (i = 0; i < 6; i++) {
hwfilter.acMulticastAddress[i] = andaddr[i] & oraddr[i];
hwfilter.acMulticastMask[i] = andaddr[i] | (~oraddr[i]);
diff --git a/sys/dev/nxge/if_nxge.c b/sys/dev/nxge/if_nxge.c
index 95f97a8..129ccb5 100644
--- a/sys/dev/nxge/if_nxge.c
+++ b/sys/dev/nxge/if_nxge.c
@@ -2238,7 +2238,7 @@ xge_setmulti(xge_lldev_t *lldev)
}
/* Updating address list */
- IF_ADDR_LOCK(ifnetp);
+ if_maddr_rlock(ifnetp);
index = 0;
TAILQ_FOREACH(ifma, &ifnetp->if_multiaddrs, ifma_link) {
if(ifma->ifma_addr->sa_family != AF_LINK) {
@@ -2247,7 +2247,7 @@ xge_setmulti(xge_lldev_t *lldev)
lladdr = LLADDR((struct sockaddr_dl *)ifma->ifma_addr);
index += 1;
}
- IF_ADDR_UNLOCK(ifnetp);
+ if_maddr_runlock(ifnetp);
if((!lldev->all_multicast) && (index)) {
lldev->macaddr_count = (index + 1);
@@ -2263,7 +2263,7 @@ xge_setmulti(xge_lldev_t *lldev)
}
/* Add new addresses */
- IF_ADDR_LOCK(ifnetp);
+ if_maddr_rlock(ifnetp);
index = 0;
TAILQ_FOREACH(ifma, &ifnetp->if_multiaddrs, ifma_link) {
if(ifma->ifma_addr->sa_family != AF_LINK) {
@@ -2273,7 +2273,7 @@ xge_setmulti(xge_lldev_t *lldev)
xge_hal_device_macaddr_set(hldev, (offset + index), lladdr);
index += 1;
}
- IF_ADDR_UNLOCK(ifnetp);
+ if_maddr_runlock(ifnetp);
_exit:
return;
diff --git a/sys/dev/pcn/if_pcn.c b/sys/dev/pcn/if_pcn.c
index f863cfc..c52c22b 100644
--- a/sys/dev/pcn/if_pcn.c
+++ b/sys/dev/pcn/if_pcn.c
@@ -371,7 +371,7 @@ pcn_setmulti(sc)
pcn_csr_write(sc, PCN_CSR_MAR0 + i, 0);
/* now program new ones */
- 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;
@@ -379,7 +379,7 @@ pcn_setmulti(sc)
ifma->ifma_addr), ETHER_ADDR_LEN) >> 26;
hashes[h >> 4] |= 1 << (h & 0xF);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
for (i = 0; i < 4; i++)
pcn_csr_write(sc, PCN_CSR_MAR0 + i, hashes[i]);
diff --git a/sys/dev/pdq/pdq_ifsubr.c b/sys/dev/pdq/pdq_ifsubr.c
index ce1a208..ce67b0e 100644
--- a/sys/dev/pdq/pdq_ifsubr.c
+++ b/sys/dev/pdq/pdq_ifsubr.c
@@ -273,7 +273,7 @@ pdq_os_addr_fill(
PDQ_IFNET(sc)->if_flags &= ~IFF_ALLMULTI;
#endif
- IF_ADDR_LOCK(PDQ_IFNET(sc));
+ if_maddr_rlock(PDQ_IFNET(sc));
for (ifma = TAILQ_FIRST(&PDQ_IFNET(sc)->if_multiaddrs); ifma && num_addrs > 0;
ifma = TAILQ_NEXT(ifma, ifma_link)) {
char *mcaddr;
@@ -286,7 +286,7 @@ pdq_os_addr_fill(
addr++;
num_addrs--;
}
- IF_ADDR_UNLOCK(PDQ_IFNET(sc));
+ if_maddr_runlock(PDQ_IFNET(sc));
/*
* If not all the address fit into the CAM, turn on all-multicast mode.
*/
diff --git a/sys/dev/re/if_re.c b/sys/dev/re/if_re.c
index 10725f1..c2ac478 100644
--- a/sys/dev/re/if_re.c
+++ b/sys/dev/re/if_re.c
@@ -640,7 +640,7 @@ re_set_rxmode(struct rl_softc *sc)
goto done;
}
- 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;
@@ -651,7 +651,7 @@ re_set_rxmode(struct rl_softc *sc)
else
hashes[1] |= (1 << (h - 32));
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (hashes[0] != 0 || hashes[1] != 0) {
/*
diff --git a/sys/dev/sf/if_sf.c b/sys/dev/sf/if_sf.c
index 5105c70..5238a27 100644
--- a/sys/dev/sf/if_sf.c
+++ b/sys/dev/sf/if_sf.c
@@ -494,7 +494,7 @@ sf_rxfilter(struct sf_softc *sc)
/* Now program new ones. */
i = 1;
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH_REVERSE(ifma, &ifp->if_multiaddrs, ifmultihead,
ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK)
@@ -514,7 +514,7 @@ sf_rxfilter(struct sf_softc *sc)
sf_sethash(sc,
LLADDR((struct sockaddr_dl *)ifma->ifma_addr), 0);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
done:
csr_write_4(sc, SF_RXFILT, rxfilt);
diff --git a/sys/dev/sis/if_sis.c b/sys/dev/sis/if_sis.c
index 38a3e73..aac46f7 100644
--- a/sys/dev/sis/if_sis.c
+++ b/sys/dev/sis/if_sis.c
@@ -773,7 +773,7 @@ sis_setmulti_ns(struct sis_softc *sc)
CSR_WRITE_4(sc, SIS_RXFILT_DATA, 0);
}
- 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;
@@ -786,7 +786,7 @@ sis_setmulti_ns(struct sis_softc *sc)
bit -= 0x10;
SIS_SETBIT(sc, SIS_RXFILT_DATA, (1 << bit));
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
CSR_WRITE_4(sc, SIS_RXFILT_CTL, filtsave);
@@ -825,7 +825,7 @@ sis_setmulti_sis(struct sis_softc *sc)
for (i = 0; i < n; i++)
hashes[i] = 0;
i = 0;
- 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;
@@ -834,7 +834,7 @@ sis_setmulti_sis(struct sis_softc *sc)
hashes[h >> 4] |= 1 << (h & 0xf);
i++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (i > n) {
ctl |= SIS_RXFILTCTL_ALLMULTI;
for (i = 0; i < n; i++)
diff --git a/sys/dev/sk/if_sk.c b/sys/dev/sk/if_sk.c
index 7e2e563..b9ca1cf 100644
--- a/sys/dev/sk/if_sk.c
+++ b/sys/dev/sk/if_sk.c
@@ -759,7 +759,7 @@ sk_rxfilter_genesis(sc_if)
hashes[1] = 0xFFFFFFFF;
} else {
i = 1;
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH_REVERSE(ifma, &ifp->if_multiaddrs, ifmultihead,
ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK)
@@ -783,7 +783,7 @@ sk_rxfilter_genesis(sc_if)
hashes[1] |= (1 << (h - 32));
mode |= XM_MODE_RX_USE_HASH;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
}
SK_XM_WRITE_4(sc_if, XM_MODE, mode);
@@ -811,7 +811,7 @@ sk_rxfilter_yukon(sc_if)
hashes[1] = 0xFFFFFFFF;
} else {
mode |= YU_RCR_UFLEN;
- 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;
@@ -822,7 +822,7 @@ sk_rxfilter_yukon(sc_if)
/* Set the corresponding bit in the hash table. */
hashes[crc >> 5] |= 1 << (crc & 0x1f);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (hashes[0] != 0 || hashes[1] != 0)
mode |= YU_RCR_MUFLEN;
}
diff --git a/sys/dev/sn/if_sn.c b/sys/dev/sn/if_sn.c
index 42da0dd..923c028 100644
--- a/sys/dev/sn/if_sn.c
+++ b/sys/dev/sn/if_sn.c
@@ -1404,10 +1404,10 @@ sn_getmcf(struct ifnet *ifp, uint8_t *mcf)
bzero(mcf, MCFSZ);
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK) {
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
return 0;
}
index = ether_crc32_le(LLADDR((struct sockaddr_dl *)
@@ -1420,6 +1420,6 @@ sn_getmcf(struct ifnet *ifp, uint8_t *mcf)
}
af[index2 >> 3] |= 1 << (index2 & 7);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
return 1; /* use multicast filter */
}
diff --git a/sys/dev/snc/dp83932.c b/sys/dev/snc/dp83932.c
index 8108a33..c659c82 100644
--- a/sys/dev/snc/dp83932.c
+++ b/sys/dev/snc/dp83932.c
@@ -691,7 +691,7 @@ camprogram(sc)
ifp->if_flags &= ~IFF_ALLMULTI;
/* Loop through multicast addresses */
- 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;
@@ -705,7 +705,7 @@ camprogram(sc)
LLADDR((struct sockaddr_dl *)ifma->ifma_addr));
mcount++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
NIC_PUT(sc, SNCR_CDP, LOWER(sc->v_cda));
NIC_PUT(sc, SNCR_CDC, MAXCAM);
diff --git a/sys/dev/ste/if_ste.c b/sys/dev/ste/if_ste.c
index 5411d08..f68a97d 100644
--- a/sys/dev/ste/if_ste.c
+++ b/sys/dev/ste/if_ste.c
@@ -594,7 +594,7 @@ ste_setmulti(sc)
CSR_WRITE_2(sc, STE_MAR3, 0);
/* now program new ones */
- 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;
@@ -605,7 +605,7 @@ ste_setmulti(sc)
else
hashes[1] |= (1 << (h - 32));
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
CSR_WRITE_2(sc, STE_MAR0, hashes[0] & 0xFFFF);
CSR_WRITE_2(sc, STE_MAR1, (hashes[0] >> 16) & 0xFFFF);
diff --git a/sys/dev/stge/if_stge.c b/sys/dev/stge/if_stge.c
index 0e12728..dac4da6 100644
--- a/sys/dev/stge/if_stge.c
+++ b/sys/dev/stge/if_stge.c
@@ -2683,7 +2683,7 @@ stge_set_multi(struct stge_softc *sc)
bzero(mchash, sizeof(mchash));
count = 0;
- IF_ADDR_LOCK(sc->sc_ifp);
+ if_maddr_rlock(sc->sc_ifp);
TAILQ_FOREACH(ifma, &sc->sc_ifp->if_multiaddrs, ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK)
continue;
@@ -2697,7 +2697,7 @@ stge_set_multi(struct stge_softc *sc)
mchash[crc >> 5] |= 1 << (crc & 0x1f);
count++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
mode &= ~(RM_ReceiveMulticast | RM_ReceiveAllFrames);
if (count > 0)
diff --git a/sys/dev/ti/if_ti.c b/sys/dev/ti/if_ti.c
index a1b9c9d..488d038 100644
--- a/sys/dev/ti/if_ti.c
+++ b/sys/dev/ti/if_ti.c
@@ -1851,7 +1851,7 @@ ti_setmulti(sc)
}
/* Now program new ones. */
- 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;
@@ -1866,7 +1866,7 @@ ti_setmulti(sc)
SLIST_INSERT_HEAD(&sc->ti_mc_listhead, mc, mc_entries);
ti_add_mcast(sc, &mc->mc_addr);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
/* Re-enable interrupts. */
CSR_WRITE_4(sc, TI_MB_HOSTINTR, intrs);
diff --git a/sys/dev/tl/if_tl.c b/sys/dev/tl/if_tl.c
index 28fea78..f1a3db8 100644
--- a/sys/dev/tl/if_tl.c
+++ b/sys/dev/tl/if_tl.c
@@ -952,7 +952,7 @@ tl_setmulti(sc)
hashes[1] = 0xFFFFFFFF;
} else {
i = 1;
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH_REVERSE(ifma, &ifp->if_multiaddrs, ifmultihead, ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK)
continue;
@@ -975,7 +975,7 @@ tl_setmulti(sc)
else
hashes[1] |= (1 << (h - 32));
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
}
tl_dio_write32(sc, TL_HASH1, hashes[0]);
diff --git a/sys/dev/tsec/if_tsec.c b/sys/dev/tsec/if_tsec.c
index 23ed34e..2fb2710 100644
--- a/sys/dev/tsec/if_tsec.c
+++ b/sys/dev/tsec/if_tsec.c
@@ -1899,7 +1899,7 @@ tsec_setup_multicast(struct tsec_softc *sc)
return;
}
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK)
@@ -1910,7 +1910,7 @@ tsec_setup_multicast(struct tsec_softc *sc)
hashtable[(h >> 5)] |= 1 << (0x1F - (h & 0x1F));
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
for (i = 0; i < 8; i++)
TSEC_WRITE(sc, TSEC_REG_GADDR(i), hashtable[i]);
diff --git a/sys/dev/tx/if_tx.c b/sys/dev/tx/if_tx.c
index 2e38dd2..3750e7b 100644
--- a/sys/dev/tx/if_tx.c
+++ b/sys/dev/tx/if_tx.c
@@ -1400,7 +1400,7 @@ epic_set_mc_table(epic_softc_t *sc)
filter[2] = 0;
filter[3] = 0;
- 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;
@@ -1408,7 +1408,7 @@ epic_set_mc_table(epic_softc_t *sc)
ifma->ifma_addr), ETHER_ADDR_LEN) >> 26;
filter[h >> 4] |= 1 << (h & 0xF);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
CSR_WRITE_4(sc, MC0, filter[0]);
CSR_WRITE_4(sc, MC1, filter[1]);
diff --git a/sys/dev/txp/if_txp.c b/sys/dev/txp/if_txp.c
index b0e989d..619b3f7 100644
--- a/sys/dev/txp/if_txp.c
+++ b/sys/dev/txp/if_txp.c
@@ -2725,7 +2725,7 @@ txp_set_filter(struct txp_softc *sc)
mchash[0] = mchash[1] = 0;
mcnt = 0;
- 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;
@@ -2735,7 +2735,7 @@ txp_set_filter(struct txp_softc *sc)
mchash[crc >> 5] |= 1 << (crc & 0x1f);
mcnt++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (mcnt > 0) {
filter |= TXP_RXFILT_HASHMULTI;
diff --git a/sys/dev/usb/net/if_aue.c b/sys/dev/usb/net/if_aue.c
index 550186d..142780f 100644
--- a/sys/dev/usb/net/if_aue.c
+++ b/sys/dev/usb/net/if_aue.c
@@ -551,7 +551,7 @@ aue_setmulti(struct usb_ether *ue)
AUE_CLRBIT(sc, AUE_CTL0, AUE_CTL0_ALLMULTI);
/* now program new ones */
- 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;
@@ -559,7 +559,7 @@ aue_setmulti(struct usb_ether *ue)
ifma->ifma_addr), ETHER_ADDR_LEN) & ((1 << AUE_BITS) - 1);
hashtbl[(h >> 3)] |= 1 << (h & 0x7);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
/* write the hashtable */
for (i = 0; i != 8; i++)
diff --git a/sys/dev/usb/net/if_axe.c b/sys/dev/usb/net/if_axe.c
index 3c72b38..ae9d512 100644
--- a/sys/dev/usb/net/if_axe.c
+++ b/sys/dev/usb/net/if_axe.c
@@ -475,7 +475,7 @@ axe_setmulti(struct usb_ether *ue)
}
rxmode &= ~AXE_RXCMD_ALLMULTI;
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link)
{
if (ifma->ifma_addr->sa_family != AF_LINK)
@@ -484,7 +484,7 @@ axe_setmulti(struct usb_ether *ue)
ifma->ifma_addr), ETHER_ADDR_LEN) >> 26;
hashtbl[h / 8] |= 1 << (h % 8);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
axe_cmd(sc, AXE_CMD_WRITE_MCAST, 0, 0, (void *)&hashtbl);
axe_cmd(sc, AXE_CMD_RXCTL_WRITE, 0, rxmode, NULL);
diff --git a/sys/dev/usb/net/if_cue.c b/sys/dev/usb/net/if_cue.c
index 4bb0da2..dcbef61 100644
--- a/sys/dev/usb/net/if_cue.c
+++ b/sys/dev/usb/net/if_cue.c
@@ -318,7 +318,7 @@ cue_setmulti(struct usb_ether *ue)
}
/* now program new ones */
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link)
{
if (ifma->ifma_addr->sa_family != AF_LINK)
@@ -326,7 +326,7 @@ cue_setmulti(struct usb_ether *ue)
h = cue_mchash(LLADDR((struct sockaddr_dl *)ifma->ifma_addr));
hashtbl[h >> 3] |= 1 << (h & 0x7);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
/*
* Also include the broadcast address in the filter
diff --git a/sys/dev/usb/net/if_kue.c b/sys/dev/usb/net/if_kue.c
index 85a43a2..281d54f 100644
--- a/sys/dev/usb/net/if_kue.c
+++ b/sys/dev/usb/net/if_kue.c
@@ -368,7 +368,7 @@ kue_setmulti(struct usb_ether *ue)
sc->sc_rxfilt &= ~KUE_RXFILT_ALLMULTI;
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link)
{
if (ifma->ifma_addr->sa_family != AF_LINK)
@@ -383,7 +383,7 @@ kue_setmulti(struct usb_ether *ue)
KUE_MCFILT(sc, i), ETHER_ADDR_LEN);
i++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (i == KUE_MCFILTCNT(sc))
sc->sc_rxfilt |= KUE_RXFILT_ALLMULTI;
diff --git a/sys/dev/usb/net/if_rue.c b/sys/dev/usb/net/if_rue.c
index b942e50..7b92bc5 100644
--- a/sys/dev/usb/net/if_rue.c
+++ b/sys/dev/usb/net/if_rue.c
@@ -494,7 +494,7 @@ rue_setmulti(struct usb_ether *ue)
rue_csr_write_4(sc, RUE_MAR4, 0);
/* now program new ones */
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH (ifma, &ifp->if_multiaddrs, ifma_link)
{
if (ifma->ifma_addr->sa_family != AF_LINK)
@@ -507,7 +507,7 @@ rue_setmulti(struct usb_ether *ue)
hashes[1] |= (1 << (h - 32));
mcnt++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (mcnt)
rxcfg |= RUE_RCR_AM;
diff --git a/sys/dev/usb/net/if_udav.c b/sys/dev/usb/net/if_udav.c
index 926b0a3..20853e0 100644
--- a/sys/dev/usb/net/if_udav.c
+++ b/sys/dev/usb/net/if_udav.c
@@ -494,7 +494,7 @@ udav_setmulti(struct usb_ether *ue)
udav_csr_write(sc, UDAV_MAR, hashtbl, sizeof(hashtbl));
/* now program new ones */
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link)
{
if (ifma->ifma_addr->sa_family != AF_LINK)
@@ -503,7 +503,7 @@ udav_setmulti(struct usb_ether *ue)
ifma->ifma_addr), ETHER_ADDR_LEN) >> 26;
hashtbl[h / 8] |= 1 << (h % 8);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
/* disable all multicast */
UDAV_CLRBIT(sc, UDAV_RCR, UDAV_RCR_ALL);
diff --git a/sys/dev/usb/wlan/if_upgt.c b/sys/dev/usb/wlan/if_upgt.c
index 9ab02a7..ff3220b 100644
--- a/sys/dev/usb/wlan/if_upgt.c
+++ b/sys/dev/usb/wlan/if_upgt.c
@@ -809,9 +809,7 @@ upgt_set_multi(void *arg)
* XXX don't know how to set a device. Lack of docs. Just try to set
* IFF_ALLMULTI flag here.
*/
- IF_ADDR_LOCK(ifp);
ifp->if_flags |= IFF_ALLMULTI;
- IF_ADDR_UNLOCK(ifp);
}
static void
diff --git a/sys/dev/usb/wlan/if_urtw.c b/sys/dev/usb/wlan/if_urtw.c
index 0f8fe44..5c10a6f 100644
--- a/sys/dev/usb/wlan/if_urtw.c
+++ b/sys/dev/usb/wlan/if_urtw.c
@@ -1945,9 +1945,7 @@ urtw_set_multi(void *arg)
* XXX don't know how to set a device. Lack of docs. Just try to set
* IFF_ALLMULTI flag here.
*/
- IF_ADDR_LOCK(ifp);
ifp->if_flags |= IFF_ALLMULTI;
- IF_ADDR_UNLOCK(ifp);
}
static usb_error_t
diff --git a/sys/dev/usb/wlan/if_zyd.c b/sys/dev/usb/wlan/if_zyd.c
index 8216a75..9bdb6ea 100644
--- a/sys/dev/usb/wlan/if_zyd.c
+++ b/sys/dev/usb/wlan/if_zyd.c
@@ -2016,7 +2016,7 @@ zyd_set_multi(struct zyd_softc *sc)
low = 0xffffffff;
high = 0xffffffff;
} else {
- 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;
@@ -2027,7 +2027,7 @@ zyd_set_multi(struct zyd_softc *sc)
else
high |= 1 << (v - 32);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
}
/* reprogram multicast global hash table */
diff --git a/sys/dev/vge/if_vge.c b/sys/dev/vge/if_vge.c
index b9eaeaa..f08f8a2 100644
--- a/sys/dev/vge/if_vge.c
+++ b/sys/dev/vge/if_vge.c
@@ -569,7 +569,7 @@ vge_setmulti(sc)
}
/* Now program new ones */
- 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;
@@ -597,7 +597,7 @@ vge_setmulti(sc)
CSR_WRITE_4(sc, VGE_MAR0, hashes[0]);
CSR_WRITE_4(sc, VGE_MAR1, hashes[1]);
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
return;
}
diff --git a/sys/dev/vr/if_vr.c b/sys/dev/vr/if_vr.c
index 0ec70bc..954024d 100644
--- a/sys/dev/vr/if_vr.c
+++ b/sys/dev/vr/if_vr.c
@@ -482,7 +482,7 @@ vr_set_filter(struct vr_softc *sc)
/* Now program new ones. */
error = 0;
mcnt = 0;
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
if ((sc->vr_quirks & VR_Q_CAM) != 0) {
/*
* For hardwares that have CAM capability, use
@@ -523,7 +523,7 @@ vr_set_filter(struct vr_softc *sc)
mcnt++;
}
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (mcnt > 0)
rxfilt |= VR_RXCFG_RX_MULTI;
diff --git a/sys/dev/wb/if_wb.c b/sys/dev/wb/if_wb.c
index 1538114..d901595 100644
--- a/sys/dev/wb/if_wb.c
+++ b/sys/dev/wb/if_wb.c
@@ -605,7 +605,7 @@ wb_setmulti(sc)
CSR_WRITE_4(sc, WB_MAR1, 0);
/* now program new ones */
- 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;
@@ -617,7 +617,7 @@ wb_setmulti(sc)
hashes[1] |= (1 << (h - 32));
mcnt++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (mcnt)
rxfilt |= WB_NETCFG_RX_MULTI;
diff --git a/sys/dev/wi/if_wi.c b/sys/dev/wi/if_wi.c
index d9d1286a..616c5d7 100644
--- a/sys/dev/wi/if_wi.c
+++ b/sys/dev/wi/if_wi.c
@@ -1582,7 +1582,7 @@ allmulti:
}
n = 0;
- 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;
@@ -1592,7 +1592,7 @@ allmulti:
(LLADDR((struct sockaddr_dl *)ifma->ifma_addr)));
n++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
return wi_write_rid(sc, WI_RID_MCAST_LIST, &mlist,
IEEE80211_ADDR_LEN * n);
}
diff --git a/sys/dev/wl/if_wl.c b/sys/dev/wl/if_wl.c
index 17ad81a..e773fd3 100644
--- a/sys/dev/wl/if_wl.c
+++ b/sys/dev/wl/if_wl.c
@@ -2116,7 +2116,7 @@ wlconfig(struct wl_softc *sc)
outw(PIOP1(base), 0); /* ac_status */
outw(PIOP1(base), AC_MCSETUP|AC_CW_EL); /* ac_command */
outw(PIOR1(base), OFFSET_CU + 8);
- IF_ADDR_LOCK(sc->ifp);
+ if_maddr_rlock(sc->ifp);
TAILQ_FOREACH(ifma, &sc->ifp->if_multiaddrs, ifma_link) {
if (ifma->ifma_addr->sa_family != AF_LINK)
continue;
@@ -2127,7 +2127,7 @@ wlconfig(struct wl_softc *sc)
outw(PIOP1(base), addrp[4] + (addrp[5] << 8));
++cnt;
}
- IF_ADDR_UNLOCK(sc->ifp);
+ if_maddr_runlock(sc->ifp);
outw(PIOR1(base), OFFSET_CU + 6); /* mc-cnt */
outw(PIOP1(base), cnt * WAVELAN_ADDR_SIZE);
if (wlcmd(sc, "config()-mcaddress") == 0)
diff --git a/sys/dev/xe/if_xe.c b/sys/dev/xe/if_xe.c
index e73d56a..f18fd98 100644
--- a/sys/dev/xe/if_xe.c
+++ b/sys/dev/xe/if_xe.c
@@ -1390,7 +1390,7 @@ xe_set_multicast(struct xe_softc *scp)
/* Iterate over multicast address list */
count = 0;
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(maddr, &ifp->if_multiaddrs, ifma_link) {
if (maddr->ifma_addr->sa_family != AF_LINK)
continue;
@@ -1413,7 +1413,7 @@ xe_set_multicast(struct xe_softc *scp)
/* Nowhere else to put them on CE2 */
break;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
DEVPRINTF(2, (scp->dev, "set_multicast: count = %u\n", count));
diff --git a/sys/dev/xl/if_xl.c b/sys/dev/xl/if_xl.c
index a0f7042..81ed592 100644
--- a/sys/dev/xl/if_xl.c
+++ b/sys/dev/xl/if_xl.c
@@ -724,10 +724,10 @@ xl_setmulti(struct xl_softc *sc)
return;
}
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link)
mcnt++;
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (mcnt)
rxfilt |= XL_RXFILTER_ALLMULTI;
@@ -766,7 +766,7 @@ xl_setmulti_hash(struct xl_softc *sc)
CSR_WRITE_2(sc, XL_COMMAND, XL_CMD_RX_SET_HASH|i);
/* now program new ones */
- 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;
@@ -788,7 +788,7 @@ xl_setmulti_hash(struct xl_softc *sc)
h | XL_CMD_RX_SET_HASH | XL_HASH_SET);
mcnt++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (mcnt)
rxfilt |= XL_RXFILTER_MULTIHASH;
diff --git a/sys/mips/adm5120/if_admsw.c b/sys/mips/adm5120/if_admsw.c
index 71971cd..fff8930 100644
--- a/sys/mips/adm5120/if_admsw.c
+++ b/sys/mips/adm5120/if_admsw.c
@@ -1168,7 +1168,7 @@ admsw_set_filter(struct admsw_softc *sc)
ifp->if_flags &= ~IFF_ALLMULTI;
- IF_ADDR_LOCK(ifp);
+ if_maddr_rlock(ifp);
TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link)
{
if (ifma->ifma_addr->sa_family != AF_LINK)
@@ -1176,7 +1176,7 @@ admsw_set_filter(struct admsw_softc *sc)
anymc |= vlan_matrix[i];
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
}
conf = REG_READ(CPUP_CONF_REG);
diff --git a/sys/netgraph/ng_ether.c b/sys/netgraph/ng_ether.c
index 5f22f17..2be3b883 100644
--- a/sys/netgraph/ng_ether.c
+++ b/sys/netgraph/ng_ether.c
@@ -551,10 +551,10 @@ ng_ether_rcvmsg(node_p node, item_p item, hook_p lasthook)
* lose a race while we check if the membership
* already exists.
*/
- IF_ADDR_LOCK(priv->ifp);
+ if_maddr_rlock(priv->ifp);
ifma = if_findmulti(priv->ifp,
(struct sockaddr *)&sa_dl);
- IF_ADDR_UNLOCK(priv->ifp);
+ if_maddr_runlock(priv->ifp);
if (ifma != NULL) {
error = EADDRINUSE;
} else {
diff --git a/sys/pci/if_rl.c b/sys/pci/if_rl.c
index 16e3ccc..8b22516 100644
--- a/sys/pci/if_rl.c
+++ b/sys/pci/if_rl.c
@@ -697,7 +697,7 @@ rl_setmulti(struct rl_softc *sc)
CSR_WRITE_4(sc, RL_MAR4, 0);
/* now program new ones */
- 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;
@@ -709,7 +709,7 @@ rl_setmulti(struct rl_softc *sc)
hashes[1] |= (1 << (h - 32));
mcnt++;
}
- IF_ADDR_UNLOCK(ifp);
+ if_maddr_runlock(ifp);
if (mcnt)
rxfilt |= RL_RXCFG_RX_MULTI;
OpenPOWER on IntegriCloud