lkml.org 
[lkml]   [2020]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.4 089/107] net: ethernet: ave: Avoid lockdep warning
    Date
    From: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>

    [ Upstream commit 82d5d6a638cbd12b7dfe8acafd9efd87a656cc06 ]

    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: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/ethernet/socionext/sni_ave.c | 20 +++++++++++++-------
    1 file changed, 13 insertions(+), 7 deletions(-)

    diff --git a/drivers/net/ethernet/socionext/sni_ave.c b/drivers/net/ethernet/socionext/sni_ave.c
    index 6e984d5a729fe..38d39c4b5ac83 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);
    @@ -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);
    --
    2.20.1
    \
     
     \ /
      Last update: 2020-01-24 15:31    [W:4.059 / U:0.564 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site