net: mvneta: fix failed to suspend if WOL is enabled
authorJisheng Zhang <jszhang@marvell.com>
Fri, 14 Apr 2017 11:07:32 +0000 (19:07 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 17 Apr 2017 17:46:35 +0000 (13:46 -0400)
commit82960fff09bc394e2a33d5369969410699c04861
tree6413b7c3f7ae50987f7e7b2b94934754bb081cdb
parentcab93af0ed6a12b63ebf0ebca37e6d8efd399114
net: mvneta: fix failed to suspend if WOL is enabled

Recently, suspend/resume and WOL support are added into mvneta driver.
If we enable WOL, then we get some error as below on Marvell BG4CT
platforms during suspend:

[  184.149723] dpm_run_callback(): mdio_bus_suspend+0x0/0x50 returns -16
[  184.149727] PM: Device f7b62004.mdio-mi:00 failed to suspend: error -16

-16 means -EBUSY, phy_suspend() will return -EBUSY if it finds the
device has WOL enabled.

We fix this issue by properly setting the netdev's power.can_wakeup
and power.wakeup, i.e

1. in mvneta_mdio_probe(), call device_set_wakeup_capable() to set
power.can_wakeup if the phy support WOL.

2. in mvneta_ethtool_set_wol(), call device_set_wakeup_enable() to
set power.wakeup if WOL has been successfully enabled in phy.

Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/marvell/mvneta.c