From 8d0ab014a08a4b1c15b11b991a2f648ad3ef133a Mon Sep 17 00:00:00 2001 From: Brad Smith Date: Thu, 2 Feb 2006 21:31:11 +0000 Subject: Call bge_setmulti() if IFF_ALLMULTI is set. From ru FreeBSD --- sys/dev/pci/if_bge.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'sys/dev') 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); -- cgit v1.2.3