mbox series

[net-next,0/3] net: add support for an offset of a nvmem provided MAC address

Message ID 20210414152657.12097-1-michael@walle.cc
Headers show
Series net: add support for an offset of a nvmem provided MAC address | expand

Message

Michael Walle April 14, 2021, 3:26 p.m. UTC
Boards with multiple ethernet ports might store their MAC addresses not
individually per port but just store one base MAC address. To get the
MAC address of a specific network port we have to add an offset.

This series adds a new device tree property "nvmem-mac-address-offset".

Michael Walle (3):
  dt-bindings: net: add nvmem-mac-address-offset property
  net: add helper eth_addr_add()
  net: implement nvmem-mac-address-offset DT property

 .../bindings/net/ethernet-controller.yaml          |  6 ++++++
 drivers/of/of_net.c                                |  4 ++++
 include/linux/etherdevice.h                        | 14 ++++++++++++++
 net/ethernet/eth.c                                 |  5 +++++
 4 files changed, 29 insertions(+)

Comments

Rob Herring April 15, 2021, 9:59 p.m. UTC | #1
On Wed, Apr 14, 2021 at 05:43:49PM +0200, Andrew Lunn wrote:
> On Wed, Apr 14, 2021 at 05:26:55PM +0200, Michael Walle wrote:
> > It is already possible to read the MAC address via a NVMEM provider. But
> > there are boards, esp. with many ports, which only have a base MAC
> > address stored. Thus we need to have a way to provide an offset per
> > network device.
> 
> We need to see what Rob thinks of this. There was recently a patchset
> to support swapping the byte order of the MAC address in a NVMEM. Rob
> said the NVMEM provider should have the property, not the MAC driver.
> This does seems more ethernet specific, so maybe it should be an
> Ethernet property?

There was also this one[1]. I'm not totally opposed, but don't want to 
see a never ending addition of properties to try to describe any 
possible transformation.

Rob

[1] https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20200920095724.8251-4-ansuelsmth@gmail.com/
Michael Walle April 15, 2021, 10:27 p.m. UTC | #2
Am 2021-04-15 23:59, schrieb Rob Herring:
> On Wed, Apr 14, 2021 at 05:43:49PM +0200, Andrew Lunn wrote:
>> On Wed, Apr 14, 2021 at 05:26:55PM +0200, Michael Walle wrote:
>> > It is already possible to read the MAC address via a NVMEM provider. But
>> > there are boards, esp. with many ports, which only have a base MAC
>> > address stored. Thus we need to have a way to provide an offset per
>> > network device.
>> 
>> We need to see what Rob thinks of this. There was recently a patchset
>> to support swapping the byte order of the MAC address in a NVMEM. Rob
>> said the NVMEM provider should have the property, not the MAC driver.
>> This does seems more ethernet specific, so maybe it should be an
>> Ethernet property?
> 
> There was also this one[1]. I'm not totally opposed, but don't want to
> see a never ending addition of properties to try to describe any
> possible transformation.

Agreed, that stuff like ASCII MAC address parsing should be done
elsewhere. But IMHO adding an offset is a pretty common one (as also
pointed out in [1]). And it also need to be a per ethernet device
property.

-michael

[1] 
https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20200920095724.8251-4-ansuelsmth@gmail.com/
Florian Fainelli April 15, 2021, 11:45 p.m. UTC | #3
On 4/15/2021 2:59 PM, Rob Herring wrote:
> On Wed, Apr 14, 2021 at 05:43:49PM +0200, Andrew Lunn wrote:
>> On Wed, Apr 14, 2021 at 05:26:55PM +0200, Michael Walle wrote:
>>> It is already possible to read the MAC address via a NVMEM provider. But
>>> there are boards, esp. with many ports, which only have a base MAC
>>> address stored. Thus we need to have a way to provide an offset per
>>> network device.
>>
>> We need to see what Rob thinks of this. There was recently a patchset
>> to support swapping the byte order of the MAC address in a NVMEM. Rob
>> said the NVMEM provider should have the property, not the MAC driver.
>> This does seems more ethernet specific, so maybe it should be an
>> Ethernet property?
> 
> There was also this one[1]. I'm not totally opposed, but don't want to 
> see a never ending addition of properties to try to describe any 
> possible transformation.

If only we could load eBPF bytecode embedded into Device Tree ;)
Michael Walle May 12, 2021, 3:27 p.m. UTC | #4
[adding Srinivas Kandagatla and Ansuel Smith]

Am 2021-04-16 00:27, schrieb Michael Walle:
> Am 2021-04-15 23:59, schrieb Rob Herring:

>> On Wed, Apr 14, 2021 at 05:43:49PM +0200, Andrew Lunn wrote:

>>> On Wed, Apr 14, 2021 at 05:26:55PM +0200, Michael Walle wrote:

>>> > It is already possible to read the MAC address via a NVMEM provider. But

>>> > there are boards, esp. with many ports, which only have a base MAC

>>> > address stored. Thus we need to have a way to provide an offset per

>>> > network device.

>>> 

>>> We need to see what Rob thinks of this. There was recently a patchset

>>> to support swapping the byte order of the MAC address in a NVMEM. Rob

>>> said the NVMEM provider should have the property, not the MAC driver.

>>> This does seems more ethernet specific, so maybe it should be an

>>> Ethernet property?

>> 

>> There was also this one[1]. I'm not totally opposed, but don't want to

>> see a never ending addition of properties to try to describe any

>> possible transformation.

> 

> Agreed, that stuff like ASCII MAC address parsing should be done

> elsewhere. But IMHO adding an offset is a pretty common one (as also

> pointed out in [1]). And it also need to be a per ethernet device

> property.


I'm a bit up in the air on this, as I don't know how to proceed here.

To cite Rob from IRC:
   Not really up to me. All the people that care need to come up with
   something flexible enough for common/simple cases and that's not
   going to get extended with every new variation. What I don't want is
   a one-off that's then extended with another one-off.

I already pointed out that this property is per consumer as opposed
to something like endianess swap or parsing a given format. The latter
operates on the nvmem cell.

One random idea is to have a nvmem-cells-transformation (in the lack of
a better name) property for consumers, where you can have some kind of
simple operations like add:
   nvmem-cells-transformation = <NVMEM_ADD 1>
But is that something we really want to have? I'm not sure.

btw. given that there might be other means where a base mac address can
come from in the future, it might make sense to drop the "nvmem-"
prefix and just use "mac-address-offset" (or 
"base-mac-address-offset"?).

> [1] 

> https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20200920095724.8251-4-ansuelsmth@gmail.com/


-michael