From patchwork Sun Oct 2 10:06:49 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philippe Reynes X-Patchwork-Id: 677489 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3sn17X2c7Fz9s5w for ; Sun, 2 Oct 2016 21:07:20 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=lmNMyXNz; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752188AbcJBKHR (ORCPT ); Sun, 2 Oct 2016 06:07:17 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:34283 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750912AbcJBKG7 (ORCPT ); Sun, 2 Oct 2016 06:06:59 -0400 Received: by mail-wm0-f67.google.com with SMTP id b201so4872638wmb.1; Sun, 02 Oct 2016 03:06:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=cEKd0UUWZxB31a+edOPDx1dl+DK19gnnrdRkKjYJcDA=; b=lmNMyXNzp++IXOm1kpEGlsEfaaGD8djZIdUO54ppp1YcV1ZbKGkP9tDX2zijFBcMzw v3l70uISqi7WaEvVARNYeUA3ZYv/Bz9VIT70i+8dqU0XDHfRHblo+9iqy5aA/t83nFE+ 2tupZrsG2DYpW1rJOtgxsfXLlFb29urlePdeX9hB2HXgoVa8wrvxQd5L118GkA89ZFdM vjBHDDXyNx4xeZwfmITyw2a8Rvqw4q9917sO6M3WZvh6hq3ppTDUjOmPk2y65E0vYR+b 7PYhGjyU7h21ttAGiEMRSNlSgiONeOn2eR/Csu4kus89pRibwwd2kGptzasSMDc6iqbe 1DMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=cEKd0UUWZxB31a+edOPDx1dl+DK19gnnrdRkKjYJcDA=; b=Ur2aKoQ4ee0c/jl93W6FTIcCzSx9t9uBFdFU/70fvXR/gGRxwTcIOoWntEIyKTXQ5F 7AVSJDAJanx+gJZdXDB+2UAxUG6g7rFv8JzwfDHA+00DiJQvm4hSgMsl5VUh/UrceUZH 6FaKHU4Ob8m87rCYxRTP66yqXI/JYOwWFwz8ZUMXqqXeqmtdnYTNM6SmbkuQx+MI46O4 TsoYUtauze7ZfYT9FLQvBLd2sCoNhwOqFLg2Oi6YNGA1sRqNichMKqXtUhUWz7N3e1PE 3D8+EaSV0chg6BHBjmJo2qW1yu5UNGrohc4Hf++lLsHT18RgjY34QLqQ0phF76Vmw11X xc2A== X-Gm-Message-State: AA6/9Rn7ZRxrm3PbGRR+0P9/c6/RQmPy3jLZI09f+/bkrfRoXh1GMcPAVAWYqpqbJkslUA== X-Received: by 10.194.175.166 with SMTP id cb6mr10083339wjc.220.1475402817541; Sun, 02 Oct 2016 03:06:57 -0700 (PDT) Received: from localhost.localdomain (bny93-7-88-161-33-221.fbx.proxad.net. [88.161.33.221]) by smtp.gmail.com with ESMTPSA id zz9sm26177590wjb.36.2016.10.02.03.06.56 (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 02 Oct 2016 03:06:57 -0700 (PDT) From: Philippe Reynes To: sebastian.hesselbarth@gmail.com, davem@davemloft.net Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Philippe Reynes Subject: [PATCH 2/2] net: mv643xx_eth: use new api ethtool_{get|set}_link_ksettings Date: Sun, 2 Oct 2016 12:06:49 +0200 Message-Id: <1475402809-11593-2-git-send-email-tremyfr@gmail.com> X-Mailer: git-send-email 1.7.4.4 In-Reply-To: <1475402809-11593-1-git-send-email-tremyfr@gmail.com> References: <1475402809-11593-1-git-send-email-tremyfr@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The ethtool api {get|set}_settings is deprecated. We move this driver to new api {get|set}_link_ksettings. Signed-off-by: Philippe Reynes --- drivers/net/ethernet/marvell/mv643xx_eth.c | 84 +++++++++++++++++---------- 1 files changed, 53 insertions(+), 31 deletions(-) diff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c index ae7370d..18e6bb6 100644 --- a/drivers/net/ethernet/marvell/mv643xx_eth.c +++ b/drivers/net/ethernet/marvell/mv643xx_eth.c @@ -1495,56 +1495,69 @@ static const struct mv643xx_eth_stats mv643xx_eth_stats[] = { }; static int -mv643xx_eth_get_settings_phy(struct mv643xx_eth_private *mp, - struct ethtool_cmd *cmd) +mv643xx_eth_get_link_ksettings_phy(struct mv643xx_eth_private *mp, + struct ethtool_link_ksettings *cmd) { struct net_device *dev = mp->dev; int err; + u32 supported, advertising; err = phy_read_status(dev->phydev); if (err == 0) - err = phy_ethtool_gset(dev->phydev, cmd); + err = phy_ethtool_ksettings_get(dev->phydev, cmd); /* * The MAC does not support 1000baseT_Half. */ - cmd->supported &= ~SUPPORTED_1000baseT_Half; - cmd->advertising &= ~ADVERTISED_1000baseT_Half; + ethtool_convert_link_mode_to_legacy_u32(&supported, + cmd->link_modes.supported); + ethtool_convert_link_mode_to_legacy_u32(&advertising, + cmd->link_modes.advertising); + supported &= ~SUPPORTED_1000baseT_Half; + advertising &= ~ADVERTISED_1000baseT_Half; + ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported, + supported); + ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising, + advertising); return err; } static int -mv643xx_eth_get_settings_phyless(struct mv643xx_eth_private *mp, - struct ethtool_cmd *cmd) +mv643xx_eth_get_link_ksettings_phyless(struct mv643xx_eth_private *mp, + struct ethtool_link_ksettings *cmd) { u32 port_status; + u32 supported, advertising; port_status = rdlp(mp, PORT_STATUS); - cmd->supported = SUPPORTED_MII; - cmd->advertising = ADVERTISED_MII; + supported = SUPPORTED_MII; + advertising = ADVERTISED_MII; switch (port_status & PORT_SPEED_MASK) { case PORT_SPEED_10: - ethtool_cmd_speed_set(cmd, SPEED_10); + cmd->base.speed = SPEED_10; break; case PORT_SPEED_100: - ethtool_cmd_speed_set(cmd, SPEED_100); + cmd->base.speed = SPEED_100; break; case PORT_SPEED_1000: - ethtool_cmd_speed_set(cmd, SPEED_1000); + cmd->base.speed = SPEED_1000; break; default: - cmd->speed = -1; + cmd->base.speed = -1; break; } - cmd->duplex = (port_status & FULL_DUPLEX) ? DUPLEX_FULL : DUPLEX_HALF; - cmd->port = PORT_MII; - cmd->phy_address = 0; - cmd->transceiver = XCVR_INTERNAL; - cmd->autoneg = AUTONEG_DISABLE; - cmd->maxtxpkt = 1; - cmd->maxrxpkt = 1; + cmd->base.duplex = (port_status & FULL_DUPLEX) ? + DUPLEX_FULL : DUPLEX_HALF; + cmd->base.port = PORT_MII; + cmd->base.phy_address = 0; + cmd->base.autoneg = AUTONEG_DISABLE; + + ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.supported, + supported); + ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising, + advertising); return 0; } @@ -1576,19 +1589,23 @@ mv643xx_eth_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) } static int -mv643xx_eth_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) +mv643xx_eth_get_link_ksettings(struct net_device *dev, + struct ethtool_link_ksettings *cmd) { struct mv643xx_eth_private *mp = netdev_priv(dev); if (dev->phydev) - return mv643xx_eth_get_settings_phy(mp, cmd); + return mv643xx_eth_get_link_ksettings_phy(mp, cmd); else - return mv643xx_eth_get_settings_phyless(mp, cmd); + return mv643xx_eth_get_link_ksettings_phyless(mp, cmd); } static int -mv643xx_eth_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) +mv643xx_eth_set_link_ksettings(struct net_device *dev, + const struct ethtool_link_ksettings *cmd) { + struct ethtool_link_ksettings c = *cmd; + u32 advertising; int ret; if (!dev->phydev) @@ -1597,9 +1614,13 @@ mv643xx_eth_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) /* * The MAC does not support 1000baseT_Half. */ - cmd->advertising &= ~ADVERTISED_1000baseT_Half; + ethtool_convert_link_mode_to_legacy_u32(&advertising, + c.link_modes.advertising); + advertising &= ~ADVERTISED_1000baseT_Half; + ethtool_convert_legacy_u32_to_link_mode(c.link_modes.advertising, + advertising); - ret = phy_ethtool_sset(dev->phydev, cmd); + ret = phy_ethtool_ksettings_set(dev->phydev, &c); if (!ret) mv643xx_eth_adjust_link(dev); return ret; @@ -1746,8 +1767,6 @@ static int mv643xx_eth_get_sset_count(struct net_device *dev, int sset) } static const struct ethtool_ops mv643xx_eth_ethtool_ops = { - .get_settings = mv643xx_eth_get_settings, - .set_settings = mv643xx_eth_set_settings, .get_drvinfo = mv643xx_eth_get_drvinfo, .nway_reset = mv643xx_eth_nway_reset, .get_link = ethtool_op_get_link, @@ -1761,6 +1780,8 @@ static const struct ethtool_ops mv643xx_eth_ethtool_ops = { .get_ts_info = ethtool_op_get_ts_info, .get_wol = mv643xx_eth_get_wol, .set_wol = mv643xx_eth_set_wol, + .get_link_ksettings = mv643xx_eth_get_link_ksettings, + .set_link_ksettings = mv643xx_eth_set_link_ksettings, }; @@ -2328,11 +2349,12 @@ static void port_start(struct mv643xx_eth_private *mp) * Perform PHY reset, if there is a PHY. */ if (dev->phydev) { - struct ethtool_cmd cmd; + struct ethtool_link_ksettings cmd; - mv643xx_eth_get_settings(dev, &cmd); + mv643xx_eth_get_link_ksettings(dev, &cmd); phy_init_hw(dev->phydev); - mv643xx_eth_set_settings(dev, &cmd); + mv643xx_eth_set_link_ksettings( + dev, (const struct ethtool_link_ksettings *)&cmd); phy_start(dev->phydev); }