Re: [PATCH v3 1/3] net: dsa: mv88e6xxx: Don't force link when using in-band-status
From: Chris Packham
Date: Tue Oct 20 2020 - 17:06:38 EST
On 21/10/20 3:51 am, Marek Behun wrote:
> On Tue, 20 Oct 2020 15:15:25 +0100
> Russell King - ARM Linux admin <linux@xxxxxxxxxxxxxxx> 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 <linux@xxxxxxxxxxxxxxx> 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.packham@xxxxxxxxxxxxxxxxxxx>
>>>>>> Reviewed-by: Andrew Lunn <andrew@xxxxxxx>
>>>>> 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.