[PATCH RFC] cmd: fix net list command

Marek Vasut marex at denx.de
Mon Nov 15 14:17:10 CET 2021


On 11/15/21 1:24 PM, Michael Walle wrote:
> Am 2021-11-15 13:15, schrieb Marek Vasut:
>> On 11/15/21 1:11 PM, Michael Walle wrote:
>>> Don't get the MAC address by the environment, but by the platform data
>>> of the udevice. This will fix "net list" if the MAC address is randomly
>>> generated and won't change behavior when linux is booted.
>>>
>>> Signed-off-by: Michael Walle <michael at walle.cc>
>>> ---
>>>
>>> Hi,
>>>
>>> this is a proposal to fix the "net list" in a way that linux still 
>>> can have
>>> its own fallback mechanism of MAC addresses even if the bootloader has
>>> CONFIG_NET_RANDOM_ETHADDR enabled.
>>>
>>> The intention is to replace [1], where if I understood correctly, the
>>> intention was to fix "net list".
>>>
>>> [1] 
>>> https://lore.kernel.org/u-boot/3996ba2ee4e6ac136c0802dc0df4ef9b1750157c.1635506067.git.michal.simek@xilinx.com/ 
>>>
>>
>> Does that mean U-Boot and Linux will possibly each have different MAC
>> address on the same device ? That is clearly wrong and not how it is
>> supposed to work, U-Boot passes its ethaddr/ethNaddr settings to Linux
>> so that they would have the same MAC address on the same device.
> 
> Yes they have different ones, but having a random mac address is  wrong
> in the first place. So IMHO it is more useful to dectect that in linux,
> (and there was a good point that usually a user will look at dmesg and
> not some u-boot output) than having two different random MAC addresses,
> one for u-boot and one for linux.

Currently U-Boot passes MAC address stored in ethaddr/ethNaddr variable 
to Linux by patching it into DT, so Linux has the same MAC address, that 
is the correct behavior.

If U-Boot generates random MAC address for some reason, then the same 
random MAC address is also passed to Linux.

The argument that user cannot be bothered to look at U-Boot console when 
debugging a problem with random MAC address being passed to Linux is 
bogus, sorry. This is exactly where the user should look and fix the 
problem.

Are you by any chance trying to work around some bug on your system, 
where U-Boot is unable to obtain the correct MAC address from OTP and 
pass that to Linux, so by ignoring the "ethaddr" variable here, you in 
fact avoid passing that U-Boot MAC address to Linux and Linux uses some 
internal fallback and picks MAC address from OTP itself ?

> Initially that random MAC address thing was supposed to get networking
> running in u-boot if there is no ethaddr at all, eg. for network console.
> Now we are passing this made up network address to linux, too. Why?

We are passing the MAC address used by U-Boot to Linux, it doesn't 
matter whether it is random or not.

> Just
> because it is wrong to have two different mac addresses? Some drivers
> doesn't even probe without one. And we are just masking away this error.
> You get this "two different mac addresses" between reboots. Which is also
> wrong. This actually strenghten my opinion that this "feature" should
> be an u-boot only thing.

Maybe it would make sense to have U-Boot obtain the correct MAC address 
on your machine first, and then pass that same correct MAC address to 
Linux ?


More information about the U-Boot mailing list