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

Michael Walle michael at walle.cc
Wed Dec 11 14:16:45 CET 2019


Hi Vladimir,

Am 2019-12-11 13:46, schrieb Vladimir Oltean:
> Hi Michael,
> 
> On Wed, 11 Dec 2019 at 00:48, Michael Walle <michael at walle.cc> 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.
>> 
>> Also, shouldn't write_hwaddr callback be implemented instead of the
>> enetc_set_ierb_primary_mac()?
>> 
> 
> At the moment, the Linux driver ignored the device tree and only reads
> the POR values of the SIPMAR registers. The reset value of those comes
> from the IERB space, which U-Boot is configuring. So it would be good
> if that behavior keeps working.
> 
> It would also be good if the Linux driver called of_get_mac_address,
> so it needs the device tree binding for that. That's why both fixups
> are performed, and why the generic function is not used.

yes, but u-boot already sets the mac-address/local-mac-address property
in the device tree already in a generic way, see fdt_fixup_ethernet().

> As for the write_hwaddr callback instead of
> enetc_set_primary_mac_addr, that is valid but I suppose it is outside
> the scope of this patch. That function is related to the runtime MAC
> address and not to the MAC passed to Linux.

according to the comment in eth-uclass.c this is not for (u-boot) 
runtime:

  /*
   * Devices need to write the hwaddr even if not started so that Linux
   * will have access to the hwaddr that u-boot stored for the device.
   * This is accomplished by attempting to probe each device and calling
   * their write_hwaddr() operation.
   */

and the runtime mac address for u-boot is already set enetc_start().

-michael


More information about the U-Boot mailing list