Re: [PATCH net-next] net: dsa: mv88e6xxx: Add suspend/resume callbacks

From: Miquel Raynal
Date: Tue Jan 22 2019 - 05:04:39 EST


Hi Florian,

Florian Fainelli <f.fainelli@xxxxxxxxx> wrote on Thu, 17 Jan 2019
10:00:46 -0800:

> On 1/17/19 7:50 AM, Miquel Raynal wrote:
> > Hi Andrew, Vivien,
> >
> > Vivien Didelot <vivien.didelot@xxxxxxxxx> wrote on Thu, 17 Jan 2019
> > 10:46:41 -0500:
> >
> >> Hi,
> >>
> >> On Wed, 16 Jan 2019 23:23:29 +0100, Andrew Lunn <andrew@xxxxxxx> wrote:
> >>> Hi Florian
> >>>
> >>>> A possible approach could be to call the port_disable, port_enable
> >>>> callbacks from dsa_slave_suspend() and dsa_slave_resume(), I might have
> >>>> some patches doing that already somewhere.
> >>>
> >>> I expect it is also on Viviens TODO list, since this really could be
> >>> in the core.
> >>
> >> Indeed that is!
> >
> > So, shall I wait for Vivien's patches (adding port_disable/enable()
> > in dsa_slave_suspend/resume()) and keep the driver as-is or do you want
> > me to manually call port_disable/enable() from the mv88e6xxx driver?
>
> Up to you guys, the only thing that I an tell you is that my platform
> loses its register contents during suspend/resume, therefore you must
> make sure the driver re-applies the entire switch configuration,
> identical to how it was prior to suspend. If you need me to test
> something, please holler.

I am not sure to understand what is lost. On my setup ethtool shows
that everything is fine after resume but maybe I fall into a "default"
working case.

When I compare with the two drivers pointed out by Andrew:
* qca8k resume callback:
* enable ports,
* call dsa_switch_resume().
* bcm_sf2 resume callback:
* call dsa_switch_resume(),
* reset the switch,
* refresh rules (Not applicable?),
* enable the PHYs,
* setup the ports,
* configure vlan (Not applicable?),
* mv88e6xxx resume callback:
* reset the switch,
* enable the PHYs,
* setup the ports,
* enable IRQs,
* call dsa_switch_resume().

This looks pretty similar. Maybe the ports setup are set to default
values while I should save some parameters at suspend? I changed a
few parameters (like the MTU or the queue length) but they seem to be
correct across suspend cycles. Can you show a diff of what part of the
configuration is lost?

Anyway, I have little background working with switches, so I might miss
something big.


Thanks,
MiquÃl