diff mbox series

[net-next] ipvlan: handle NETDEV_DOWN event

Message ID 1711892489-27931-2-git-send-email-venkat.x.venkatsubra@oracle.com (mailing list archive)
State Superseded
Delegated to: Netdev Maintainers
Headers show
Series [net-next] ipvlan: handle NETDEV_DOWN event | expand

Checks

Context Check Description
netdev/series_format success Single patches do not need cover letters
netdev/tree_selection success Clearly marked for net-next
netdev/ynl success Generated files up to date; no warnings/errors; no diff in generated;
netdev/fixes_present success Fixes tag not required for -next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 943 this patch: 943
netdev/build_tools success No tools touched, skip
netdev/cc_maintainers warning 3 maintainers not CCed: kuba@kernel.org pabeni@redhat.com christophe.jaillet@wanadoo.fr
netdev/build_clang success Errors and warnings before: 954 this patch: 954
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn success Errors and warnings before: 954 this patch: 954
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 7 lines checked
netdev/build_clang_rust success No Rust files in patch. Skipping build
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0
netdev/contest success net-next-2024-04-01--00-00 (tests: 952)

Commit Message

Venkat Venkatsubra March 31, 2024, 1:41 p.m. UTC
In case of stacked devices, to help propagate the down
link state from the parent/root device (to this leaf device),
handle NETDEV_DOWN event like it is done now for NETDEV_UP.

In the below example, ens5 is the host interface which is the
parent of the ipvlan interface eth0 in the container.

Host:

[root@gkn-podman-x64 ~]# ip link set ens5 down
[root@gkn-podman-x64 ~]# ip -d link show dev ens5
3: ens5: <BROADCAST,MULTICAST> mtu 9000 qdisc mq state DOWN
      ...
[root@gkn-podman-x64 ~]#

Container:

[root@testnode-ol8 /]# ip -d link show dev eth0
2: eth0@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 state UNKNOWN
        ...
    ipvlan mode l2 bridge
        ...
[root@testnode-ol8 /]#

eth0's state continues to show up as UP even though ens5 is now DOWN.

Reported-by: Gia-Khanh Nguyen <gia-khanh.nguyen@oracle.com>
Signed-off-by: Venkat Venkatsubra <venkat.x.venkatsubra@oracle.com>
---
 drivers/net/ipvlan/ipvlan_main.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Jakub Kicinski April 4, 2024, 2:08 a.m. UTC | #1
On Sun, 31 Mar 2024 06:41:29 -0700 Venkat Venkatsubra wrote:
> In case of stacked devices, to help propagate the down
> link state from the parent/root device (to this leaf device),
> handle NETDEV_DOWN event like it is done now for NETDEV_UP.
> 
> In the below example, ens5 is the host interface which is the
> parent of the ipvlan interface eth0 in the container.
> 
> Host:
> 
> [root@gkn-podman-x64 ~]# ip link set ens5 down
> [root@gkn-podman-x64 ~]# ip -d link show dev ens5
> 3: ens5: <BROADCAST,MULTICAST> mtu 9000 qdisc mq state DOWN
>       ...
> [root@gkn-podman-x64 ~]#
> 
> Container:
> 
> [root@testnode-ol8 /]# ip -d link show dev eth0
> 2: eth0@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 state UNKNOWN
>         ...
>     ipvlan mode l2 bridge
>         ...
> [root@testnode-ol8 /]#
> 
> eth0's state continues to show up as UP even though ens5 is now DOWN.

When you squash the cover letter in, please add say that for macvlan
the handling was added in commit 80fd2d6ca546 ("macvlan: Change status
when lower device goes down").

> Reported-by: Gia-Khanh Nguyen <gia-khanh.nguyen@oracle.com>
> Signed-off-by: Venkat Venkatsubra <venkat.x.venkatsubra@oracle.com>
> ---
>  drivers/net/ipvlan/ipvlan_main.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/net/ipvlan/ipvlan_main.c b/drivers/net/ipvlan/ipvlan_main.c
> index 5920f7e63352..724d660904a2 100644
> --- a/drivers/net/ipvlan/ipvlan_main.c
> +++ b/drivers/net/ipvlan/ipvlan_main.c
> @@ -736,6 +736,7 @@ static int ipvlan_device_event(struct notifier_block *unused,
>  	switch (event) {
>  	case NETDEV_UP:
>  	case NETDEV_CHANGE:
> +	case NETDEV_DOWN:

Maybe put these in the same order they are in macvlan?
diff mbox series

Patch

diff --git a/drivers/net/ipvlan/ipvlan_main.c b/drivers/net/ipvlan/ipvlan_main.c
index 5920f7e63352..724d660904a2 100644
--- a/drivers/net/ipvlan/ipvlan_main.c
+++ b/drivers/net/ipvlan/ipvlan_main.c
@@ -736,6 +736,7 @@  static int ipvlan_device_event(struct notifier_block *unused,
 	switch (event) {
 	case NETDEV_UP:
 	case NETDEV_CHANGE:
+	case NETDEV_DOWN:
 		list_for_each_entry(ipvlan, &port->ipvlans, pnode)
 			netif_stacked_transfer_operstate(ipvlan->phy_dev,
 							 ipvlan->dev);