Module Name: src Committed By: msaitoh Date: Fri May 24 08:27:44 UTC 2019
Modified Files: src/sys/dev/qbus: if_il.c Log Message: Revert previous. To generate a diff of this commit: cvs rdiff -u -r1.32 -r1.33 src/sys/dev/qbus/if_il.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/qbus/if_il.c diff -u src/sys/dev/qbus/if_il.c:1.32 src/sys/dev/qbus/if_il.c:1.33 --- src/sys/dev/qbus/if_il.c:1.32 Fri May 24 08:22:05 2019 +++ src/sys/dev/qbus/if_il.c Fri May 24 08:27:44 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_il.c,v 1.32 2019/05/24 08:22:05 msaitoh Exp $ */ +/* $NetBSD: if_il.c,v 1.33 2019/05/24 08:27:44 msaitoh Exp $ */ /* * Copyright (c) 1982, 1986 Regents of the University of California. * All rights reserved. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_il.c,v 1.32 2019/05/24 08:22:05 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_il.c,v 1.33 2019/05/24 08:27:44 msaitoh Exp $"); #include "opt_inet.h" @@ -202,7 +202,7 @@ ilattach(device_t parent, device_t self, strlcpy(ifp->if_xname, device_xname(sc->sc_dev), IFNAMSIZ); ifp->if_softc = sc; - ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; + ifp->if_flags = IFF_BROADCAST; ifp->if_init = ilinit; ifp->if_stop = ilstop; ifp->if_ioctl = ether_ioctl; @@ -325,20 +325,19 @@ ilinit(struct ifnet *ifp) goto out; } } - - if (sc->sc_if.if_flags & IFF_PROMISC) { +#ifdef MULTICAST + if (is->is_if.if_flags & IFF_PROMISC) { addr->il_csr = ILC_PRMSC; if (ilwait(ui, "all multi")) goto out; - } else if (sc->sc_if.if_flags & IFF_ALLMULTI) { -too_many_multis: + } else if (is->is_if.if_flags & IFF_ALLMULTI) { + too_many_multis: addr->il_csr = ILC_ALLMC; if (ilwait(ui, "all multi")) goto out; } else { int i; - struct ethercom *ec = &sc->sc_ec; - register struct ether_addr *ep = sc->sc_maddrs; + register struct ether_addr *ep = is->is_maddrs; struct ether_multi *enm; struct ether_multistep step; /* @@ -348,8 +347,7 @@ too_many_multis: * multicasts. */ i = 0; - ETHER_LOCK(ec); - ETHER_FIRST_MULTI(step, ec, enm); + ETHER_FIRST_MULTI(step, &is->is_ac, enm); while (enm != NULL) { if (++i > 63 && k != 0) { break; @@ -357,22 +355,21 @@ too_many_multis: *ep++ = *(struct ether_addr *)enm->enm_addrlo; ETHER_NEXT_MULTI(step, enm); } - ETHER_UNLOCK(ec); if (i = 0) { /* no multicasts! */ } else if (i <= 63) { - addr->il_bar = sc->sc_ubaddr & 0xffff; + addr->il_bar = is->is_ubaddr & 0xffff; addr->il_bcr = i * sizeof (struct ether_addr); - addr->il_csr = ((sc->sc_ubaddr >> 2) & IL_EUA) | + addr->il_csr = ((is->is_ubaddr >> 2) & IL_EUA)| LC_LDGRPS; if (ilwait(ui, "load multi")) goto out; } else { - sc->sc_if.if_flags |= IFF_ALLMULTI; - goto too_many_multis; + is->is_if.if_flags |= IFF_ALLMULTI; + goto too_many_multis; } } - +#endif /* MULTICAST */ /* * Set board online. * Hang receive buffer and start any pending