On 10/09/2014 08:24 AM, Sebastian Hesselbarth wrote: > On 10/09/2014 04:47 PM, Thomas Petazzoni wrote: >> Well, I initially remember that the original driver coming from Marvell >> was using the HW PHY stuff, and that I changed that because it would >> not integrate well with the kernel libphy. >> >> A drawback of this is that because the hardware has built-in PHY >> polling which triggers a MAC interrupt when the PHY status changes, they >> typically don't wire up the PHY interrupt. Therefore, since we're not >> able to use the MAC interrupt for PHY event notifications, we rely on >> software PHY polling, which means that link up / link down events take >> a few seconds to be noticed by the kernel. Unfortunately, I don't think >> the hardware allows to use the hardware PHY polling to get link changes >> interrupt, but not let the hardware configure the PHY itself. > > Yeah, but that HW PHY stuff really only works properly with standard > compliant PHYs. In particular, the integrated Marvell PHY in Marvell > Berlin SoCs does not seem to reflect PHY status on BMCR properly /sigh/. > Anyway, I think we can live with PHY polling. > > BTW, one thing I noticed here is that libphy calls adjust_link > over-and-over again although nothing has changed. I guess we can just > add some before/after comparison in the libphy state machine and only > call adjust_link when something has changed. I'll have to look closer > at the state machine first and maybe Florian can comment on this, > too. There's basically nothing built in the generic libphy that would try to limit the number of times the adjust_link() callback is invoked, some changes went in the bcmgenet driver to avoid that, I have yet to see how much of this logic is transferable to the libphy layer. -- Florian -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html