[PATCH v2] drivers: net: fsl_enetc: Pass on primary MAC address to Linux

Michael Walle michael at walle.cc
Wed Dec 11 14:20:44 CET 2019


Am 2019-12-11 14:04, schrieb Alexandru Marginean:
> On 12/10/2019 11:47 PM, Michael Walle wrote:
>> Am 2019-12-10 15:55, schrieb Alex Marginean:
>>> Passes on the primary address used by u-boot to Linux.  The code does 
>>> a DT
>>> fix-up for ENETC PFs and sets the primary MAC address in IERB.  The 
>>> address
>>> in IERB is restored on ENETC PCI functions at FLR.
>> 
>> 
>> I don't get the reason why this is done in a proprietary way. What is 
>> the
>> difference between any other network interface whose hardware address 
>> is
>> set up in the generic u-boot code.
> 
> By proprietary do you mean IERB?

I meant the fdt fixups for mac-address/local-mac-address which is not
handled in the generic u-boot code, see my previous mail.

Because if it would, then there would be no need for the board specific
code below (just the one function call actually).

> Network cards normally have a ROM which comes preset from the factory
> with default MAC addresses.  At run-time drivers can use the default
> address or replace it.  The MAC address in IERB is the default MAC
> address for ENETC interfaces at run-time, this address is available to
> the driver/stack after issuing an FLR and in the absence of a DT node
> for the PCI function.
> We can pass MAC addresses to Linux through DT alone, but that's more
> of a hassle if Linux decides to assign the PCI function to a guest or
> user-space app.  Using the IERB values doesn't require any fix-up for
> guest DTs.

Understood.

> IERB is not actually a ROM though and we need U-Boot to set factory
> MAC addresses into IERB some time before Linux boots.
> 
>> Also, shouldn't write_hwaddr callback be implemented instead of the
>> enetc_set_ierb_primary_mac()?
> 
> OK, makes sense, I will move the code there.
> 

-michael


More information about the U-Boot mailing list