| From c3a3258b4fe90301c9b876cc906f028eb61c675a Mon Sep 17 00:00:00 2001 |
| From: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> |
| Date: Wed, 15 Jan 2020 13:02:42 +0900 |
| Subject: [PATCH] net: ethernet: ave: Avoid lockdep warning |
| |
| commit 82d5d6a638cbd12b7dfe8acafd9efd87a656cc06 upstream. |
| |
| 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: 7200f2e3c9e2 ("net: ethernet: ave: Set initial wol state to disabled") |
| Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/ethernet/socionext/sni_ave.c b/drivers/net/ethernet/socionext/sni_ave.c |
| index 51a7b48db4bc..f4924a435fcd 100644 |
| --- a/drivers/net/ethernet/socionext/sni_ave.c |
| +++ b/drivers/net/ethernet/socionext/sni_ave.c |
| @@ -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); |
| |
| @@ -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); |
| @@ -1772,7 +1778,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); |
| -- |
| 2.7.4 |
| |