Skip to content

Commit

Permalink
net: ethernet: ave: Avoid lockdep warning
Browse files Browse the repository at this point in the history
[ Upstream commit 82d5d6a ]

When building with PROVE_LOCKING=y, lockdep shows the following
dump message.

    INFO: trying to register non-static key.
    the code is fine but needs lockdep annotation.
    turning off the locking correctness validator.
     ...

Calling device_set_wakeup_enable() directly occurs this issue,
and it isn't necessary for initialization, so this patch creates
internal function __ave_ethtool_set_wol() and replaces with this
in ave_init() and ave_resume().

Fixes: 7200f2e ("net: ethernet: ave: Set initial wol state to disabled")
Signed-off-by: Kunihiko Hayashi <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
khayash1 authored and gregkh committed Jan 23, 2020
1 parent 698f8c2 commit 591c90e
Showing 1 changed file with 13 additions and 7 deletions.
20 changes: 13 additions & 7 deletions drivers/net/ethernet/socionext/sni_ave.c
Original file line number Diff line number Diff line change
Expand Up @@ -424,16 +424,22 @@ static void ave_ethtool_get_wol(struct net_device *ndev,
phy_ethtool_get_wol(ndev->phydev, wol);
}

static int ave_ethtool_set_wol(struct net_device *ndev,
struct ethtool_wolinfo *wol)
static int __ave_ethtool_set_wol(struct net_device *ndev,
struct ethtool_wolinfo *wol)
{
int ret;

if (!ndev->phydev ||
(wol->wolopts & (WAKE_ARP | WAKE_MAGICSECURE)))
return -EOPNOTSUPP;

ret = phy_ethtool_set_wol(ndev->phydev, wol);
return phy_ethtool_set_wol(ndev->phydev, wol);
}

static int ave_ethtool_set_wol(struct net_device *ndev,
struct ethtool_wolinfo *wol)
{
int ret;

ret = __ave_ethtool_set_wol(ndev, wol);
if (!ret)
device_set_wakeup_enable(&ndev->dev, !!wol->wolopts);

Expand Down Expand Up @@ -1216,7 +1222,7 @@ static int ave_init(struct net_device *ndev)

/* set wol initial state disabled */
wol.wolopts = 0;
ave_ethtool_set_wol(ndev, &wol);
__ave_ethtool_set_wol(ndev, &wol);

if (!phy_interface_is_rgmii(phydev))
phy_set_max_speed(phydev, SPEED_100);
Expand Down Expand Up @@ -1768,7 +1774,7 @@ static int ave_resume(struct device *dev)

ave_ethtool_get_wol(ndev, &wol);
wol.wolopts = priv->wolopts;
ave_ethtool_set_wol(ndev, &wol);
__ave_ethtool_set_wol(ndev, &wol);

if (ndev->phydev) {
ret = phy_resume(ndev->phydev);
Expand Down

0 comments on commit 591c90e

Please sign in to comment.