mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Florian Fainelli <f.fainelli@gmail.com>
To: LABBE Corentin <clabbe.montjoie@gmail.com>,
	Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: robh+dt@kernel.org, mark.rutland@arm.com, wens@csie.org,
	linux@armlinux.org.uk, davem@davemloft.net,
	netdev@vger.kernel.org, devicetree@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH 9/9] ethernet: sun8i-emac: add pm_runtime support
Date: Sat, 17 Sep 2016 09:50:21 -0700	[thread overview]
Message-ID: <da20e175-f178-3f63-102f-b84f3ecd5913@gmail.com> (raw)
In-Reply-To: <20160914140304.GA27639@Red>

On 09/14/2016 07:03 AM, LABBE Corentin wrote:
> On Mon, Sep 12, 2016 at 10:44:51PM +0200, Maxime Ripard wrote:
>>> +static int __maybe_unused sun8i_emac_resume(struct platform_device *pdev)
>>> +{
>>> +	struct net_device *ndev = platform_get_drvdata(pdev);
>>> +	struct sun8i_emac_priv *priv = netdev_priv(ndev);
>>> +
>>> +	phy_start(ndev->phydev);
>>> +
>>> +	sun8i_emac_start_tx(ndev);
>>> +	sun8i_emac_start_rx(ndev);
>>> +
>>> +	if (netif_running(ndev))
>>> +		netif_device_attach(ndev);
>>> +
>>> +	netif_start_queue(ndev);
>>> +
>>> +	napi_enable(&priv->napi);
>>> +
>>> +	return 0;
>>> +}
>>
>> The main idea behind the runtime PM hooks is that they bring the
>> device to a working state and shuts it down when it's not needed
>> anymore.
>>
> 
> I expect that the first part (all pm_runtime_xxx) of the patch bring that.
> When the interface is not opened:
> cat /sys/devices/platform/soc/1c30000.ethernet/power/runtime_status 
> suspended

If your interface is not open, it should be in a low power state, only
when it gets open (which means it is used) should you make it
functional, that's pretty much the same thing as the runtime PM
reference count usage here.

I don't see a lot of value for using runtime_pm_* hooks here except
calling into the existing suspend/resume functions that you have defined
already, but then again, the code should be modular enough already in
the driver.

Runtime PM for network devices cannot be used as efficiently as you
would with any kind of host-initiated bus/controller because your device
needs to be able to receive packets without the host's ability to wake
up the device to receive packets, so, with the exception of MDIO (which
is host initiated), everything else besides except packet transmission
(then again, I would not want to wait N ms to bring the interface in a
state where it can now transmit packets, that's terrible for latency) is
pretty much impossible to fully suspend due to its asynchronous nature.
-- 
Florian

  parent reply	other threads:[~2016-09-17 16:50 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-09 12:45 [PATCH v3 0/9] net-next: ethernet: add sun8i-emac driver Corentin Labbe
2016-09-09 12:45 ` [PATCH v3 1/9] " Corentin Labbe
2016-09-09 14:15   ` Andrew Lunn
2016-09-13 13:33     ` LABBE Corentin
2016-09-09 12:45 ` [PATCH v3 2/9] MAINTAINERS: Add myself as maintainer of sun8i-emac Corentin Labbe
2016-09-09 12:45 ` [PATCH v3 3/9] ARM: sun8i: dt: Add DT bindings documentation for Allwinner sun8i-emac Corentin Labbe
2016-09-09 14:04   ` Andrew Lunn
2016-09-12 15:01     ` LABBE Corentin
2016-09-12 15:15       ` Andrew Lunn
2016-09-09 14:17   ` Andrew Lunn
2016-09-13 13:34     ` LABBE Corentin
2016-09-13 14:12       ` Andrew Lunn
2016-09-09 12:45 ` [PATCH v3 4/9] ARM: dts: sun8i-h3: Add dt node for the syscon control module Corentin Labbe
2016-09-12  7:28   ` Maxime Ripard
2016-09-13 13:38     ` LABBE Corentin
2016-09-09 12:45 ` [PATCH v3 5/9] ARM: dts: sun8i-h3: add sun8i-emac ethernet driver Corentin Labbe
2016-09-12  7:29   ` Maxime Ripard
2016-09-14  8:54     ` LABBE Corentin
2016-09-09 12:45 ` [PATCH v3 6/9] ARM: dts: sun8i: Enable sun8i-emac on the Orange PI PC Corentin Labbe
2016-09-09 12:45 ` [PATCH v3 7/9] ARM: dts: sun8i: Enable sun8i-emac on the Orange PI One Corentin Labbe
2016-09-09 12:45 ` [PATCH v3 8/9] ARM: sunxi: Enable sun8i-emac driver on sunxi_defconfig Corentin Labbe
2016-09-12  7:30   ` Maxime Ripard
2016-09-13 13:42     ` LABBE Corentin
2016-09-09 12:45 ` [RFC PATCH 9/9] ethernet: sun8i-emac: add pm_runtime support Corentin Labbe
2016-09-12 20:44   ` Maxime Ripard
2016-09-14 14:03     ` LABBE Corentin
2016-09-17 13:40       ` Maxime Ripard
2016-09-17 16:50       ` Florian Fainelli [this message]
2016-09-10  3:58 ` [PATCH v3 0/9] net-next: ethernet: add sun8i-emac driver David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=da20e175-f178-3f63-102f-b84f3ecd5913@gmail.com \
    --to=f.fainelli@gmail.com \
    --cc=clabbe.montjoie@gmail.com \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=maxime.ripard@free-electrons.com \
    --cc=netdev@vger.kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=wens@csie.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®