From patchwork Thu Nov 26 11:03:29 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 549018 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 9E06A1402ED for ; Thu, 26 Nov 2015 22:03:51 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=resnulli-us.20150623.gappssmtp.com header.i=@resnulli-us.20150623.gappssmtp.com header.b=I1Dewm7S; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752297AbbKZLDq (ORCPT ); Thu, 26 Nov 2015 06:03:46 -0500 Received: from mail-wm0-f54.google.com ([74.125.82.54]:33265 "EHLO mail-wm0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752096AbbKZLDi (ORCPT ); Thu, 26 Nov 2015 06:03:38 -0500 Received: by wmec201 with SMTP id c201so25795470wme.0 for ; Thu, 26 Nov 2015 03:03:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=resnulli-us.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=1nrcQ0AdNhToDXPObR8+VL5N5NzuLwYQHxqcM46KZrI=; b=I1Dewm7SXAgyNDe2/xfl5PLReRV7j83YsJsC9w+U88d74tytNRXcN/CB3idlCXWEgt Mn3COx6HhMXKMVZp378Mdps3jayFTXcltnPULQqjamqXdbyL4PHoUK0vUHLqbZvtPjmK RdEMsNqMtKVA1JpAeJpz9liXly8rYVrYxfXNFOeaKD163G/w3bDcHpWiB6zBJgCA6jpK oNCRBZ4hY2Ndicun/qPf8S6M2Cgx34e/9iEE3oMijqfIewjyOUxmit5hn4bjzXUrdRNF DyeWwE+2Kto34jrElJ/uDE08Ybickjj/asB6U2qSKFxw8m5SthpWmQOmofUYU89Us19U Yn/A== 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=1nrcQ0AdNhToDXPObR8+VL5N5NzuLwYQHxqcM46KZrI=; b=MLyGklvHENJdx7XsI5OisI1j/S6rCDSDIqfFaTdran8aJ6ZHgSuihtvh6HidLZL61H 3ldQIF50efuPJq6MvT8Iusef5YOU1b37Q93z1uEujmz8TYUi8PniFL2QnuYsFdO0tSL5 Jw/ZFvu07k8Rzxcelvgidohn0mPQXgMXmqjaOqSndrHb9OsOB370BqjgrKMPlC3yScu9 YZlHQqnQmFVJAlrJhJmgWpDq67Wd+xVGEoYOUFSACLeHXDYaoJkVsyjzz+GfyiGHI5qz rftVyJdpaOP7b8T8/5RDXHSvI20F0BnBudOkFdfA8kct4K7d16cnSIFKkHyf7mlG+/me 4FOw== X-Gm-Message-State: ALoCoQnst2mMA6Ly2PgBxrqhNn6T3h3eqrKhM5MG388cCMgat4UnDb4SRDVK+NBv/TNzBE0HaRea X-Received: by 10.194.121.7 with SMTP id lg7mr30203695wjb.90.1448535817653; Thu, 26 Nov 2015 03:03:37 -0800 (PST) Received: from localhost (jirka.pirko.cz. [84.16.102.26]) by smtp.gmail.com with ESMTPSA id 186sm2186975wmv.9.2015.11.26.03.03.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 26 Nov 2015 03:03:37 -0800 (PST) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, idosch@mellanox.com, eladr@mellanox.com, yotamg@mellanox.com Subject: [patch net-next 2/6] mlxsw: spectrum: Add support for port identification Date: Thu, 26 Nov 2015 12:03:29 +0100 Message-Id: <1448535813-14882-3-git-send-email-jiri@resnulli.us> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1448535813-14882-1-git-send-email-jiri@resnulli.us> References: <1448535813-14882-1-git-send-email-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Ido Schimmel Allow a user to flash the port's LED in order to identify it. This is achieved by setting the Management LED Control Register (MLCR). Signed-off-by: Ido Schimmel Signed-off-by: Jiri Pirko --- drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c index 3be4a23..14a9a9f 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c @@ -859,6 +859,29 @@ static void mlxsw_sp_port_get_strings(struct net_device *dev, } } +static int mlxsw_sp_port_set_phys_id(struct net_device *dev, + enum ethtool_phys_id_state state) +{ + struct mlxsw_sp_port *mlxsw_sp_port = netdev_priv(dev); + struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp; + char mlcr_pl[MLXSW_REG_MLCR_LEN]; + bool active; + + switch (state) { + case ETHTOOL_ID_ACTIVE: + active = true; + break; + case ETHTOOL_ID_INACTIVE: + active = false; + break; + default: + return -EOPNOTSUPP; + } + + mlxsw_reg_mlcr_pack(mlcr_pl, mlxsw_sp_port->local_port, active); + return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(mlcr), mlcr_pl); +} + static void mlxsw_sp_port_get_stats(struct net_device *dev, struct ethtool_stats *stats, u64 *data) { @@ -1205,6 +1228,7 @@ static const struct ethtool_ops mlxsw_sp_port_ethtool_ops = { .get_drvinfo = mlxsw_sp_port_get_drvinfo, .get_link = ethtool_op_get_link, .get_strings = mlxsw_sp_port_get_strings, + .set_phys_id = mlxsw_sp_port_set_phys_id, .get_ethtool_stats = mlxsw_sp_port_get_stats, .get_sset_count = mlxsw_sp_port_get_sset_count, .get_settings = mlxsw_sp_port_get_settings,