aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuigi Rizzo <luigi@FreeBSD.org>2002-11-25 19:28:01 +0000
committerLuigi Rizzo <luigi@FreeBSD.org>2002-11-25 19:28:01 +0000
commit5d6dfbbb5ecfba9d5ac924b274df43db1c3bc980 (patch)
tree08bdf140491fece57f7b2394dacd1a89ec9d82a6
parent33893c674d239f35ee25ea5248ebeeaff9d5d975 (diff)
Notes
-rw-r--r--sys/dev/dc/if_dc.c16
-rw-r--r--sys/pci/if_dc.c16
2 files changed, 14 insertions, 18 deletions
diff --git a/sys/dev/dc/if_dc.c b/sys/dev/dc/if_dc.c
index 7047261f88124..6b2d86c0cf21d 100644
--- a/sys/dev/dc/if_dc.c
+++ b/sys/dev/dc/if_dc.c
@@ -3539,15 +3539,13 @@ dc_ioctl(ifp, command, data)
switch(command) {
case SIOCSIFFLAGS:
if (ifp->if_flags & IFF_UP) {
- if (ifp->if_flags & IFF_RUNNING &&
- ifp->if_flags & IFF_PROMISC &&
- !(sc->dc_if_flags & IFF_PROMISC)) {
- dc_setfilt(sc);
- } else if (ifp->if_flags & IFF_RUNNING &&
- !(ifp->if_flags & IFF_PROMISC) &&
- sc->dc_if_flags & IFF_PROMISC) {
- dc_setfilt(sc);
- } else if (!(ifp->if_flags & IFF_RUNNING)) {
+ int need_setfilt = (ifp->if_flags ^ sc->dc_if_flags) &
+ (IFF_PROMISC | IFF_ALLMULTI);
+
+ if (ifp->if_flags & IFF_RUNNING) {
+ if (need_setfilt)
+ dc_setfilt(sc);
+ } else {
sc->dc_txthresh = 0;
dc_init(sc);
}
diff --git a/sys/pci/if_dc.c b/sys/pci/if_dc.c
index 7047261f88124..6b2d86c0cf21d 100644
--- a/sys/pci/if_dc.c
+++ b/sys/pci/if_dc.c
@@ -3539,15 +3539,13 @@ dc_ioctl(ifp, command, data)
switch(command) {
case SIOCSIFFLAGS:
if (ifp->if_flags & IFF_UP) {
- if (ifp->if_flags & IFF_RUNNING &&
- ifp->if_flags & IFF_PROMISC &&
- !(sc->dc_if_flags & IFF_PROMISC)) {
- dc_setfilt(sc);
- } else if (ifp->if_flags & IFF_RUNNING &&
- !(ifp->if_flags & IFF_PROMISC) &&
- sc->dc_if_flags & IFF_PROMISC) {
- dc_setfilt(sc);
- } else if (!(ifp->if_flags & IFF_RUNNING)) {
+ int need_setfilt = (ifp->if_flags ^ sc->dc_if_flags) &
+ (IFF_PROMISC | IFF_ALLMULTI);
+
+ if (ifp->if_flags & IFF_RUNNING) {
+ if (need_setfilt)
+ dc_setfilt(sc);
+ } else {
sc->dc_txthresh = 0;
dc_init(sc);
}