From: Sascha Hauer <sha@pengutronix.de>
To: Alexander Shiyan <eagle.alexander923@gmail.com>
Cc: Ahmad Fatoum <a.fatoum@pengutronix.de>, barebox@lists.infradead.org
Subject: Re: [PATCH 3/3] net: add generic MAC address derivation from machine ID
Date: Fri, 13 Oct 2023 13:11:41 +0200 [thread overview]
Message-ID: <20231013111141.GJ235829@pengutronix.de> (raw)
In-Reply-To: <CAP1tNvRLTzhkiVvun=+yHkxm1jtX_xQNg0rXCM5HEeGNNQ10wA@mail.gmail.com>
On Thu, Oct 12, 2023 at 05:59:45PM +0300, Alexander Shiyan wrote:
> Hello.
>
> Any news on this patch?
It's Ahmad's turn to integrate the remaining review topic(s) and resend.
Sascha
>
> пт, 6 окт. 2023 г. в 14:59, Sascha Hauer <sha@pengutronix.de>:
> >
> > On Tue, Sep 12, 2023 at 02:34:28PM +0200, Ahmad Fatoum wrote:
> > > Hi Sascha,
> > >
> > > On 12.09.23 12:49, Sascha Hauer wrote:
> > > > On Mon, Sep 11, 2023 at 05:59:27PM +0200, Ahmad Fatoum wrote:
> > > >> From: Ahmad Fatoum <ahmad@a3f.at>
> > > >>
> > > >> Especially during development, devices often lack a MAC address. While a
> > > >> MAC address can be easily added to the environment:
> > > >>
> > > >> nv dev.eth0.ethaddr="aa:bb:cc:dd:ee:ff"
> > > >>
> > > >> It's easily lost when flashing complete new images, e.g. from CI.
> > > >> Make the development experience neater by deriving a stable MAC address
> > > >> if possible.
> > > >
> > > > I like this, because my Fritzbox network overview is full of duplicate
> > > > entries coming from boards with random MAC addresses.
> > >
> > > Glad you like it. If you are ok with the first two patches, can you take
> > > those until I respin this?
> > >
> > > >
> > > >
> > > >> @@ -558,6 +559,7 @@ static int of_populate_ethaddr(void)
> > > >
> > > > This function should be renamed. When reviewing this patch I asked
> > > > myself why you limit generating a fixed MAC address to the DT case until
> > > > I realized that you actually don't. I was just confused by the function
> > > > name.
> > >
> > > Ah, didn't notice that. Will rename.
> > >
> > > >
> > > >> {
> > > >> char str[sizeof("xx:xx:xx:xx:xx:xx")];
> > > >> struct eth_device *edev;
> > > >> + bool generated = false;
> > > >> int ret;
> > > >>
> > > >> list_for_each_entry(edev, &netdev_list, list) {
> > > >> @@ -566,11 +568,18 @@ static int of_populate_ethaddr(void)
> > > >>
> > > >> ret = of_get_mac_addr_nvmem(edev->parent->of_node,
> > > >> edev->ethaddr);
> > > >> + if (ret && IS_ENABLED(CONFIG_NET_ETHADDR_FROM_MACHINE_ID)) {
> > > >
> > > > This check doesn't seem to be needed, generate_ether_addr() already
> > > > returns -ENOSYS when this option is not enabled.
> > >
> > > Until we have LTO, I'd like to keep this in, so the function need not be called.
> > > In this instance, I find it is a less ugly alternative to have #ifdef and static inline..
> > >
> > > >> @@ -381,9 +419,16 @@ static struct net_connection *net_new(struct eth_device *edev, IPaddr_t dest,
> > > >>
> > > >> if (!is_valid_ether_addr(edev->ethaddr)) {
> > > >> char str[sizeof("xx:xx:xx:xx:xx:xx")];
> > > >> - random_ether_addr(edev->ethaddr);
> > > >> +
> > > >> + ret = generate_ether_addr(edev->ethaddr, edev->dev.id);
> > > >
> > > > For most network devices we won't get here because of_populate_ethaddr()
> > > > will already have done it for us. It's only used for devices that are
> > > > probed after postenvironment_initcall(), namely USB devices.
> > >
> > > Or those that don't have CONFIG_NET_ETHADDR_FROM_MACHINE_ID enabled
> > > or don't have a machine ID set.
> > >
> > > > I think this deserves a cleanup before we merge this. The original
> > > > reason to introduce a postenvironment_initcall() for getting the MAC
> > > > address from nvmem was:
> > > >
> > > >> We do this in a very late initcall, because we don't want to enforce a
> > > >> probe a probe order between nvmem providers and network devices. We
> > > >> can't do it at randomization time, because we need to fixup Ethernet mac
> > > >> addresses, even when barebox itself doesn't ifup the netdev.
> > > >
> > > > I think we should have one centralized function that retrieves the MAC
> > > > address for an ethernet device. That should be called when we actually
> > > > need that MAC address, so once in net_new() and once at of_fixup time.
> > > >
> > > > Right now the behaviour is inconsistent with regard to random MAC
> > > > addresses. Currently we propagate the random MAC address to the Linux
> > > > device tree when we use ethernet in barebox, but we don't propagate it
> > > > when we do not use ethernet in barebox. We should decide what the
> > > > desired behaviour is and do it consistently regardless if we use
> > > > ethernet in barebox or not. This could be cleaned up along the way.
> > >
> > > Randomized MAC addresses are a necessary evil when barebox needs to do
> > > networking and doesn't have a stable address. If we have a stable address,
> > > we shouldn't randomize.
> > >
> > > Fixing up a randomized MAC address is a lesser evil than having different
> > > MAC addresses for barebox and Linux. If we don't need a MAC address in barebox,
> > > we shouldn't generate a random one just to fix it up.
> > >
> > > If we have a stable address, we should tell Linux about it.
> > >
> > > That's the logic of the current code and it's sensible to me. Why change it?
> >
> > Ok, makes sense. Let's go for it then.
> >
> > Sascha
> >
> > --
> > Pengutronix e.K. | |
> > Steuerwalder Str. 21 | http://www.pengutronix.de/ |
> > 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
> > Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
>
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
next prev parent reply other threads:[~2023-10-13 11:13 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-11 15:59 [PATCH 1/3] common: machine_id: support deriving app specific UUIDs Ahmad Fatoum
2023-09-11 15:59 ` [PATCH 2/3] net: import Linux eth_addr_inc/dec/add helpers Ahmad Fatoum
2023-09-11 15:59 ` [PATCH 3/3] net: add generic MAC address derivation from machine ID Ahmad Fatoum
2023-09-12 10:49 ` Sascha Hauer
2023-09-12 12:34 ` Ahmad Fatoum
2023-10-05 6:56 ` Ahmad Fatoum
2023-10-06 11:59 ` Sascha Hauer
2023-10-12 14:59 ` Alexander Shiyan
2023-10-13 11:11 ` Sascha Hauer [this message]
2023-10-17 9:39 ` Ahmad Fatoum
2023-09-15 15:23 ` Thorsten Scherer
2023-09-21 11:12 ` [PATCH 1/3] common: machine_id: support deriving app specific UUIDs Sascha Hauer
2023-09-22 9:45 ` Sascha Hauer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231013111141.GJ235829@pengutronix.de \
--to=sha@pengutronix.de \
--cc=a.fatoum@pengutronix.de \
--cc=barebox@lists.infradead.org \
--cc=eagle.alexander923@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox