svn commit: r351664 - head/sys/dev/vnic
Ed Maste
emaste at FreeBSD.org
Sun Sep 1 16:53:17 UTC 2019
Author: emaste
Date: Sun Sep 1 16:53:17 2019
New Revision: 351664
URL: https://svnweb.freebsd.org/changeset/base/351664
Log:
vnic: correct and simplify SIOCSIFFLAGS
PR: 223573, 223575
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D13028
Modified:
head/sys/dev/vnic/nicvf_main.c
Modified: head/sys/dev/vnic/nicvf_main.c
==============================================================================
--- head/sys/dev/vnic/nicvf_main.c Sun Sep 1 16:51:25 2019 (r351663)
+++ head/sys/dev/vnic/nicvf_main.c Sun Sep 1 16:53:17 2019 (r351664)
@@ -425,6 +425,7 @@ nicvf_if_ioctl(struct ifnet *ifp, u_long cmd, caddr_t
struct nicvf *nic;
struct rcv_queue *rq;
struct ifreq *ifr;
+ uint32_t flags;
int mask, err;
int rq_idx;
#if defined(INET) || defined(INET6)
@@ -479,10 +480,10 @@ nicvf_if_ioctl(struct ifnet *ifp, u_long cmd, caddr_t
break;
case SIOCSIFFLAGS:
NICVF_CORE_LOCK(nic);
- if (if_getflags(ifp) & IFF_UP) {
+ flags = if_getflags(ifp);
+ if (flags & IFF_UP) {
if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
- if ((nic->if_flags & if_getflags(ifp)) &
- IFF_PROMISC) {
+ if ((flags ^ nic->if_flags) & IFF_PROMISC) {
/* Change promiscous mode */
#if 0
/* ARM64TODO */
@@ -490,8 +491,7 @@ nicvf_if_ioctl(struct ifnet *ifp, u_long cmd, caddr_t
#endif
}
- if ((nic->if_flags ^ if_getflags(ifp)) &
- IFF_ALLMULTI) {
+ if ((flags ^ nic->if_flags) & IFF_ALLMULTI) {
/* Change multicasting settings */
#if 0
/* ARM64TODO */
@@ -504,7 +504,7 @@ nicvf_if_ioctl(struct ifnet *ifp, u_long cmd, caddr_t
} else if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
nicvf_stop_locked(nic);
- nic->if_flags = if_getflags(ifp);
+ nic->if_flags = flags;
NICVF_CORE_UNLOCK(nic);
break;
More information about the svn-src-all
mailing list