Merge branch 'net-fix-protodown-with-macvlan' Ido Schimmel says: ==================== net: Fix protodown with macvlan When protodown is enabled on a macvlan, two bugs cause the macvlan to incorrectly gain carrier: 1. Toggling the lower device's carrier while protodown is enabled on the macvlan causes the macvlan to gain carrier, effectively bypassing the protodown mechanism. 2. Toggling protodown on and then off on the macvlan while the lower device has no carrier causes the macvlan to gain carrier, since netif_change_proto_down() unconditionally turns the carrier on. Patch #1 is a preparation. Patch #2 solves the first problem by making netif_carrier_on() return early when protodown is on. Patch #3 solves the second problem by only calling netif_carrier_on() when protodown is turned off if there is no linked net device or if the linked net device has a carrier. Patch #4 adds a selftest covering both bugs and the basic protodown functionality. Targeting at net-next since these are not regressions (i.e., never worked). Note that while these changes are in the core, they should only affect macvlan as protodown is only supported by macvlan and vxlan and only the former has a linked net device. ==================== Link: https://patch.msgid.link/20260507105906.891817-1-idosch@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>