[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <AM6PR04MB39762C1D25DF9A1788C39DC5ECB30@AM6PR04MB3976.eurprd04.prod.outlook.com>
Date: Mon, 25 May 2020 15:20:09 +0000
From: "Madalin Bucur (OSS)" <madalin.bucur@....nxp.com>
To: Vladimir Oltean <olteanv@...il.com>,
"davem@...emloft.net" <davem@...emloft.net>
CC: "andrew@...n.ch" <andrew@...n.ch>,
"f.fainelli@...il.com" <f.fainelli@...il.com>,
"vivien.didelot@...il.com" <vivien.didelot@...il.com>,
"Madalin Bucur (OSS)" <madalin.bucur@....nxp.com>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>
Subject: RE: [PATCH] dpaa_eth: fix usage as DSA master, try 3
> -----Original Message-----
> From: Vladimir Oltean <olteanv@...il.com>
> Sent: Monday, May 25, 2020 12:23 AM
> To: davem@...emloft.net
> Cc: andrew@...n.ch; f.fainelli@...il.com; vivien.didelot@...il.com;
> Madalin Bucur (OSS) <madalin.bucur@....nxp.com>; netdev@...r.kernel.org
> Subject: [PATCH] dpaa_eth: fix usage as DSA master, try 3
>
> From: Vladimir Oltean <vladimir.oltean@....com>
>
> The dpaa-eth driver probes on compatible string for the MAC node, and
> the fman/mac.c driver allocates a dpaa-ethernet platform device that
> triggers the probing of the dpaa-eth net device driver.
>
> All of this is fine, but the problem is that the struct device of the
> dpaa_eth net_device is 2 parents away from the MAC which can be
> referenced via of_node. So of_find_net_device_by_node can't find it, and
> DSA switches won't be able to probe on top of FMan ports.
>
> It would be a bit silly to modify a core function
> (of_find_net_device_by_node) to look for dev->parent->parent->of_node
> just for one driver. We're just 1 step away from implementing full
> recursion.
Changing a netdevice parent to satisfy this DSA assumption can be regarded as
being just as silly. How about changing the DSA assumption, not the generic
of_find_net_device_by_node API?
ACPI support is in the making for these platforms, is DSA going to work
with that?
> Actually there have already been at least 2 previous attempts to make
> this work:
> - Commit a1a50c8e4c24 ("fsl/man: Inherit parent device and of_node")
> - One or more of the patches in "[v3,0/6] adapt DPAA drivers for DSA":
> https://patchwork.ozlabs.org/project/netdev/cover/1508178970-28945-1-
> git-send-email-madalin.bucur@....com/
> (I couldn't really figure out which one was supposed to solve the
> problem and how).
The prior changes were made without access to a DSA setup. Has this patch been
tested working on such a setup?
> Point being, it looks like this is still pretty much a problem today.
> On T1040, the /sys/class/net/eth0 symlink currently points to
>
> ../../devices/platform/ffe000000.soc/ffe400000.fman/ffe4e6000.ethernet/dpa
> a-ethernet.0/net/eth0
>
> which pretty much illustrates the problem. The closest of_node we've got
> is the "fsl,fman-memac" at /soc@...000000/fman@...000/ethernet@...00,
> which is what we'd like to be able to reference from DSA as host port.
>
> For of_find_net_device_by_node to find the eth0 port, we would need the
> parent of the eth0 net_device to not be the "dpaa-ethernet" platform
> device, but to point 1 level higher, aka the "fsl,fman-memac" node
> directly. The new sysfs path would look like this:
>
> ../../devices/platform/ffe000000.soc/ffe400000.fman/ffe4e6000.ethernet/net
> /eth0
>
> And this is exactly what SET_NETDEV_DEV does. It sets the parent of the
> net_device. The new parent has an of_node associated with it, and
> of_dev_node_match already checks for the of_node of the device or of its
> parent.
>
> Fixes: a1a50c8e4c24 ("fsl/man: Inherit parent device and of_node")
> Fixes: c6e26ea8c893 ("dpaa_eth: change device used")
If this is picked up in stable trees, we may need to make sure some other
changes are there to keep things working, i.e. this one may matter:
commit 060ad66f97954fa93ad495542c8a4f1b6c45aa34
Author: Madalin Bucur <madalin.bucur@....com>
Date: Wed Oct 23 12:08:44 2019 +0300
dpaa_eth: change DMA device
The DPAA Ethernet driver is using the FMan MAC as the device for DMA
mapping. This is not actually correct, as the real DMA device is the
FMan port (the FMan Rx port for reception and the FMan Tx port for
transmission). Changing the device used for DMA mapping to the Fman
Rx and Tx port devices.
On each target code base one needs to review the impact.
Speaking of impact, does this change keep the existing udev rules functional?
> Signed-off-by: Vladimir Oltean <vladimir.oltean@....com>
> ---
> drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
> b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
> index 2cd1f8efdfa3..6bfa7575af94 100644
> --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
> +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
> @@ -2914,7 +2914,7 @@ static int dpaa_eth_probe(struct platform_device
> *pdev)
> }
>
> /* Do this here, so we can be verbose early */
> - SET_NETDEV_DEV(net_dev, dev);
> + SET_NETDEV_DEV(net_dev, dev->parent);
> dev_set_drvdata(dev, net_dev);
>
> priv = netdev_priv(net_dev);
> --
> 2.25.1
Powered by blists - more mailing lists