diff options
-rw-r--r-- | sys/dev/pci/if_nxe.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/sys/dev/pci/if_nxe.c b/sys/dev/pci/if_nxe.c index ba30824f232..75c296dfab3 100644 --- a/sys/dev/pci/if_nxe.c +++ b/sys/dev/pci/if_nxe.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_nxe.c,v 1.62 2011/02/15 12:37:59 claudio Exp $ */ +/* $OpenBSD: if_nxe.c,v 1.63 2013/04/02 13:40:31 brad Exp $ */ /* * Copyright (c) 2007 David Gwynne <dlg@openbsd.org> @@ -1258,14 +1258,15 @@ nxe_iff(struct nxe_softc *sc) DASSERT(sc->sc_window == 0); CLR(ifp->if_flags, IFF_ALLMULTI); - if (sc->sc_ac.ac_multirangecnt > 0 || sc->sc_ac.ac_multicnt > 0) { - cfg1 |= NXE_0_XG_CFG1_MULTICAST; + + if (ISSET(ifp->if_flags, IFF_PROMISC) || sc->sc_ac.ac_multicnt > 0) { SET(ifp->if_flags, IFF_ALLMULTI); + if (ISSET(ifp->if_flags, IFF_PROMISC)) + cfg1 |= NXE_0_XG_CFG1_PROMISC; + else + cfg1 |= NXE_0_XG_CFG1_MULTICAST; } - if (ISSET(ifp->if_flags, IFF_PROMISC)) - cfg1 |= NXE_0_XG_CFG1_PROMISC; - nxe_crb_write(sc, NXE_0_XG_CFG0(sc->sc_port), NXE_0_XG_CFG0_TX_EN | NXE_0_XG_CFG0_RX_EN); nxe_crb_write(sc, NXE_0_XG_CFG1(sc->sc_port), cfg1); |