On Sat, Sep 23, 2023 at 09:28:41AM +0300, Arınç ÜNAL wrote: > On 23.09.2023 01:36, Andrew Lunn wrote: > > > I agree. My patch description here failed to explain the actual issue, > > > which is missing hardware descriptions. Here's what I understand. An > > > ethernet-controller is a MAC. For the MAC to work properly with its link > > > partner, at least one of these must be described: > > > - pointer to a PHY to retrieve link information from the PHY > > > - pointer to a PCS to retrieve link information from the PCS > > > - pointer to an SFP to retrieve link information from the SFP > > > - static link information > > > > You are missing: > > > > - The MAC has firmware driving the PHY, nothing for linux to do. > > > > There are properties in ethernet-controller.yaml the MAC driver would > > however like to use such as local-mac-address, max-frame-size, > > nvmem-cell-names etc. > > This is interesting. This is clearly a hardware difference of the ethernet > controller. > > I believe this fits case 1. There's still an MDIO bus the ethernet > controller uses, there's still a PHY on the MDIO bus which the ethernet > controller uses. Why must there be an MDIO bus? All the bus provides is a communication channel to the PHY. There are PHYs which are memory mapped, or use I2C. SFP are a good example of I2C, which Linux maps to MDIO just to make things simple, but the hardware is I2C. Why must there be a PHY? Maybe it is a Base-K link, i.e. a baseboard link to a switch, or a BMC or something. > The only difference is the firmware of the ethernet > controller controls... What exactly does the firmware control that a Linux > driver would have controlled instead? Just configuring the link settings of > the MAC? A MAC driver implements struct ethtool_ops:::get_link_settings and set_link_settings. For a MAC driver using phylib or phylink they typically then call into phylib or phylink to do the actual work, maybe with a bit of pre-processing in the MAC driver. A MAC driver using firmware would typically make an RPC into the firmware to implement these calls. There is a MAC driver currently under review which does not have a PHY at all. The MAC is directly connected to a switch, all within one IC. The link is always running at 5Gbps, the link is always up. It is physically impossible to connect a PHY, so get_link_settings just returns hard coded values. Andrew