[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Y2G+SYXyZAB/r3X0@lunn.ch>
Date: Wed, 2 Nov 2022 01:48:09 +0100
From: Andrew Lunn <andrew@...n.ch>
To: Andy Ren <andy.ren@...cruise.com>
Cc: netdev@...r.kernel.org, richardbgobert@...il.com,
davem@...emloft.net, wsa+renesas@...g-engineering.com,
edumazet@...gle.com, petrm@...dia.com, kuba@...nel.org,
pabeni@...hat.com, corbet@....net, linux-doc@...r.kernel.org,
linux-kernel@...r.kernel.org, roman.gushchin@...ux.dev
Subject: Re: [PATCH net-next v2] netconsole: Enable live renaming for network
interfaces used by netconsole
On Tue, Nov 01, 2022 at 05:24:20PM -0700, Andy Ren wrote:
> This patch enables support for live renaming of network interfaces
> initialized by netconsole.
>
> This resolves an issue seen when netconsole is configured to boot as a
> built-in kernel module with a kernel boot argument. As stated in the
> kernel man page - As a built-in, netconsole initializes immediately
> after NIC cards and will bring up the specified interface as soon as
> possible. Consequently, the renaming of specified interfaces will fail
> and return EBUSY. This is because by default, the kernel disallows live
> renaming unless the device explicitly sets a priv_flags bit
> (e.g: IFF_LIVE_RENAME_OK or IFF_LIVE_ADDR_CHANGE), and so renaming after
> a network interface is up returns EBUSY.
>
> The changes to the kernel are as of following:
>
> - Addition of a iface_live_renaming boolean flag to the netpoll struct,
> used to enable/disable interface live renaming. False by default
> - Changes to check for the aforementioned flag in network and ethernet
> driver interface renaming code
> - Adds a new optional "*" parameter to the netconsole configuration
> string that enables interface live renaming when included
> (e.g. netconsole=+*....). When this optional parameter is included,
> "iface_live_renaming" is set to true
> /**
> * eth_header - create the Ethernet header
> @@ -288,8 +289,10 @@ int eth_prepare_mac_addr_change(struct net_device *dev, void *p)
> {
> struct sockaddr *addr = p;
>
> - if (!(dev->priv_flags & IFF_LIVE_ADDR_CHANGE) && netif_running(dev))
> + if (!(dev->priv_flags & IFF_LIVE_ADDR_CHANGE) && netif_running(dev) &&
> + !netpoll_live_renaming_enabled(dev))
> return -EBUSY;
> +
> if (!is_valid_ether_addr(addr->sa_data))
> return -EADDRNOTAVAIL;
> return 0;
There is no mention of this in the commit message.
Changing the interface name while running is probably not an
issue. There are a few drivers which report the name to the firmware,
presumably for logging, and phoning home, but it should not otherwise
affect the hardware.
However, changing the MAC address does need changes to the hardware
configuration, and not all can do that while the interface is running.
So i think this last part needs some justification.
Andrew
Powered by blists - more mailing lists