Setting IFF_ALLMULTI on a running interface didn't call bge_setmulti()

as intended, resulting in a non-working multicast routing.  Fix it.

MFC after:	3 days
This commit is contained in:
ru 2006-02-01 10:11:24 +00:00
parent 4126297e17
commit 8b316d0e55

View File

@ -3439,7 +3439,7 @@ bge_ioctl(ifp, command, 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_drv_flags & IFF_DRV_RUNNING &&
ifp->if_flags & IFF_PROMISC &&
@ -3451,6 +3451,9 @@ bge_ioctl(ifp, command, data)
sc->bge_if_flags & IFF_PROMISC) {
BGE_CLRBIT(sc, BGE_RX_MODE,
BGE_RXMODE_RX_PROMISC);
} else if (ifp->if_drv_flags & IFF_DRV_RUNNING &&
(ifp->if_flags ^ sc->bge_if_flags) & IFF_ALLMULTI) {
bge_setmulti(sc);
} else
bge_init_locked(sc);
} else {