summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/dev/pci/if_nxe.c13
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);