On Tue, Oct 20, 2020 at 09:06:32PM +0000, Chris Packham wrote: > > On 21/10/20 3:51 am, Marek Behun wrote: > > On Tue, 20 Oct 2020 15:15:25 +0100 > > Russell King - ARM Linux admin <li...@armlinux.org.uk> wrote: > > > >> On Tue, Oct 20, 2020 at 04:05:35PM +0200, Andrew Lunn wrote: > >>> On Tue, Oct 20, 2020 at 03:49:40PM +0200, Marek Behun wrote: > >>>> On Tue, 20 Oct 2020 11:15:52 +0100 > >>>> Russell King - ARM Linux admin <li...@armlinux.org.uk> wrote: > >>>> > >>>>> On Tue, Oct 20, 2020 at 04:45:56PM +1300, Chris Packham wrote: > >>>>>> When a port is configured with 'managed = "in-band-status"' don't force > >>>>>> the link up, the switch MAC will detect the link status correctly. > >>>>>> > >>>>>> Signed-off-by: Chris Packham <chris.pack...@alliedtelesis.co.nz> > >>>>>> Reviewed-by: Andrew Lunn <and...@lunn.ch> > >>>>> I thought we had issues with the 88E6390 where the PCS does not > >>>>> update the MAC with its results. Isn't this going to break the > >>>>> 6390? Andrew? > >>>>> > >>>> Russell, I tested this patch on Turris MOX with 6390 on port 9 (cpu > >>>> port) which is configured in devicetree as 2500base-x, in-band-status, > >>>> and it works... > >>>> > >>>> Or will this break on user ports? > >>> User ports is what needs testing, ideally with an SFP. > >>> > >>> There used to be explicit code which when the SERDES reported link up, > >>> the MAC was configured in software with the correct speed etc. With > >>> the move to pcs APIs, it is less obvious how this works now, does it > >>> still software configure the MAC, or do we have the right magic so > >>> that the hardware updates itself. > >> It's still there. The speed/duplex etc are read from the serdes PHY > >> via mv88e6390_serdes_pcs_get_state(). When the link comes up, we > >> pass the negotiated link parameters read from there to the link_up() > >> functions. For ports where mv88e6xxx_port_ppu_updates() returns false > >> (no external PHY) we update the port's speed and duplex setting and > >> (currently, before this patch) force the link up. > >> > >> That was the behaviour before I converted the code, the one that you > >> referred to. I had assumed the code was correct, and _none_ of the > >> speed, duplex, nor link state was propagated from the serdes PCS to > >> the port on the 88E6390 - hence why the code you refer to existed. > >> > > Russell, you are right. > > SFP on 88E6390 does not work with this patch applied. > > So this patch breaks 88E6390. > Thanks for testing. It sounds like maybe if I make > mv88e6xxx_port_ppu_updates() return true for the 6097 in serdes mode I > can avoid the forced link up without affecting the 6390.
Another option would be to make mv88e6xxx_mac_link_up() call a switch specific implementation function, which is probably way cleaner than introducing conditionals on the switch type in functions, and reflects the existing code structure. -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!