diff options
| author | Vincenzo Maffione <vmaffione@FreeBSD.org> | 2021-12-28 10:47:13 +0000 |
|---|---|---|
| committer | Vincenzo Maffione <vmaffione@FreeBSD.org> | 2022-01-06 09:53:08 +0000 |
| commit | 6000a417d32a417911ed3d96d3bb3f59fce5a9ae (patch) | |
| tree | 9baa4ec3ae2167399309775d3745322c1f876a00 | |
| parent | 2c7441c86ef5c970c15047f586372c16ef7c7c3f (diff) | |
net: iflib: sync isc_capenable to if_capenable
On SIOCSIFCAP, some bits in ifp->if_capenable may be toggled.
When this happens, apply the same change to isc_capenable, which
is the iflib private copy of if_capenable (for a subset of the
IFCAP_* bits). In this way the iflib drivers can check the bits
using isc_capenable rather than if_capenable. This is convenient
because the latter access requires an additional indirection
through the ifp, and it is also less likely to be in cache.
PR: 260068
Reviewed by: kbowling, gallatin
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D33156
(cherry picked from commit 4561c4f0ca59da5b704238074bd488ff907b4b50)
| -rw-r--r-- | sys/net/iflib.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/net/iflib.c b/sys/net/iflib.c index 85da3e77f037..c852e31c0aac 100644 --- a/sys/net/iflib.c +++ b/sys/net/iflib.c @@ -4423,6 +4423,7 @@ iflib_if_ioctl(if_t ifp, u_long command, caddr_t data) iflib_stop(ctx); STATE_LOCK(ctx); if_togglecapenable(ifp, setmask); + ctx->ifc_softc_ctx.isc_capenable ^= setmask; STATE_UNLOCK(ctx); if (bits & IFF_DRV_RUNNING && setmask & ~IFCAP_WOL) iflib_init_locked(ctx); |
