svn commit: r277048 - head/sys/dev/sis
Pyun YongHyeon
yongari at FreeBSD.org
Mon Jan 12 07:37:08 UTC 2015
Author: yongari
Date: Mon Jan 12 07:37:06 2015
New Revision: 277048
URL: https://svnweb.freebsd.org/changeset/base/277048
Log:
Enable receive filter in sis_rxfilter().
While I'm here add a check for driver running state for multicast
filter handling.
Suggested by: brad at OpenBSD.org
Modified:
head/sys/dev/sis/if_sis.c
Modified: head/sys/dev/sis/if_sis.c
==============================================================================
--- head/sys/dev/sis/if_sis.c Mon Jan 12 07:36:25 2015 (r277047)
+++ head/sys/dev/sis/if_sis.c Mon Jan 12 07:37:06 2015 (r277048)
@@ -758,7 +758,8 @@ sis_rxfilter_ns(struct sis_softc *sc)
if_maddr_runlock(ifp);
}
- CSR_WRITE_4(sc, SIS_RXFILT_CTL, filter);
+ /* Turn the receive filter on */
+ CSR_WRITE_4(sc, SIS_RXFILT_CTL, filter | SIS_RXFILTCTL_ENABLE);
CSR_READ_4(sc, SIS_RXFILT_CTL);
}
@@ -820,7 +821,8 @@ sis_rxfilter_sis(struct sis_softc *sc)
CSR_WRITE_4(sc, SIS_RXFILT_DATA, hashes[i]);
}
- CSR_WRITE_4(sc, SIS_RXFILT_CTL, filter);
+ /* Turn the receive filter on */
+ CSR_WRITE_4(sc, SIS_RXFILT_CTL, filter | SIS_RXFILTCTL_ENABLE);
CSR_READ_4(sc, SIS_RXFILT_CTL);
}
@@ -2015,8 +2017,6 @@ sis_initl(struct sis_softc *sc)
}
sis_rxfilter(sc);
- /* Turn the receive filter on */
- SIS_SETBIT(sc, SIS_RXFILT_CTL, SIS_RXFILTCTL_ENABLE);
/*
* Load the address of the RX and TX lists.
@@ -2138,7 +2138,8 @@ sis_ioctl(struct ifnet *ifp, u_long comm
case SIOCADDMULTI:
case SIOCDELMULTI:
SIS_LOCK(sc);
- sis_rxfilter(sc);
+ if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+ sis_rxfilter(sc);
SIS_UNLOCK(sc);
break;
case SIOCGIFMEDIA:
More information about the svn-src-head
mailing list