diff options
author | Luigi Rizzo <luigi@FreeBSD.org> | 2002-11-25 20:00:13 +0000 |
---|---|---|
committer | Luigi Rizzo <luigi@FreeBSD.org> | 2002-11-25 20:00:13 +0000 |
commit | 1efbdcd10fb73c2eae83c5dbbb8f01c05b418403 (patch) | |
tree | d0e0a117055502b106c0491ac941b952310e1050 /sys | |
parent | d535facffe0bc04d05d98f8e0c2656eca833a78c (diff) | |
download | src-1efbdcd10fb73c2eae83c5dbbb8f01c05b418403.tar.gz src-1efbdcd10fb73c2eae83c5dbbb8f01c05b418403.zip |
Fix IFF_ALLMULTI handling.
Reviewed by: pdeuskar (maintainer)
Approved by: re
Notes
Notes:
svn path=/head/; revision=107243
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/em/if_em.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/sys/dev/em/if_em.c b/sys/dev/em/if_em.c index 146d44f38d2c..e8f36725eec9 100644 --- a/sys/dev/em/if_em.c +++ b/sys/dev/em/if_em.c @@ -529,14 +529,14 @@ em_ioctl(struct ifnet *ifp, IOCTL_CMD_TYPE command, caddr_t data) case SIOCSIFFLAGS: IOCTL_DEBUGOUT("ioctl rcv'd: SIOCSIFFLAGS (Set Interface Flags)"); if (ifp->if_flags & IFF_UP) { - if (ifp->if_flags & IFF_RUNNING && - ifp->if_flags & IFF_PROMISC) { - em_set_promisc(adapter); - } else if (ifp->if_flags & IFF_RUNNING && - !(ifp->if_flags & IFF_PROMISC)) { - em_disable_promisc(adapter); - } else + /* + * init adapter if not running, then take care + * of possible changes in IFF_ALLMULTI and IFF_PROMISC + */ + if (!(ifp->if_flags & IFF_RUNNING)) em_init(adapter); + em_disable_promisc(adapter); + em_set_promisc(adapter); } else { if (ifp->if_flags & IFF_RUNNING) { em_stop(adapter); |