]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Fix capabilities handling for iflib drivers
authorStephen Hurd <shurd@FreeBSD.org>
Thu, 20 Sep 2018 19:35:35 +0000 (19:35 +0000)
committerStephen Hurd <shurd@FreeBSD.org>
Thu, 20 Sep 2018 19:35:35 +0000 (19:35 +0000)
commit0c919c23706c7734a9ecb6b0a95717c37c4b3d56
treeeefc71b302cf57472126385c02b083fc07315dd2
parent4bf0035fd1434190fc67a647879437a7919a4cf7
Fix capabilities handling for iflib drivers

Various capabilities were not being handled correctly in the
SIOCSIFCAP handler. Specifically:

IFCAP_RXCSUM and IFCAP_RXCSUM_IPV6 could be set even if not supported

It was impossible to disable IFCAP_RXCSUM and/or IFCAP_RXCSUM_IPV6 via
ifconfig since it does ioctl() per command-line flag rather than combine
them into a single call.

IFCAP_VLAN_HWCSUM could not be modified via the ioctl()

Setting any combination of the three IFCAP_WOL flags would set only
IFCAP_WOL_MCAST | IFCAP_WOL_MAGIC. For example, setting only
IFCAP_WOL_UCAST would result in both IFCAP_WOL_MCAST and IFCAP_WOL_MAGIC
being enabled, but IFCAP_WOL_UCAST would not be enabled.

Because if_vlancap() was called before if_togglecapenable(), vlan flags
were sometimes not applied correctly.

Interfaces were being unnecessarily stopped and restarted for WoL

PR: 231151
Submitted by: Kaho Toshikazu <kaho@elam.kais.kyoto-u.ac.jp>
Reported by: Shirkdog <mshirk@daemon-security.com>
Reviewed by: galladin
Approved by: re (gjb)
Sponsored by: Limelight Networks
Differential Revision: https://reviews.freebsd.org/D17158
sys/net/iflib.c