diff options
Diffstat (limited to 'sys/dev/usb')
-rw-r--r-- | sys/dev/usb/if_aue.c | 2 | ||||
-rw-r--r-- | sys/dev/usb/if_axe.c | 2 | ||||
-rw-r--r-- | sys/dev/usb/if_cue.c | 2 | ||||
-rw-r--r-- | sys/dev/usb/if_kue.c | 2 | ||||
-rw-r--r-- | sys/dev/usb/if_rue.c | 2 | ||||
-rw-r--r-- | sys/dev/usb/if_udav.c | 2 |
6 files changed, 12 insertions, 0 deletions
diff --git a/sys/dev/usb/if_aue.c b/sys/dev/usb/if_aue.c index 3118baa..af5fe5f 100644 --- a/sys/dev/usb/if_aue.c +++ b/sys/dev/usb/if_aue.c @@ -539,6 +539,7 @@ aue_setmulti(struct aue_softc *sc) aue_csr_write_1(sc, AUE_MAR0 + i, 0); /* now program new ones */ + IF_ADDR_LOCK(ifp); #if __FreeBSD_version >= 500000 TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) #else @@ -551,6 +552,7 @@ aue_setmulti(struct aue_softc *sc) ifma->ifma_addr), ETHER_ADDR_LEN) & ((1 << AUE_BITS) - 1); AUE_SETBIT(sc, AUE_MAR + (h >> 3), 1 << (h & 0x7)); } + IF_ADDR_UNLOCK(ifp); return; } diff --git a/sys/dev/usb/if_axe.c b/sys/dev/usb/if_axe.c index 9551649..c549390 100644 --- a/sys/dev/usb/if_axe.c +++ b/sys/dev/usb/if_axe.c @@ -338,6 +338,7 @@ axe_setmulti(struct axe_softc *sc) } else rxmode &= ~AXE_RXCMD_ALLMULTI; + IF_ADDR_LOCK(ifp); #if __FreeBSD_version >= 500000 TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) #else @@ -350,6 +351,7 @@ axe_setmulti(struct axe_softc *sc) ifma->ifma_addr), ETHER_ADDR_LEN) >> 26; hashtbl[h / 8] |= 1 << (h % 8); } + IF_ADDR_UNLOCK(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/if_cue.c b/sys/dev/usb/if_cue.c index 604f9c5..ae21957 100644 --- a/sys/dev/usb/if_cue.c +++ b/sys/dev/usb/if_cue.c @@ -356,6 +356,7 @@ cue_setmulti(struct cue_softc *sc) sc->cue_mctab[i] = 0; /* now program new ones */ + IF_ADDR_LOCK(ifp); #if __FreeBSD_version >= 500000 TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) #else @@ -367,6 +368,7 @@ cue_setmulti(struct cue_softc *sc) h = cue_mchash(LLADDR((struct sockaddr_dl *)ifma->ifma_addr)); sc->cue_mctab[h >> 3] |= 1 << (h & 0x7); } + IF_ADDR_UNLOCK(ifp); /* * Also include the broadcast address in the filter diff --git a/sys/dev/usb/if_kue.c b/sys/dev/usb/if_kue.c index b4c65e4..fce9adf 100644 --- a/sys/dev/usb/if_kue.c +++ b/sys/dev/usb/if_kue.c @@ -327,6 +327,7 @@ kue_setmulti(struct kue_softc *sc) sc->kue_rxfilt &= ~KUE_RXFILT_ALLMULTI; + IF_ADDR_LOCK(ifp); #if __FreeBSD_version >= 500000 TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) #else @@ -345,6 +346,7 @@ kue_setmulti(struct kue_softc *sc) KUE_MCFILT(sc, i), ETHER_ADDR_LEN); i++; } + IF_ADDR_UNLOCK(ifp); if (i == KUE_MCFILTCNT(sc)) sc->kue_rxfilt |= KUE_RXFILT_ALLMULTI; diff --git a/sys/dev/usb/if_rue.c b/sys/dev/usb/if_rue.c index 9990da1..e544e11 100644 --- a/sys/dev/usb/if_rue.c +++ b/sys/dev/usb/if_rue.c @@ -500,6 +500,7 @@ rue_setmulti(struct rue_softc *sc) rue_csr_write_4(sc, RUE_MAR4, 0); /* now program new ones */ + IF_ADDR_LOCK(ifp); #if __FreeBSD_version >= 500000 TAILQ_FOREACH (ifma, &ifp->if_multiaddrs, ifma_link) #else @@ -516,6 +517,7 @@ rue_setmulti(struct rue_softc *sc) hashes[1] |= (1 << (h - 32)); mcnt++; } + IF_ADDR_UNLOCK(ifp); if (mcnt) rxcfg |= RUE_RCR_AM; diff --git a/sys/dev/usb/if_udav.c b/sys/dev/usb/if_udav.c index daa426d..19f64cb 100644 --- a/sys/dev/usb/if_udav.c +++ b/sys/dev/usb/if_udav.c @@ -1044,6 +1044,7 @@ udav_setmulti(struct udav_softc *sc) ETHER_NEXT_MULTI(step, enm); } #elif defined(__FreeBSD__) + IF_ADDR_LOCK(ifp); #if __FreeBSD_version >= 500000 TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) #else @@ -1056,6 +1057,7 @@ udav_setmulti(struct udav_softc *sc) ifma->ifma_addr)); hashes[h>>3] |= 1 << (h & 0x7); } + IF_ADDR_UNLOCK(ifp); #endif /* disable all multicast */ |