summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/dev/re/if_re.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/re/if_re.c b/sys/dev/re/if_re.c
index 2734069..c8e7f84 100644
--- a/sys/dev/re/if_re.c
+++ b/sys/dev/re/if_re.c
@@ -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);
OpenPOWER on IntegriCloud