Re: [net-next RFC PATCH 0/6] Add support for qca8k mdio rw in Ethernet packet
From: Ansuel Smith <ansuelsmth@gmail.com>
Date: 2021-12-07 19:44:41
Also in:
lkml
On Tue, Dec 07, 2021 at 10:49:43AM -0800, Florian Fainelli wrote:
On 12/7/21 7:15 AM, Andrew Lunn wrote:quoted
On Tue, Dec 07, 2021 at 03:59:36PM +0100, Ansuel Smith wrote:quoted
Hi, this is still WIP and currently has some problem but I would love if someone can give this a superficial review and answer to some problem with this. The main reason for this is that we notice some routing problem in the switch and it seems assisted learning is needed. Considering mdio is quite slow due to the indirect write using this Ethernet alternative way seems to be quicker. The qca8k switch supports a special way to pass mdio read/write request using specially crafted Ethernet packet.Oh! Cool! Marvell has this as well, and i suspect a few others. It is something i've wanted to work on for a long long time, but never had the opportunity. This also means that, even if you are focusing on qca8k, please try to think what could be generic, and what should specific to the qca8k. The idea of sending an Ethernet frame and sometime later receiving a reply should be generic and usable for other DSA drivers. The contents of those frames needs to be driver specific. How we hook this into MDIO might also be generic, maybe. I will look at your questions later, but soon.There was a priori attempt from Vivien to add support for mv88e6xxx over RMU frames: https://www.mail-archive.com/netdev@vger.kernel.org/msg298317.html This gets interesting because the switch's control path moves from MDIO to Ethernet and there is not really an "ethernet bus" though we could certainly come up with one. We have mdio-i2c, so maybe we should have mdio-ethernet? -- Florian
I checked that series and I notice that the proposed implementation used a workqueue. The current implementation here use completion and mutex so the transaction is really one command at time and wait for response. Considering most of the time we do read and write operation is seems a bit overkill to use a queue... Also to track the response. Using a single queue simplify the implementation and should be just good. (btw qca8k supports a way to queue packet using a seq int but we don't use it to keep things simple) Is that acceptable? Also I notice in that series mru have some limitation and can be used only for some kind of data... Should we add a way to blacklist some particular reg and use the legacy mdio way? -- Ansuel