drivers/net/ethernet/freescale/fec_main.c | 1 + drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 1 + 2 files changed, 2 insertions(+)
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
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
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
© 2016 - 2025 Red Hat, Inc.