From patchwork Wed Nov 23 14:38:33 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yegor Yefremov X-Patchwork-Id: 698343 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 3tP4k70GKRz9s65 for ; Thu, 24 Nov 2016 01:39:58 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlemail.com header.i=@googlemail.com header.b="SCT+y0zK"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S938636AbcKWOjm (ORCPT ); Wed, 23 Nov 2016 09:39:42 -0500 Received: from mail-wj0-f194.google.com ([209.85.210.194]:33051 "EHLO mail-wj0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S936535AbcKWOj3 (ORCPT ); Wed, 23 Nov 2016 09:39:29 -0500 Received: by mail-wj0-f194.google.com with SMTP id kp2so1197070wjc.0; Wed, 23 Nov 2016 06:38:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=Jok+QwMI7In5qrBl5txnEVYTX4Lheucif6jByFZSW2k=; b=SCT+y0zKQXbEb5RXo+xldnSsXZPAyWQ+5rgPjc7XbrL5ObTqY5USD6C1URUU679A1i kVC1QJEvNY3v7DnH8ecE7I2//AwNkFi6G/1+Hf5Ig9JHHxSUT/JxmBfA4G2ZRWNggNrP M6xp3oJY93ikS6nAlcpP53R3fGtzXgQExwPWvH3Qnunrg+FW4A6E85rxKDKdqZIfVBYJ Dk6o0H9PvoxdkwVhqtB2KY4zPdfzX8FUXmsPwZvWpae0H26oX8OB79V7tzC6P+jYsYcl mxJLqJFf/BqDjLHJOkeHLYBqqy+HeLznHmG8XJucy5xR4wlKWmFBnumhJ8t6rSy9zvKt AFuw== 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; bh=Jok+QwMI7In5qrBl5txnEVYTX4Lheucif6jByFZSW2k=; b=BLu13fGfNWzJ67MSpI2OSugrJ8PS6I4u22/wCU1m4r+AOxEZPODAaIyZ96KitDLUCm 7FHGW1aKyTcGPPUsS/YzOcvG26GNh1rhAfhlGAmyFHIm6nN3t0mnloyb3+S2hQuXV5Ym mP42HtMXs9yzo3RYYF0FhxS+FPebf1Q4niIodO17VP6K3wZZYEPo5phbH+f+/ot2tq8M pSe79ZgSF2Ap8CRg0oMLhijcj18A9uDEDJ+M3/o0VhkthuhYJozZtyGT3R2EPSzywb6t Pcf/M16oIxG6DX5jmpiGwYb5u50IqIh5Mm14smtYNoIJAAySMXZ2OuOZsmsaUViAe/tQ PbvA== X-Gm-Message-State: AKaTC01g5+ih6onS5xPiagwfy3lXoK1NZk5iCN5YaCwR07MzBYkwPuQ4P3V5FiRB4Lpa0A== X-Received: by 10.194.23.67 with SMTP id k3mr3620554wjf.103.1479911923632; Wed, 23 Nov 2016 06:38:43 -0800 (PST) Received: from development1.visionsystems.de (mail.visionsystems.de. [213.209.99.202]) by smtp.gmail.com with ESMTPSA id q7sm36726247wjh.9.2016.11.23.06.38.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 23 Nov 2016 06:38:43 -0800 (PST) From: yegorslists@googlemail.com To: netdev@vger.kernel.org Cc: linux-omap@vger.kernel.org, grygorii.strashko@ti.com, mugunthanvnm@ti.com, roszenrami@gmail.com, Yegor Yefremov Subject: [PATCH v2] cpsw: ethtool: add support for getting/setting EEE registers Date: Wed, 23 Nov 2016 15:38:33 +0100 Message-Id: <1479911913-1761-1-git-send-email-yegorslists@googlemail.com> X-Mailer: git-send-email 2.1.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Yegor Yefremov Add the ability to query and set Energy Efficient Ethernet parameters via ethtool for applicable devices. Signed-off-by: Yegor Yefremov Acked-by: Rami Rosen --- Changes: v2: make routines static (Rami Rosen) drivers/net/ethernet/ti/cpsw.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index c6cff3d..c706540 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -2239,6 +2239,30 @@ static int cpsw_set_channels(struct net_device *ndev, return ret; } +static int cpsw_get_eee(struct net_device *ndev, struct ethtool_eee *edata) +{ + struct cpsw_priv *priv = netdev_priv(ndev); + struct cpsw_common *cpsw = priv->cpsw; + int slave_no = cpsw_slave_index(cpsw, priv); + + if (cpsw->slaves[slave_no].phy) + return phy_ethtool_get_eee(cpsw->slaves[slave_no].phy, edata); + else + return -EOPNOTSUPP; +} + +static int cpsw_set_eee(struct net_device *ndev, struct ethtool_eee *edata) +{ + struct cpsw_priv *priv = netdev_priv(ndev); + struct cpsw_common *cpsw = priv->cpsw; + int slave_no = cpsw_slave_index(cpsw, priv); + + if (cpsw->slaves[slave_no].phy) + return phy_ethtool_set_eee(cpsw->slaves[slave_no].phy, edata); + else + return -EOPNOTSUPP; +} + static const struct ethtool_ops cpsw_ethtool_ops = { .get_drvinfo = cpsw_get_drvinfo, .get_msglevel = cpsw_get_msglevel, @@ -2262,6 +2286,8 @@ static const struct ethtool_ops cpsw_ethtool_ops = { .complete = cpsw_ethtool_op_complete, .get_channels = cpsw_get_channels, .set_channels = cpsw_set_channels, + .get_eee = cpsw_get_eee, + .set_eee = cpsw_set_eee, }; static void cpsw_slave_init(struct cpsw_slave *slave, struct cpsw_common *cpsw,