Always honor promiscuous flag prior to programming Rx multicast

filter. This fixes a regression introduced in rev 1.89.

PR:	114632
MFC after:	3 days
This commit is contained in:
Pyun YongHyeon 2007-12-03 01:28:08 +00:00
parent b59f38b57c
commit 7c103000b6

View File

@ -634,10 +634,14 @@ re_setmulti(sc)
ifp = sc->rl_ifp;
rxfilt = CSR_READ_4(sc, RL_RXCFG);
rxfilt = CSR_READ_4(sc, RL_RXCFG);
rxfilt &= ~(RL_RXCFG_RX_ALLPHYS | RL_RXCFG_RX_MULTI);
if (ifp->if_flags & IFF_ALLMULTI || ifp->if_flags & IFF_PROMISC) {
rxfilt |= RL_RXCFG_RX_MULTI;
if (ifp->if_flags & IFF_PROMISC)
rxfilt |= RL_RXCFG_RX_ALLPHYS;
if (ifp->if_flags & IFF_ALLMULTI)
rxfilt |= RL_RXCFG_RX_MULTI;
CSR_WRITE_4(sc, RL_RXCFG, rxfilt);
CSR_WRITE_4(sc, RL_MAR0, 0xFFFFFFFF);
CSR_WRITE_4(sc, RL_MAR4, 0xFFFFFFFF);