ifconfig(8): Don't set network interface capabilities when there is no change.
A quick grep through the kernel code shows network drivers compute the changed bits of network capabilities after a SIOCSIFCAP IOCTL(2) by using the bitwise exclusive or operation. When the set capabilities are equal to the already read capabilities, no action will be taken. Let ifconfig(8) predict this case and skip the SIOCSIFCAP IOCTL(2) system call. Discussed with: kib@ (revert change in case of issues) MFC after: 1 week Sponsored by: NVIDIA Networking
This commit is contained in:
parent
81b22a9892
commit
ad8f078f66
@ -1243,6 +1243,9 @@ setifcap(const char *vname, int value, int s, const struct afswtch *afp)
|
||||
} else
|
||||
flags |= value;
|
||||
flags &= ifr.ifr_reqcap;
|
||||
/* Check for no change in capabilities. */
|
||||
if (ifr.ifr_curcap == flags)
|
||||
return;
|
||||
ifr.ifr_reqcap = flags;
|
||||
if (ioctl(s, SIOCSIFCAP, (caddr_t)&ifr) < 0)
|
||||
Perror(vname);
|
||||
|
Loading…
Reference in New Issue
Block a user