On Wed, Aug 04, 2021 at 10:59:54AM +0100, Russell King (Oracle) wrote: > This is why we need to have a clear definition of what the various > RGMII interface types are, how and where they are applied, and make > sure everyone sticks to that. We have this documented in > Documentation/networking/phy.rst. The problem is that I have no clear migration path for the drivers I maintain, like sja1105, and I suspect that others might be in the exact same situation. Currently, if the sja1105 needs to add internal delays in a MAC-to-MAC (fixed-link) setup, it does that based on the phy-mode string. So "rgmii-id" + "fixed-link" means for sja1105 "add RX and TX RGMII internal delays", even though the documentation now says "the MAC should not add the RX or TX delays in this case". There are 2 cases to think about, old driver with new DT blob and new driver with old DT blob. If breakage is involved, I am not actually very interested in doing the migration, because even though the interpretation of the phy-mode string is inconsistent between the phy-handle and fixed-link case (which was deliberate), at least it currently does all that I need it to. I am not even clear what is the expected canonical behavior for a MAC driver. It parses rx-internal-delay-ps and tx-internal-delay-ps, and then what? It treats all "rgmii*" phy-mode strings identically? Or is it an error to have "rgmii-rxid" for phy-mode and non-zero rx-internal-delay-ps? If it is an error, should all MAC drivers check for it? And if it is an error, does it not make migration even more difficult (adding an rx-internal-delay-ps property to a MAC OF node which already uses "rgmii-id" would be preferable to also having to change the "rgmii-id" to "rgmii", because an old kernel might also need to work with that DT blob, and that will ignore the new rx-internal-delay-ps property). Does qca8k_setup_of_rgmii_delay(), a very recent function, even do the right thing with rx-internal-delay-ps, or is it doing the exact opposite of the right thing (it applies rx-internal-delay-ps when in rgmii-id or rgmii-rxid mode).