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 |
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 --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);
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(+)