vnic: correct and simplify SIOCSIFFLAGS
PR: 223573, 223575 Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D13028
This commit is contained in:
parent
597d9b4008
commit
73f4b4ebac
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=351664
@ -425,6 +425,7 @@ nicvf_if_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
|
||||
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 data)
|
||||
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 data)
|
||||
#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 data)
|
||||
} 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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user