summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorBrad Smith <brad@cvs.openbsd.org>2006-02-02 21:31:11 +0000
committerBrad Smith <brad@cvs.openbsd.org>2006-02-02 21:31:11 +0000
commit8d0ab014a08a4b1c15b11b991a2f648ad3ef133a (patch)
treefbbbc35e9827afd21f0059f2d1a1fb44296a2bbb /sys
parent41cebb73c0dcad2ece9ea31c32ad4a5dd7f5f31c (diff)
Call bge_setmulti() if IFF_ALLMULTI is set.
From ru FreeBSD
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/pci/if_bge.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/dev/pci/if_bge.c b/sys/dev/pci/if_bge.c
index 7bfa51aae85..6687efc08d1 100644
--- a/sys/dev/pci/if_bge.c
+++ b/sys/dev/pci/if_bge.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_bge.c,v 1.126 2006/02/02 20:35:55 brad Exp $ */
+/* $OpenBSD: if_bge.c,v 1.127 2006/02/02 21:31:10 brad Exp $ */
/*
* Copyright (c) 2001 Wind River Systems
@@ -3166,7 +3166,7 @@ bge_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
* instead of reinitializing the entire NIC. Doing
* a full re-init means reloading the firmware and
* waiting for it to start up, which may take a
- * second or two.
+ * second or two. Similarly for ALLMULTI.
*/
if (ifp->if_flags & IFF_RUNNING &&
ifp->if_flags & IFF_PROMISC &&
@@ -3178,6 +3178,9 @@ bge_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
sc->bge_if_flags & IFF_PROMISC) {
BGE_CLRBIT(sc, BGE_RX_MODE,
BGE_RXMODE_RX_PROMISC);
+ } else if (ifp->if_flags & IFF_RUNNING &&
+ (ifp->if_flags ^ sc->bge_if_flags) & IFF_ALLMULTI) {
+ bge_setmulti(sc);
} else {
ifp->if_flags &= ~IFF_RUNNING;
bge_init(sc);