diff options
author | Brad Smith <brad@cvs.openbsd.org> | 2006-02-02 21:31:11 +0000 |
---|---|---|
committer | Brad Smith <brad@cvs.openbsd.org> | 2006-02-02 21:31:11 +0000 |
commit | 8d0ab014a08a4b1c15b11b991a2f648ad3ef133a (patch) | |
tree | fbbbc35e9827afd21f0059f2d1a1fb44296a2bbb /sys | |
parent | 41cebb73c0dcad2ece9ea31c32ad4a5dd7f5f31c (diff) |
Call bge_setmulti() if IFF_ALLMULTI is set.
From ru FreeBSD
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/pci/if_bge.c | 7 |
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); |