* [PATCH net 1/2] jme: Do not enable NIC WoL functions on S0
@ 2016-03-05 0:11 cooldavid
2016-03-05 0:11 ` [PATCH net 2/2] jme: Fix device PM wakeup API usage cooldavid
2016-03-07 20:39 ` [PATCH net 1/2] jme: Do not enable NIC WoL functions on S0 David Miller
0 siblings, 2 replies; 4+ messages in thread
From: cooldavid @ 2016-03-05 0:11 UTC (permalink / raw)
To: David Miller; +Cc: Guo-Fu Tseng, linux-netdev, Diego Viola
From: Guo-Fu Tseng <cooldavid@cooldavid.org>
Otherwise it might be back on resume right after going to suspend in
some hardware.
Reported-by: Diego Viola <diego.viola@gmail.com>
Signed-off-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
---
drivers/net/ethernet/jme.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/jme.c b/drivers/net/ethernet/jme.c
index 8adbe8f..74b9c9d 100644
--- a/drivers/net/ethernet/jme.c
+++ b/drivers/net/ethernet/jme.c
@@ -270,11 +270,17 @@ jme_reset_mac_processor(struct jme_adapter *jme)
}
static inline void
-jme_clear_pm(struct jme_adapter *jme)
+jme_clear_pm_enable_wol(struct jme_adapter *jme)
{
jwrite32(jme, JME_PMCS, PMCS_STMASK | jme->reg_pmcs);
}
+static inline void
+jme_clear_pm_disable_wol(struct jme_adapter *jme)
+{
+ jwrite32(jme, JME_PMCS, PMCS_STMASK);
+}
+
static int
jme_reload_eeprom(struct jme_adapter *jme)
{
@@ -1853,7 +1859,7 @@ jme_open(struct net_device *netdev)
struct jme_adapter *jme = netdev_priv(netdev);
int rc;
- jme_clear_pm(jme);
+ jme_clear_pm_disable_wol(jme);
JME_NAPI_ENABLE(jme);
tasklet_init(&jme->linkch_task, jme_link_change_tasklet,
@@ -1929,7 +1935,7 @@ jme_powersave_phy(struct jme_adapter *jme)
jme_set_100m_half(jme);
if (jme->reg_pmcs & (PMCS_LFEN | PMCS_LREN))
jme_wait_link(jme);
- jme_clear_pm(jme);
+ jme_clear_pm_enable_wol(jme);
} else {
jme_phy_off(jme);
}
@@ -2646,7 +2652,6 @@ jme_set_wol(struct net_device *netdev,
if (wol->wolopts & WAKE_MAGIC)
jme->reg_pmcs |= PMCS_MFEN;
- jwrite32(jme, JME_PMCS, jme->reg_pmcs);
device_set_wakeup_enable(&jme->pdev->dev, !!(jme->reg_pmcs));
return 0;
@@ -3172,7 +3177,7 @@ jme_init_one(struct pci_dev *pdev,
jme->mii_if.mdio_read = jme_mdio_read;
jme->mii_if.mdio_write = jme_mdio_write;
- jme_clear_pm(jme);
+ jme_clear_pm_disable_wol(jme);
device_set_wakeup_enable(&pdev->dev, true);
jme_set_phyfifo_5level(jme);
@@ -3304,7 +3309,7 @@ jme_resume(struct device *dev)
if (!netif_running(netdev))
return 0;
- jme_clear_pm(jme);
+ jme_clear_pm_disable_wol(jme);
jme_phy_on(jme);
if (test_bit(JME_FLAG_SSET, &jme->flags))
jme_set_settings(netdev, &jme->old_ecmd);
--
1.8.5.5
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH net 2/2] jme: Fix device PM wakeup API usage
2016-03-05 0:11 [PATCH net 1/2] jme: Do not enable NIC WoL functions on S0 cooldavid
@ 2016-03-05 0:11 ` cooldavid
2016-03-07 20:40 ` David Miller
2016-03-07 20:39 ` [PATCH net 1/2] jme: Do not enable NIC WoL functions on S0 David Miller
1 sibling, 1 reply; 4+ messages in thread
From: cooldavid @ 2016-03-05 0:11 UTC (permalink / raw)
To: David Miller; +Cc: Guo-Fu Tseng, linux-netdev, Diego Viola
From: Guo-Fu Tseng <cooldavid@cooldavid.org>
According to Documentation/power/devices.txt
The driver should not use device_set_wakeup_enable() which is the policy
for user to decide.
Using device_init_wakeup() to initialize dev->power.should_wakeup and
dev->power.can_wakeup on driver initialization.
And use device_may_wakeup() on suspend to decide if WoL function should
be enabled on NIC.
Reported-by: Diego Viola <diego.viola@gmail.com>
Signed-off-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
---
drivers/net/ethernet/jme.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/jme.c b/drivers/net/ethernet/jme.c
index 74b9c9d..3ddf657 100644
--- a/drivers/net/ethernet/jme.c
+++ b/drivers/net/ethernet/jme.c
@@ -1931,7 +1931,7 @@ jme_wait_link(struct jme_adapter *jme)
static void
jme_powersave_phy(struct jme_adapter *jme)
{
- if (jme->reg_pmcs) {
+ if (jme->reg_pmcs && device_may_wakeup(&jme->pdev->dev)) {
jme_set_100m_half(jme);
if (jme->reg_pmcs & (PMCS_LFEN | PMCS_LREN))
jme_wait_link(jme);
@@ -2652,8 +2652,6 @@ jme_set_wol(struct net_device *netdev,
if (wol->wolopts & WAKE_MAGIC)
jme->reg_pmcs |= PMCS_MFEN;
- device_set_wakeup_enable(&jme->pdev->dev, !!(jme->reg_pmcs));
-
return 0;
}
@@ -3178,7 +3176,7 @@ jme_init_one(struct pci_dev *pdev,
jme->mii_if.mdio_write = jme_mdio_write;
jme_clear_pm_disable_wol(jme);
- device_set_wakeup_enable(&pdev->dev, true);
+ device_init_wakeup(&pdev->dev, true);
jme_set_phyfifo_5level(jme);
jme->pcirev = pdev->revision;
--
1.8.5.5
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH net 1/2] jme: Do not enable NIC WoL functions on S0
2016-03-05 0:11 [PATCH net 1/2] jme: Do not enable NIC WoL functions on S0 cooldavid
2016-03-05 0:11 ` [PATCH net 2/2] jme: Fix device PM wakeup API usage cooldavid
@ 2016-03-07 20:39 ` David Miller
1 sibling, 0 replies; 4+ messages in thread
From: David Miller @ 2016-03-07 20:39 UTC (permalink / raw)
To: cooldavid; +Cc: netdev, diego.viola
From: cooldavid@cooldavid.org
Date: Sat, 5 Mar 2016 08:11:55 +0800
> From: Guo-Fu Tseng <cooldavid@cooldavid.org>
>
> Otherwise it might be back on resume right after going to suspend in
> some hardware.
>
> Reported-by: Diego Viola <diego.viola@gmail.com>
> Signed-off-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
Applied.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH net 2/2] jme: Fix device PM wakeup API usage
2016-03-05 0:11 ` [PATCH net 2/2] jme: Fix device PM wakeup API usage cooldavid
@ 2016-03-07 20:40 ` David Miller
0 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2016-03-07 20:40 UTC (permalink / raw)
To: cooldavid; +Cc: netdev, diego.viola
From: cooldavid@cooldavid.org
Date: Sat, 5 Mar 2016 08:11:56 +0800
> From: Guo-Fu Tseng <cooldavid@cooldavid.org>
>
> According to Documentation/power/devices.txt
>
> The driver should not use device_set_wakeup_enable() which is the policy
> for user to decide.
>
> Using device_init_wakeup() to initialize dev->power.should_wakeup and
> dev->power.can_wakeup on driver initialization.
>
> And use device_may_wakeup() on suspend to decide if WoL function should
> be enabled on NIC.
>
> Reported-by: Diego Viola <diego.viola@gmail.com>
> Signed-off-by: Guo-Fu Tseng <cooldavid@cooldavid.org>
Applied.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-03-07 20:40 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-05 0:11 [PATCH net 1/2] jme: Do not enable NIC WoL functions on S0 cooldavid
2016-03-05 0:11 ` [PATCH net 2/2] jme: Fix device PM wakeup API usage cooldavid
2016-03-07 20:40 ` David Miller
2016-03-07 20:39 ` [PATCH net 1/2] jme: Do not enable NIC WoL functions on S0 David Miller
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.