On 4/5/19 2:20 PM, Heiner Kallweit wrote: > On 05.04.2019 23:16, Heiner Kallweit wrote: >> On 05.04.2019 23:11, Florian Fainelli wrote: >>> On 4/5/19 1:51 PM, Heiner Kallweit wrote: >>>> On 05.04.2019 22:43, Andrew Lunn wrote: >>>>>> Right. BMSR_ESTATEN should not be set on a Fast PHY. Handling of this >>>>>> case didn't change. >>>>>> >>>>>>> A Fast MAC connected to a Giga PHY. The MAC driver will of used >>>>>>> phy_set_max_speed() to indicate its limits. In that case, MII_STAT1000 >>>>>>> does exist and we should report what the peer is advertising. >>>>>>> >>>>>> That's what we're doing now with this patch. >>>>> >>>>> Hi Heiner >>>>> >>>>> What i don't get is why we need to do anything based on the MAC. All >>>>> we need to do is look at BMSR_ESTATEN, and from that decided if we >>>>> should look at MII_STAT1000 or not. When reporting what the peer can >>>>> do, we should not care what the local MAC can do. >>>>> >>>> Do we have a misunderstanding? What you describe is exactly what we're >>>> doing now. BMSR_ESTATEN is read by genphy_read_abilities(). >>>> I just don't want to read BMSR whenever genphy_read_status() is called. >>> >>> You have to read the BMSR to determine the link status anyway, did you >>> mean: have to check BMSR_ESTATEN whenever genphy_read_status() is called? >>> >> I would have to add extra logic to propagate BMSR_ESTATEN from >> genphy_update_link() to genphy_read_status(). BMSR_ESTATEN has a fixed >> value and therefore it's sufficient to read it initially. >> > In addition: BMSR_ESTATEN being set isn't a guarantee yet that the PHY > supports gigabit. Still in MII_ESTATUS the gigabit bits couldn't be set. > A Fast PHY could use some IP which is gigabit-prepared. > I don't know if such a PHY exists, but it would be totally compliant > with C22. >
There are Gigabit PHYs that are being limited in software to 10/100 because the Ethernet MAC is not capable, yet it's easier/cheaper to populate a gigabit capable PHY (Simmon's use case is one of them I believe, but I have come across that too). -- Florian