By definition promiscuous mode should see all unicast frames as well

as multicast/broadcast frames. Previously re(4) ignored multicast
frames in promiscuous mode. The RTL8169 datasheet was not clear
how it handles multicast frames in promiscuous mode.

PR:	kern/118572
MFC after:	3 days
This commit is contained in:
Pyun YongHyeon 2007-12-20 07:26:20 +00:00
parent 9ba01c866b
commit a0637caa3f
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=174809

View File

@ -643,8 +643,12 @@ re_setmulti(sc)
if (ifp->if_flags & IFF_ALLMULTI || ifp->if_flags & IFF_PROMISC) {
if (ifp->if_flags & IFF_PROMISC)
rxfilt |= RL_RXCFG_RX_ALLPHYS;
if (ifp->if_flags & IFF_ALLMULTI)
rxfilt |= RL_RXCFG_RX_MULTI;
/*
* Unlike other hardwares, we have to explicitly set
* RL_RXCFG_RX_MULTI to receive multicast frames in
* promiscuous mode.
*/
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);