diff options
| author | Luigi Rizzo <luigi@FreeBSD.org> | 2002-11-25 19:28:01 +0000 |
|---|---|---|
| committer | Luigi Rizzo <luigi@FreeBSD.org> | 2002-11-25 19:28:01 +0000 |
| commit | 5d6dfbbb5ecfba9d5ac924b274df43db1c3bc980 (patch) | |
| tree | 08bdf140491fece57f7b2394dacd1a89ec9d82a6 /sys/dev/dc | |
| parent | 33893c674d239f35ee25ea5248ebeeaff9d5d975 (diff) | |
Notes
Diffstat (limited to 'sys/dev/dc')
| -rw-r--r-- | sys/dev/dc/if_dc.c | 16 |
1 files changed, 7 insertions, 9 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); } |
