Re: [PATCH v2 2/7] can: m_can: Map WoL to device_set_wakeup_enable

From: Markus Schneider-Pargmann
Date: Tue Jul 30 2024 - 04:03:33 EST


Hi,

On Mon, Jul 29, 2024 at 09:37:56PM GMT, Andrew Lunn wrote:
> > > > +static void m_can_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
> > > > +{
> > > > + struct m_can_classdev *cdev = netdev_priv(dev);
> > > > +
> > > > + wol->supported = device_can_wakeup(cdev->dev) ? WAKE_PHY : 0;
> > > > + wol->wolopts = device_may_wakeup(cdev->dev) ? WAKE_PHY : 0;
> > > > +}
> > >
> > > It is nice to see Ethernet WoL mapped to CAN :-)
> > >
> > > So will any activity on the CAN BUS wake the device? Or does it need
> > > to be addresses to this device?
> >
> > Unless you have a special filtering transceiver, which is the CAN
> > equivalent of a PHY, CAN interfaces usually wake up on the first
> > message on the bus. That message is usually lost.
>
> Thanks for the info. WAKE_PHY does seem the most appropriate then.
>
> Reviewed-by: Andrew Lunn <andrew@xxxxxxx>

Thank you.

Just to extend on Marc's explanation specifically for m_can:

For this very low power mode 'Partial-IO' the m_can IP is not active.
The m_can pins will trigger a wakeup for any activity. Also as the SoC
needs to do a normal boot, I would guess there are more messages lost
when waking up from Partial-IO. Other low power modes that will be
upstreamed in the future will not need as much time to be able to
receive CAN messages again.

Best
Markus