[PATCH 0/2] Populate of_node for i.MX netdevs

Primoz Fiser posted 2 patches 2 months, 3 weeks ago
drivers/net/ethernet/freescale/fec_main.c         | 1 +
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 1 +
2 files changed, 2 insertions(+)
[PATCH 0/2] Populate of_node for i.MX netdevs
Posted by Primoz Fiser 2 months, 3 weeks ago
Recently when working on predictable network names for i.MX SoCs, it
was discovered that of_node sysfs properties are missing for FEC and
EQOS interfaces.

Without this, udev is unable to expose the OF_* properties (OF_NAME,
OF_FULLNAME, OF_COMPATIBLE, OF_ALIAS, etc.) and thus we cannot identify
interface based on those properties.

Fix this by populating netdev of_node in respective drivers.

Result:

$ ls -l /sys/class/net/end1/of_node
/sys/class/net/end1/of_node -> 
'../../../../../../../firmware/devicetree/base/soc@0/bus@42800000/ethernet@428a0000'/
$ ls -l /sys/class/net/end0/of_node                                                                              
/sys/class/net/end0/of_node -> 
'../../../../../../../firmware/devicetree/base/soc@0/bus@42800000/ethernet@42890000'/

$ udevadm info /sys/class/net/end0
P: /devices/platform/soc@0/42800000.bus/42890000.ethernet/net/end0
M: end0
R: 0
U: net
I: 2
E: DEVPATH=/devices/platform/soc@0/42800000.bus/42890000.ethernet/net/end0
E: SUBSYSTEM=net
E: OF_NAME=ethernet
E: OF_FULLNAME=/soc@0/bus@42800000/ethernet@42890000
E: OF_COMPATIBLE_0=fsl,imx93-fec
E: OF_COMPATIBLE_1=fsl,imx8mq-fec
E: OF_COMPATIBLE_2=fsl,imx6sx-fec
E: OF_COMPATIBLE_N=3
E: OF_ALIAS_0=ethernet0
E: INTERFACE=end0
E: IFINDEX=2
E: USEC_INITIALIZED=5227083
E: ID_NET_DRIVER=fec
E: ID_NET_NAMING_SCHEME=latest
E: ID_NET_NAME_MAC=enx502df44dbd5e
E: ID_NET_NAME_ONBOARD=end0
E: ID_PATH=platform-42890000.ethernet
E: ID_PATH_TAG=platform-42890000_ethernet
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/end0
E: TAGS=:systemd:
E: CURRENT_TAGS=:systemd:

$ udevadm info /sys/class/net/end1
P: /devices/platform/soc@0/42800000.bus/428a0000.ethernet/net/end1
M: end1
R: 1
U: net
I: 3
E: DEVPATH=/devices/platform/soc@0/42800000.bus/428a0000.ethernet/net/end1
E: SUBSYSTEM=net
E: OF_NAME=ethernet
E: OF_FULLNAME=/soc@0/bus@42800000/ethernet@428a0000
E: OF_COMPATIBLE_0=nxp,imx93-dwmac-eqos
E: OF_COMPATIBLE_1=snps,dwmac-5.10a
E: OF_COMPATIBLE_N=2
E: OF_ALIAS_0=ethernet1
E: INTERFACE=end1
E: IFINDEX=3
E: USEC_INITIALIZED=5370305
E: ID_NET_NAMING_SCHEME=latest
E: ID_NET_NAME_MAC=enx502df44dbd5f
E: ID_NET_NAME_ONBOARD=end1
E: ID_PATH=platform-428a0000.ethernet
E: ID_PATH_TAG=platform-428a0000_ethernet
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/end1
E: TAGS=:systemd:
E: CURRENT_TAGS=:systemd:


Primoz Fiser (2):
  net: fec: fec_probe(): Populate netdev of_node
  net: stmmac: Populate netdev of_node

 drivers/net/ethernet/freescale/fec_main.c         | 1 +
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 1 +
 2 files changed, 2 insertions(+)

-- 
2.34.1
Re: [PATCH 0/2] Populate of_node for i.MX netdevs
Posted by Jakub Kicinski 2 months, 3 weeks ago
On Thu, 17 Jul 2025 11:00:35 +0200 Primoz Fiser wrote:
> Recently when working on predictable network names for i.MX SoCs, it
> was discovered that of_node sysfs properties are missing for FEC and
> EQOS interfaces.
> 
> Without this, udev is unable to expose the OF_* properties (OF_NAME,
> OF_FULLNAME, OF_COMPATIBLE, OF_ALIAS, etc.) and thus we cannot identify
> interface based on those properties.
> 
> Fix this by populating netdev of_node in respective drivers.

Seems legit, but would be good to CC Open Firmware maintainers.

If we want to make propagating the OF linkage a think I think we should
add a flavor of SET_NETDEV_DEV() which does that for the caller.
SET_NETDEV_DEV_OF() ?
-- 
pw-bot: cr
Re: [PATCH 0/2] Populate of_node for i.MX netdevs
Posted by Primoz Fiser 2 months, 2 weeks ago
Hi Jakub,

On 17. 07. 25 16:02, Jakub Kicinski wrote:
> On Thu, 17 Jul 2025 11:00:35 +0200 Primoz Fiser wrote:
>> Recently when working on predictable network names for i.MX SoCs, it
>> was discovered that of_node sysfs properties are missing for FEC and
>> EQOS interfaces.
>>
>> Without this, udev is unable to expose the OF_* properties (OF_NAME,
>> OF_FULLNAME, OF_COMPATIBLE, OF_ALIAS, etc.) and thus we cannot identify
>> interface based on those properties.
>>
>> Fix this by populating netdev of_node in respective drivers.
> 
> Seems legit, but would be good to CC Open Firmware maintainers.

Added Rob & Saravana to CC.

> 
> If we want to make propagating the OF linkage a think I think we should
> add a flavor of SET_NETDEV_DEV() which does that for the caller.
> SET_NETDEV_DEV_OF() ?

OK, so you suggest to add MACRO:

#define SET_NETDEV_DEV_OF(net, np)  ((net)->dev.of_node = (np))

I like the idea too.

Way cleaner especially if others will join later.

Shall we do that already for v2 or as a separate series?

BR,
Primoz


-- 
Primoz Fiser
phone: +386-41-390-545
email: primoz.fiser@norik.com
--
Norik systems d.o.o.
Your embedded software partner
Slovenia, EU
phone: +386-41-540-545
email: info@norik.com