Netdev List
 help / color / mirror / Atom feed
* [PATCH net-next v3 0/4] net: Fix protodown with macvlan
@ 2026-05-07 10:59 Ido Schimmel
  2026-05-07 10:59 ` [PATCH net-next v3 1/4] net: Set dev->proto_down before changing carrier state Ido Schimmel
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Ido Schimmel @ 2026-05-07 10:59 UTC (permalink / raw)
  To: netdev; +Cc: davem, kuba, pabeni, edumazet, horms, petrm, Ido Schimmel

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.

v3:
- Keep protodown restricted to carrier state and avoid changing /
  calling netif_stacked_transfer_operstate().
v2: https://lore.kernel.org/netdev/20260505081656.463158-1-idosch@nvidia.com/
- Move protodown handling away from drivers to the core (Jakub).
- Add a new test case for vxlan.
v1: https://lore.kernel.org/netdev/20260429124624.835335-1-idosch@nvidia.com/

Ido Schimmel (4):
  net: Set dev->proto_down before changing carrier state
  net: Do not turn on carrier when protodown is on
  net: Do not unconditionally turn on carrier when turning off protodown
  selftests: net: Add protodown tests

 net/core/dev.c                           |  23 ++-
 net/sched/sch_generic.c                  |   3 +
 tools/testing/selftests/net/Makefile     |   1 +
 tools/testing/selftests/net/protodown.sh | 182 +++++++++++++++++++++++
 4 files changed, 207 insertions(+), 2 deletions(-)
 create mode 100755 tools/testing/selftests/net/protodown.sh

-- 
2.54.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-05-09  0:21 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-07 10:59 [PATCH net-next v3 0/4] net: Fix protodown with macvlan Ido Schimmel
2026-05-07 10:59 ` [PATCH net-next v3 1/4] net: Set dev->proto_down before changing carrier state Ido Schimmel
2026-05-07 10:59 ` [PATCH net-next v3 2/4] net: Do not turn on carrier when protodown is on Ido Schimmel
2026-05-07 10:59 ` [PATCH net-next v3 3/4] net: Do not unconditionally turn on carrier when turning off protodown Ido Schimmel
2026-05-07 10:59 ` [PATCH net-next v3 4/4] selftests: net: Add protodown tests Ido Schimmel
2026-05-09  0:20 ` [PATCH net-next v3 0/4] net: Fix protodown with macvlan patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox