From patchwork Tue Sep 19 17:46:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 815761 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="hcTHdKNh"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xxVhp6msRz9rvt for ; Wed, 20 Sep 2017 03:48:10 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751791AbdISRrJ (ORCPT ); Tue, 19 Sep 2017 13:47:09 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:34896 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751411AbdISRrG (ORCPT ); Tue, 19 Sep 2017 13:47:06 -0400 Received: by mail-wm0-f67.google.com with SMTP id e64so316831wmi.2 for ; Tue, 19 Sep 2017 10:47:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=W85DAWKyfNdwjNJAUuJityxqY41yKLCqBMOyWUnC+eI=; b=hcTHdKNhTxocX7OrVU15pmQZlRFVlNCDwp/Q/oTqPqnS+BCsr8NpRUCT1jWgRrHs9N 1xLo+yCmoyqxq1HM7VSKp4srUv6nq6GPThy3Js4jAX4QlVyum/wfgcr6WJabi5Pmh9An 5Ndvbtm+HRTSOjMpPThdMGWmH7t8DBszA4eJKMQefOwixYU1tS6TKHu2ng02a0Bt4wYh kk8KFhgFHzKuqZtoMP2I0ZFGCkUTg3wQoQWrbWgd6+1O/jnAAVvc82q8bbhvCucjWI+0 Zx0iRVHTGaZ6KXzun77yVu17OqVvs/GzeIOLSR8LrwqHstzylwEJjzbDry8xx1NDVE7U pGkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=W85DAWKyfNdwjNJAUuJityxqY41yKLCqBMOyWUnC+eI=; b=dBsydSpEnPCP3/+m/1fqqsnj2v/lMr7HZvL0cogSLYaSCnQeM+E/XtkuOxc215uZAf EcQE7b7yKCKf+ss0nYjBfV3n7VmeNuZF/0JOdqBRdrZNbpzvtcGIscGQDKx9qGIXlOFX T6uDN5x6Dd6Dp1bANpCRgzniU+Q0vnKaa5T7TN4RZ5tmgcE70baZXvGAgQCdyWhOjgTK qSx7XCLKIoFD8ELYSOoVDPDUoKSOUujY9YhSPsiWqQbBbqc0NUzcZtNNZC+vuacqv+gA MYD/zB6n8uvGGH0BhjrcYTWnrt/P8aAAM1wGZeoYxKeXxDIGd2gOnE7FjfoTjZM1vsgI 5Ngw== X-Gm-Message-State: AHPjjUitW23AB6793u5ffHB15VDAgm1jrI/EJ6rUCz9QbpSOEqE0abWy stk+F+kMJZjpww7vJFIWFZ1fydSv X-Google-Smtp-Source: AOwi7QASIj21Xm5Ib8JzjUx/7VEyeKODPH0ZqKwzfzYUZb5E5IBQdBbksB9dp5xQLXKmLFS4FaHuMA== X-Received: by 10.28.6.9 with SMTP id 9mr1633633wmg.37.1505843225191; Tue, 19 Sep 2017 10:47:05 -0700 (PDT) Received: from fainelli-desktop.broadcom.com ([192.19.255.250]) by smtp.gmail.com with ESMTPSA id q19sm11543124wrb.17.2017.09.19.10.47.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Sep 2017 10:47:04 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, Florian Fainelli Subject: [PATCH net-next v3 01/12] net: dsa: b53: Remove is_cpu_port() Date: Tue, 19 Sep 2017 10:46:43 -0700 Message-Id: <20170919174654.2122-2-f.fainelli@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170919174654.2122-1-f.fainelli@gmail.com> References: <20170919174654.2122-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This is not used anywhere, so remove it. Reviewed-by: Vivien Didelot Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_priv.h | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/net/dsa/b53/b53_priv.h b/drivers/net/dsa/b53/b53_priv.h index 01bd8cbe9a3f..7528b22aeb03 100644 --- a/drivers/net/dsa/b53/b53_priv.h +++ b/drivers/net/dsa/b53/b53_priv.h @@ -186,11 +186,6 @@ static inline int is58xx(struct b53_device *dev) #define B53_CPU_PORT_25 5 #define B53_CPU_PORT 8 -static inline int is_cpu_port(struct b53_device *dev, int port) -{ - return dev->cpu_port; -} - struct b53_device *b53_switch_alloc(struct device *base, const struct b53_io_ops *ops, void *priv); From patchwork Tue Sep 19 17:46:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 815760 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="n9OaIEsD"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xxVhh5X6Bz9rvt for ; Wed, 20 Sep 2017 03:48:04 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751799AbdISRrM (ORCPT ); Tue, 19 Sep 2017 13:47:12 -0400 Received: from mail-wr0-f196.google.com ([209.85.128.196]:33068 "EHLO mail-wr0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751778AbdISRrJ (ORCPT ); Tue, 19 Sep 2017 13:47:09 -0400 Received: by mail-wr0-f196.google.com with SMTP id b9so192236wra.0 for ; Tue, 19 Sep 2017 10:47:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=aCbNXxhUKoLA5L2hW2eEKrZj9AJEhNmFr9u8aLA/d/E=; b=n9OaIEsDnMlFQQpE/Os5cbbXXFjqRdoR2ejRAdU/yEEppRQV5aYphWbeyPXNxogC/I ROfItYiIRK0YcScaAmtdgPkdjbkDR9bFv5MUIvptgYx6k/5HHWbbaDWlFm8t5z4xxEz/ bSHD8jY8+zqyyGOH6BuJH1ox07q0h6zD9uT3zaW3yCssxt9m9YdYjusTTh6gK9whAgmk KELOJspeD2TLiKyER5AQHdGDjewp0J+TsOEghKlh6DHQOJ5f9OurOj7dlqzEYSJDTbTU JzsatAbXnaZEb833bn8VKANMq0lBttPYsc+L260ES6/gJkaayIDx+NhPpIJLKUlwnLXU Tg8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=aCbNXxhUKoLA5L2hW2eEKrZj9AJEhNmFr9u8aLA/d/E=; b=i1vcXL0/cLQKy7RFYjvYgS1hxHE69SJjnuhlANp2ChbXJMQx0URrWDRmsjbpOikFUf 2LoMt63ambP8swWM8+2uaiHQZfvJMVq7IsxApDvRymJeUxrRIfWHT+8SDX2snt4Kd+hn StkalG92JIs0ejXQmLtC0fmCBYSYZDxtCRFnMEZ5ruvftQasuYc4UdTt4WlQVsC8D3z1 baRkIV+bsdbzECljcL3WnJnGZC1qtsVBgotaOGY/yroLAMw1xZQNNnqkS+sDLoT5sRJ7 XYqjWypTSHI46LElCA8qe4P5Ht45aUXeZChpHmSoaeE5OrwVOFC0AxlSl1QHbNSlCn3I 9PAg== X-Gm-Message-State: AHPjjUjrgNiZI1Q8uWcbe3KmzzdSVCc6MPQhueyCJP0pa+tyPDBjKyS/ 0ZuUzwkhRRG+j+piipyPP+sWubMm X-Google-Smtp-Source: AOwi7QCOMy2g9PJSGzzblHzFlnMv90H9nrX/HZkw8Uqyy98gTqJyjjgXtngnZSKqqELGYoNiLGQ5xQ== X-Received: by 10.223.161.23 with SMTP id o23mr2313927wro.103.1505843227731; Tue, 19 Sep 2017 10:47:07 -0700 (PDT) Received: from fainelli-desktop.broadcom.com ([192.19.255.250]) by smtp.gmail.com with ESMTPSA id q19sm11543124wrb.17.2017.09.19.10.47.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Sep 2017 10:47:06 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, Florian Fainelli Subject: [PATCH net-next v3 02/12] net: dsa: b53: Make b53_enable_cpu_port() take a port argument Date: Tue, 19 Sep 2017 10:46:44 -0700 Message-Id: <20170919174654.2122-3-f.fainelli@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170919174654.2122-1-f.fainelli@gmail.com> References: <20170919174654.2122-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In preparation for future changes allowing the configuring of multiple CPU ports, make b53_enable_cpu_port() take a port argument. Reviewed-by: Vivien Didelot Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index 274f3679f33d..d8bc54cfcfbe 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -538,19 +538,18 @@ static void b53_disable_port(struct dsa_switch *ds, int port, b53_write8(dev, B53_CTRL_PAGE, B53_PORT_CTRL(port), reg); } -static void b53_enable_cpu_port(struct b53_device *dev) +static void b53_enable_cpu_port(struct b53_device *dev, int port) { - unsigned int cpu_port = dev->cpu_port; u8 port_ctrl; /* BCM5325 CPU port is at 8 */ - if ((is5325(dev) || is5365(dev)) && cpu_port == B53_CPU_PORT_25) - cpu_port = B53_CPU_PORT; + if ((is5325(dev) || is5365(dev)) && port == B53_CPU_PORT_25) + port = B53_CPU_PORT; port_ctrl = PORT_CTRL_RX_BCST_EN | PORT_CTRL_RX_MCST_EN | PORT_CTRL_RX_UCST_EN; - b53_write8(dev, B53_CTRL_PAGE, B53_PORT_CTRL(cpu_port), port_ctrl); + b53_write8(dev, B53_CTRL_PAGE, B53_PORT_CTRL(port), port_ctrl); } static void b53_enable_mib(struct b53_device *dev) @@ -820,7 +819,7 @@ static int b53_setup(struct dsa_switch *ds) if (BIT(port) & ds->enabled_port_mask) b53_enable_port(ds, port, NULL); else if (dsa_is_cpu_port(ds, port)) - b53_enable_cpu_port(dev); + b53_enable_cpu_port(dev, port); else b53_disable_port(ds, port, NULL); } From patchwork Tue Sep 19 17:46:45 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 815750 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="mhYfEEte"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xxVgm3jQkz9sBZ for ; Wed, 20 Sep 2017 03:47:16 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751803AbdISRrN (ORCPT ); Tue, 19 Sep 2017 13:47:13 -0400 Received: from mail-wr0-f195.google.com ([209.85.128.195]:35492 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751365AbdISRrL (ORCPT ); Tue, 19 Sep 2017 13:47:11 -0400 Received: by mail-wr0-f195.google.com with SMTP id n64so184160wrb.2 for ; Tue, 19 Sep 2017 10:47:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=LzQkd2eWrREQGByv9+TQrFIlf65/ypkN9GUzfC/nFP0=; b=mhYfEEteH/LQyrpQ/YeuIs4tFtXbPwshegIQFn5aAcpK9kSoHC9uDEh3mVdlRY+7iC pH67x/8A8ZyldI81vZjlxOivBuXQnsLtMgvHWfoBrUkX3kPL0vQ8vv96EjmyjwTQlxet PUIS44k9GGpqj5OVLRiSai9DNCCRSyZ4cAM7OlB50V0jI89W06XVUGXcno0MGHXsAwCI eGjUHJEQaiUI7NlO9uB/fE2F3S+NGTRKTz78nuc24PE5LdaQ4DG/4GTGVof/3IPa6+m1 z3mwUcUvMoCEutYgQu7cER+0gBD56xw8u9Fbq5bmT0I1ZID9HiJKAaGMQ59GlFMrkB99 qPaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=LzQkd2eWrREQGByv9+TQrFIlf65/ypkN9GUzfC/nFP0=; b=uQ8vE6PE6HuGcWK/2hPXwPxxl2zZ3xOJQ8/zkCQEpB1707FeyTG1VeM79P+OImf/NV xMIYp7l+Sk4i+YIjfXBV+XuL5rHClUhYkL6svvpAIHTTfcJsUkFDipwL7j4bM9kazk/z Cp8Fsgd0f7VbtJlGp/H3zCSeC4EF837Re9usXdJs+hz1demFHABU/dzhJ9L2Jw4cnO2V l7hy9fxmZKSJ8kTqeMT/JlvLhIi2EodL4RX+T2ZRlx9Txeh4y+btIw1q/Qwh4J09Q9hF tfzdho9bHFk4L1eY5U2Yp57Xmvp5SxAA56hn9ee9jYhxyvbSQ7Jdea9fqHEqMCUoaZRT dRlA== X-Gm-Message-State: AHPjjUiuWTAdMC1ZRDMf3DKyXVcdf4BOpQY/12KnoNbxCav/BDzLBUF9 evUQa+TOB6Km+SFDD7OA8u32mx1I X-Google-Smtp-Source: AOwi7QAB0fV+xV4XX4WZYKFMY2fpYT5noX4VvTYiXkYEyDvShc2fgcusGTff0oy2MDoHFcyvHBbyKA== X-Received: by 10.223.150.171 with SMTP id u40mr2232761wrb.201.1505843230080; Tue, 19 Sep 2017 10:47:10 -0700 (PDT) Received: from fainelli-desktop.broadcom.com ([192.19.255.250]) by smtp.gmail.com with ESMTPSA id q19sm11543124wrb.17.2017.09.19.10.47.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Sep 2017 10:47:09 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, Florian Fainelli Subject: [PATCH net-next v3 03/12] net: dsa: b53: Defer port enabling to calling port_enable Date: Tue, 19 Sep 2017 10:46:45 -0700 Message-Id: <20170919174654.2122-4-f.fainelli@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170919174654.2122-1-f.fainelli@gmail.com> References: <20170919174654.2122-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org There is no need to configure the enabled ports once in b53_setup() and then a second time around when dsa_switch_ops::port_enable is called, just do it when port_enable is called which is better in terms of power consumption and correctness. Reviewed-by: Vivien Didelot Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index d8bc54cfcfbe..3297af6aab8a 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -815,12 +815,13 @@ static int b53_setup(struct dsa_switch *ds) if (ret) dev_err(ds->dev, "failed to apply configuration\n"); + /* Configure IMP/CPU port, disable unused ports. Enabled + * ports will be configured with .port_enable + */ for (port = 0; port < dev->num_ports; port++) { - if (BIT(port) & ds->enabled_port_mask) - b53_enable_port(ds, port, NULL); - else if (dsa_is_cpu_port(ds, port)) + if (dsa_is_cpu_port(ds, port)) b53_enable_cpu_port(dev, port); - else + else if (!(BIT(port) & ds->enabled_port_mask)) b53_disable_port(ds, port, NULL); } From patchwork Tue Sep 19 17:46:46 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 815751 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="GfLHOwiV"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xxVgr6z90z9sPk for ; Wed, 20 Sep 2017 03:47:20 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751811AbdISRrR (ORCPT ); Tue, 19 Sep 2017 13:47:17 -0400 Received: from mail-wm0-f68.google.com ([74.125.82.68]:37316 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751365AbdISRrO (ORCPT ); Tue, 19 Sep 2017 13:47:14 -0400 Received: by mail-wm0-f68.google.com with SMTP id f4so304246wmh.4 for ; Tue, 19 Sep 2017 10:47:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=tvrISfpzigYJ0EjxY1DQzoyWhUBwOUa/uMGHPfEJwqw=; b=GfLHOwiV1aZn9VDhBvGyzTJ/CQObjuaz32KoZbS3076+fnGXjPgmyNdfQrWaEWw5Iy XymbnNeqiV60LfVDI9XbPhcKqcJyDgGsrqmJK4Uz+F1BAWKK9jjq5o54MnmSzyl98qxf 1k6ADhXKEZ6pTKTMFcT1zouIE3IJ3cKWQmKvXsqUjGFvegrCTJMde3CRcU3eYmw+SwSq mclwUoe2G220o6+vZbipPJggpo5UlbmH9nnRqxCvMWwhU85SBV/E+MF2recCjCQ8cmFK 5MPTT8KMGWZpE8pDw6OEkY6nq0/P2p1Yv16M10YvzYQX7pixi2ynSPDIveVnZObSC1vI f51Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=tvrISfpzigYJ0EjxY1DQzoyWhUBwOUa/uMGHPfEJwqw=; b=JXSjKsCKlvCdR01JR21m3emd/z6zB0G+8vPk7NvdW1g9EMRfmM+iZRAbEbsnVXj6nR sNMDx1ZC61F4xfV0n9c5BXHvZfChvGfZncaREEaT7esWOotD8MR+pHMTtG7Jv/cWEKei +Vhvo81oETigts3Tgdc0f6FPI196DFGNdRRT2ZB5aZ+/pfJlegfG1/wwmBlUk17K9pzH Mqe7f3rRybEZrTcgPnqqxxexagWQQ2c5V62vAwgqvH4SB1tZZjntd8e1LKts7ImMiW6i Fi2A2sanZTrmWoFGudPzOo5VsmjxtNLiWzvQVTmrLjoECGOql1BU4gC15cw67d0PbYsp UR7g== X-Gm-Message-State: AHPjjUiCMxxrT/+RVilyYOesMF3DeOmyXKjNtWO+mJcGVIT4mRFJcfWt vakauzq9HE+qRUxcNkYIHpym1m7b X-Google-Smtp-Source: AOwi7QAt9aiYiFCleutbbNDkQ9sSbpytUAF2sRH7CMGHNGC0NA0JlVz0CcOVezhEPICnJvcV/oYY1A== X-Received: by 10.28.103.195 with SMTP id b186mr1884243wmc.86.1505843232796; Tue, 19 Sep 2017 10:47:12 -0700 (PDT) Received: from fainelli-desktop.broadcom.com ([192.19.255.250]) by smtp.gmail.com with ESMTPSA id q19sm11543124wrb.17.2017.09.19.10.47.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Sep 2017 10:47:11 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, Florian Fainelli Subject: [PATCH net-next v3 04/12] net: dsa: bcm_sf2: Defer port enabling to calling port_enable Date: Tue, 19 Sep 2017 10:46:46 -0700 Message-Id: <20170919174654.2122-5-f.fainelli@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170919174654.2122-1-f.fainelli@gmail.com> References: <20170919174654.2122-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org There is no need to configure the enabled ports once in bcm_sf2_sw_setup() and then a second time around when dsa_switch_ops::port_enable is called, just do it when port_enable is called which is better in terms of power consumption and correctness. Reviewed-by: Vivien Didelot Signed-off-by: Florian Fainelli --- drivers/net/dsa/bcm_sf2.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c index d7b53d53c116..8acbd17bc1fd 100644 --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c @@ -890,14 +890,11 @@ static int bcm_sf2_sw_setup(struct dsa_switch *ds) struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); unsigned int port; - /* Enable all valid ports and disable those unused */ + /* Disable unused ports and configure IMP port */ for (port = 0; port < priv->hw_params.num_ports; port++) { - /* IMP port receives special treatment */ - if ((1 << port) & ds->enabled_port_mask) - bcm_sf2_port_setup(ds, port, NULL); - else if (dsa_is_cpu_port(ds, port)) + if (dsa_is_cpu_port(ds, port)) bcm_sf2_imp_setup(ds, port); - else + else if (!((1 << port) & ds->enabled_port_mask)) bcm_sf2_port_disable(ds, port, NULL); } From patchwork Tue Sep 19 17:46:47 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 815759 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="iSgoYKVi"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xxVhd2X3hz9rvt for ; Wed, 20 Sep 2017 03:48:01 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751580AbdISRr7 (ORCPT ); Tue, 19 Sep 2017 13:47:59 -0400 Received: from mail-wm0-f66.google.com ([74.125.82.66]:33476 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751804AbdISRrQ (ORCPT ); Tue, 19 Sep 2017 13:47:16 -0400 Received: by mail-wm0-f66.google.com with SMTP id m127so325530wmm.0 for ; Tue, 19 Sep 2017 10:47:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ZWcvBn5C2IzoSjdOtgu0IH0e44F9wLq51uLX0Y8QLjs=; b=iSgoYKViECd0u2LxGwrtew8z6beRmYfHHxrswmCzvpI6r/8h9Q6QIsiD/m2iSad6fd 4E6O0P3kJI03MzOaOnXs+wO5o1Zh8MchOhP69peVmAsXdAcD1r7TFfsn5fV/sBODpuaN rH9u4zklPu1kN7BPXg7DF83QK3ynEENHpg8QLMjfLMZEErvhuKi7EL8IqzfRptBt/JKn DLjoBm5hjqVVaAsHInbdwpgtkpvkwmei80XGqD2NamwGk/MJdGJoclSLOaxbJqpVv/NE f9vVHFL4SpwyrZoWcNQK4hWGONZbKqxm/eszHDhV3MORbI/X85bM8sbWL3ZzilS7sYfy dLjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ZWcvBn5C2IzoSjdOtgu0IH0e44F9wLq51uLX0Y8QLjs=; b=s3JFVYSJVNLyS87T0Os8qTTBVkXQTp6N6FXEzc8dcSZ6oOsKYilVhmzk7PwUg5gdSe 6RFwlK+s8J/+0mbOeRLwzNvWI2KNP44u1dX6z6Ve4K4X015HhZVkk0vzmhfmfRZsWc+G +wICnVv2GX5+lc2lBUqPp+j/TqfMdY1+jWF+cVdOEOeoQ+2+9xgBJB/KMZ/ZLWX0Gbil 3UK4BMhz0HBtxSdVyonKESF+2y9DCts84vmQARKRR+ju1VIPUiL2Aedxy98hQCCO0zcS 5Y52Xp6upWR6HQEnW/SaWSOtUF7inNjaA51kXX2UORG+027ikpZz/kB3L2gFXVvM0jEI Al9Q== X-Gm-Message-State: AHPjjUjaY9a/VySQlcrP4e6hX1kcn8/OEqi2ASJ7sLTBRPJYW7UuiauT YTEQPsByIrx6HirAp+5E2CmDw+17 X-Google-Smtp-Source: AOwi7QC40e806AzAd2VHaIY7/edZ7jWjYtJCSK33D3V715uxyVrmGbNGRxjYOWsRo2Yh5xxodxErnw== X-Received: by 10.28.212.148 with SMTP id l142mr1562134wmg.99.1505843235040; Tue, 19 Sep 2017 10:47:15 -0700 (PDT) Received: from fainelli-desktop.broadcom.com ([192.19.255.250]) by smtp.gmail.com with ESMTPSA id q19sm11543124wrb.17.2017.09.19.10.47.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Sep 2017 10:47:14 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, Florian Fainelli Subject: [PATCH net-next v3 05/12] net: dsa: b53: Use a macro to define I/O operations Date: Tue, 19 Sep 2017 10:46:47 -0700 Message-Id: <20170919174654.2122-6-f.fainelli@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170919174654.2122-1-f.fainelli@gmail.com> References: <20170919174654.2122-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Instead of repeating the same pattern: acquire mutex, read/write, release mutex, define a macro: b53_build_op() which takes the type (read|write), I/O size, and value (scalar or pointer). This helps with fixing bugs that could exist (e.g: missing barrier, lock etc.). Reviewed-by: Vivien Didelot Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_priv.h | 133 +++++++---------------------------------- 1 file changed, 22 insertions(+), 111 deletions(-) diff --git a/drivers/net/dsa/b53/b53_priv.h b/drivers/net/dsa/b53/b53_priv.h index 7528b22aeb03..5bebe97900e8 100644 --- a/drivers/net/dsa/b53/b53_priv.h +++ b/drivers/net/dsa/b53/b53_priv.h @@ -199,119 +199,30 @@ static inline void b53_switch_remove(struct b53_device *dev) dsa_unregister_switch(dev->ds); } -static inline int b53_read8(struct b53_device *dev, u8 page, u8 reg, u8 *val) -{ - int ret; - - mutex_lock(&dev->reg_mutex); - ret = dev->ops->read8(dev, page, reg, val); - mutex_unlock(&dev->reg_mutex); - - return ret; -} - -static inline int b53_read16(struct b53_device *dev, u8 page, u8 reg, u16 *val) -{ - int ret; - - mutex_lock(&dev->reg_mutex); - ret = dev->ops->read16(dev, page, reg, val); - mutex_unlock(&dev->reg_mutex); - - return ret; -} - -static inline int b53_read32(struct b53_device *dev, u8 page, u8 reg, u32 *val) -{ - int ret; - - mutex_lock(&dev->reg_mutex); - ret = dev->ops->read32(dev, page, reg, val); - mutex_unlock(&dev->reg_mutex); - - return ret; -} - -static inline int b53_read48(struct b53_device *dev, u8 page, u8 reg, u64 *val) -{ - int ret; - - mutex_lock(&dev->reg_mutex); - ret = dev->ops->read48(dev, page, reg, val); - mutex_unlock(&dev->reg_mutex); - - return ret; +#define b53_build_op(type_op_size, val_type) \ +static inline int b53_##type_op_size(struct b53_device *dev, u8 page, \ + u8 reg, val_type val) \ +{ \ + int ret; \ + \ + mutex_lock(&dev->reg_mutex); \ + ret = dev->ops->type_op_size(dev, page, reg, val); \ + mutex_unlock(&dev->reg_mutex); \ + \ + return ret; \ } -static inline int b53_read64(struct b53_device *dev, u8 page, u8 reg, u64 *val) -{ - int ret; - - mutex_lock(&dev->reg_mutex); - ret = dev->ops->read64(dev, page, reg, val); - mutex_unlock(&dev->reg_mutex); - - return ret; -} - -static inline int b53_write8(struct b53_device *dev, u8 page, u8 reg, u8 value) -{ - int ret; - - mutex_lock(&dev->reg_mutex); - ret = dev->ops->write8(dev, page, reg, value); - mutex_unlock(&dev->reg_mutex); - - return ret; -} - -static inline int b53_write16(struct b53_device *dev, u8 page, u8 reg, - u16 value) -{ - int ret; - - mutex_lock(&dev->reg_mutex); - ret = dev->ops->write16(dev, page, reg, value); - mutex_unlock(&dev->reg_mutex); - - return ret; -} - -static inline int b53_write32(struct b53_device *dev, u8 page, u8 reg, - u32 value) -{ - int ret; - - mutex_lock(&dev->reg_mutex); - ret = dev->ops->write32(dev, page, reg, value); - mutex_unlock(&dev->reg_mutex); - - return ret; -} - -static inline int b53_write48(struct b53_device *dev, u8 page, u8 reg, - u64 value) -{ - int ret; - - mutex_lock(&dev->reg_mutex); - ret = dev->ops->write48(dev, page, reg, value); - mutex_unlock(&dev->reg_mutex); - - return ret; -} - -static inline int b53_write64(struct b53_device *dev, u8 page, u8 reg, - u64 value) -{ - int ret; - - mutex_lock(&dev->reg_mutex); - ret = dev->ops->write64(dev, page, reg, value); - mutex_unlock(&dev->reg_mutex); - - return ret; -} +b53_build_op(read8, u8 *); +b53_build_op(read16, u16 *); +b53_build_op(read32, u32 *); +b53_build_op(read48, u64 *); +b53_build_op(read64, u64 *); + +b53_build_op(write8, u8); +b53_build_op(write16, u16); +b53_build_op(write32, u32); +b53_build_op(write48, u64); +b53_build_op(write64, u64); struct b53_arl_entry { u8 port; From patchwork Tue Sep 19 17:46:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 815752 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="dWbBM3kL"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xxVgy32Hgz9sPm for ; Wed, 20 Sep 2017 03:47:26 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751825AbdISRrV (ORCPT ); Tue, 19 Sep 2017 13:47:21 -0400 Received: from mail-wm0-f68.google.com ([74.125.82.68]:34242 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751365AbdISRrT (ORCPT ); Tue, 19 Sep 2017 13:47:19 -0400 Received: by mail-wm0-f68.google.com with SMTP id i131so319973wma.1 for ; Tue, 19 Sep 2017 10:47:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=k1VovRKk7XMVSKrtS+hqOIq2c6FWstyfw2eVx/WQtK0=; b=dWbBM3kLOeXKi+KVy+4SPTXUtIvv7HLtO2NGJmdWMs6S3dOP6Bp08Utq+QIqHlWlwl qlVXAOoIr31KG2jCBfb37ZuJKENi/lRbd/CsiKhfbca29szQzPaHI76JjoHgLBRJZfSz RGGre4ymQ23rmP4XA/ZsyeLSW2iA2aeSJWjFnRi7lPXp3HfMWHZdgxPloQjRwdjYtHJw m+fFmm3KU4xnbAVfz7x1EsmnHbvPz7Sr/qdqCDOZjN+QLveWQlHmGR87pE15BIIv4OZC B8MGTMQFtVwNM1voLLSrXgvTXHIDpST7WRhDyEkGyryW/253UjHeaBzFnIGfBUZ8mmzm JRFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=k1VovRKk7XMVSKrtS+hqOIq2c6FWstyfw2eVx/WQtK0=; b=ofUWe1ubufsnmHzgijGgdstVu0rNdcT11HZbn/KEYf1vB2pW6wnf2LQPuoxBknxyoU pckOFHUShLQ2wJYSUo+jmoj9jVn4PxTgkd/wdEi30TxI+jqLUQ5iz5mEZ6wxuZSLxQdv 95cTrwYaxeD2YdTGOPJ0/ZtqAw47TsDjTJCjkV9nyZLLbAfRBVG/3FikAOYL8DTEZ5Il 6q5mYrCJC/O55Nv0R5T66uuzdlEmUHJf2oG6YoyRHfShM/j4yNNcFrHmt4TqxHKziUXG pqJkSLw6lN/81IA3w0ksNhnq9uiOeBYNxziqqotVdAbu6QGUDtqjLPDkNFyhVJEZ21U1 cAUw== X-Gm-Message-State: AHPjjUgvbtaCzJTtOC8O6PCF8s3Yud8KNqXXGI73kjFrYTx8dI8MSmUl wKDZFJlWq3FJiZJn8lU2U4utnuWK X-Google-Smtp-Source: AOwi7QDXgyv21884f2Q25nKK0NgodgRepE2OoeuhNb3t5KAnvV7dtGwMTFLlCdih7u+7RK2n0dhaLQ== X-Received: by 10.28.155.146 with SMTP id d140mr1887802wme.4.1505843237393; Tue, 19 Sep 2017 10:47:17 -0700 (PDT) Received: from fainelli-desktop.broadcom.com ([192.19.255.250]) by smtp.gmail.com with ESMTPSA id q19sm11543124wrb.17.2017.09.19.10.47.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Sep 2017 10:47:16 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, Florian Fainelli Subject: [PATCH net-next v3 06/12] net: dsa: b53: Move Broadcom header setup to b53 Date: Tue, 19 Sep 2017 10:46:48 -0700 Message-Id: <20170919174654.2122-7-f.fainelli@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170919174654.2122-1-f.fainelli@gmail.com> References: <20170919174654.2122-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The code to enable Broadcom tags/headers is largely switch independent, and in preparation for enabling it for multiple devices with b53, move the code we have in bcm_sf2.c to b53_common.c Reviewed-by: Vivien Didelot Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 47 ++++++++++++++++++++++++++++++++++++++++ drivers/net/dsa/b53/b53_priv.h | 1 + drivers/net/dsa/b53/b53_regs.h | 7 ++++++ drivers/net/dsa/bcm_sf2.c | 43 ++---------------------------------- drivers/net/dsa/bcm_sf2_regs.h | 8 ------- 5 files changed, 57 insertions(+), 49 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index 3297af6aab8a..aa2187c71ea5 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -538,6 +538,53 @@ static void b53_disable_port(struct dsa_switch *ds, int port, b53_write8(dev, B53_CTRL_PAGE, B53_PORT_CTRL(port), reg); } +void b53_brcm_hdr_setup(struct dsa_switch *ds, int port) +{ + struct b53_device *dev = ds->priv; + u8 hdr_ctl, val; + u16 reg; + + /* Resolve which bit controls the Broadcom tag */ + switch (port) { + case 8: + val = BRCM_HDR_P8_EN; + break; + case 7: + val = BRCM_HDR_P7_EN; + break; + case 5: + val = BRCM_HDR_P5_EN; + break; + default: + val = 0; + break; + } + + /* Enable Broadcom tags for IMP port */ + b53_read8(dev, B53_MGMT_PAGE, B53_BRCM_HDR, &hdr_ctl); + hdr_ctl |= val; + b53_write8(dev, B53_MGMT_PAGE, B53_BRCM_HDR, hdr_ctl); + + /* Registers below are only accessible on newer devices */ + if (!is58xx(dev)) + return; + + /* Enable reception Broadcom tag for CPU TX (switch RX) to + * allow us to tag outgoing frames + */ + b53_read16(dev, B53_MGMT_PAGE, B53_BRCM_HDR_RX_DIS, ®); + reg &= ~BIT(port); + b53_write16(dev, B53_MGMT_PAGE, B53_BRCM_HDR_RX_DIS, reg); + + /* Enable transmission of Broadcom tags from the switch (CPU RX) to + * allow delivering frames to the per-port net_devices + */ + b53_read16(dev, B53_MGMT_PAGE, B53_BRCM_HDR_TX_DIS, ®); + reg &= ~BIT(port); + b53_write16(dev, B53_MGMT_PAGE, B53_BRCM_HDR_TX_DIS, reg); +} +EXPORT_SYMBOL(b53_brcm_hdr_setup); + static void b53_enable_cpu_port(struct b53_device *dev, int port) { u8 port_ctrl; diff --git a/drivers/net/dsa/b53/b53_priv.h b/drivers/net/dsa/b53/b53_priv.h index 5bebe97900e8..77102f685da0 100644 --- a/drivers/net/dsa/b53/b53_priv.h +++ b/drivers/net/dsa/b53/b53_priv.h @@ -309,5 +309,6 @@ int b53_mirror_add(struct dsa_switch *ds, int port, struct dsa_mall_mirror_tc_entry *mirror, bool ingress); void b53_mirror_del(struct dsa_switch *ds, int port, struct dsa_mall_mirror_tc_entry *mirror); +void b53_brcm_hdr_setup(struct dsa_switch *ds, int port); #endif diff --git a/drivers/net/dsa/b53/b53_regs.h b/drivers/net/dsa/b53/b53_regs.h index e5c86d44667a..5e8b8e31fee8 100644 --- a/drivers/net/dsa/b53/b53_regs.h +++ b/drivers/net/dsa/b53/b53_regs.h @@ -210,6 +210,7 @@ #define B53_BRCM_HDR 0x03 #define BRCM_HDR_P8_EN BIT(0) /* Enable tagging on port 8 */ #define BRCM_HDR_P5_EN BIT(1) /* Enable tagging on port 5 */ +#define BRCM_HDR_P7_EN BIT(2) /* Enable tagging on port 7 */ /* Mirror capture control register (16 bit) */ #define B53_MIR_CAP_CTL 0x10 @@ -249,6 +250,12 @@ /* Revision ID register (8 bit) */ #define B53_REV_ID 0x40 +/* Broadcom header RX control (16 bit) */ +#define B53_BRCM_HDR_RX_DIS 0x60 + +/* Broadcom header TX control (16 bit) */ +#define B53_BRCM_HDR_TX_DIS 0x62 + /************************************************************************* * ARL Access Page Registers *************************************************************************/ diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c index 8acbd17bc1fd..49cb51223f70 100644 --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c @@ -60,45 +60,6 @@ static void bcm_sf2_imp_vlan_setup(struct dsa_switch *ds, int cpu_port) } } -static void bcm_sf2_brcm_hdr_setup(struct bcm_sf2_priv *priv, int port) -{ - u32 reg, val; - - /* Resolve which bit controls the Broadcom tag */ - switch (port) { - case 8: - val = BRCM_HDR_EN_P8; - break; - case 7: - val = BRCM_HDR_EN_P7; - break; - case 5: - val = BRCM_HDR_EN_P5; - break; - default: - val = 0; - break; - } - - /* Enable Broadcom tags for IMP port */ - reg = core_readl(priv, CORE_BRCM_HDR_CTRL); - reg |= val; - core_writel(priv, reg, CORE_BRCM_HDR_CTRL); - - /* Enable reception Broadcom tag for CPU TX (switch RX) to - * allow us to tag outgoing frames - */ - reg = core_readl(priv, CORE_BRCM_HDR_RX_DIS); - reg &= ~(1 << port); - core_writel(priv, reg, CORE_BRCM_HDR_RX_DIS); - - /* Enable transmission of Broadcom tags from the switch (CPU RX) to - * allow delivering frames to the per-port net_devices - */ - reg = core_readl(priv, CORE_BRCM_HDR_TX_DIS); - reg &= ~(1 << port); - core_writel(priv, reg, CORE_BRCM_HDR_TX_DIS); -} static void bcm_sf2_imp_setup(struct dsa_switch *ds, int port) { @@ -138,7 +99,7 @@ static void bcm_sf2_imp_setup(struct dsa_switch *ds, int port) reg |= i << (PRT_TO_QID_SHIFT * i); core_writel(priv, reg, CORE_PORT_TC2_QOS_MAP_PORT(port)); - bcm_sf2_brcm_hdr_setup(priv, port); + b53_brcm_hdr_setup(ds, port); /* Force link status for IMP port */ reg = core_readl(priv, offset); @@ -247,7 +208,7 @@ static int bcm_sf2_port_setup(struct dsa_switch *ds, int port, /* Enable Broadcom tags for that port if requested */ if (priv->brcm_tag_mask & BIT(port)) - bcm_sf2_brcm_hdr_setup(priv, port); + b53_brcm_hdr_setup(ds, port); /* Configure Traffic Class to QoS mapping, allow each priority to map * to a different queue number diff --git a/drivers/net/dsa/bcm_sf2_regs.h b/drivers/net/dsa/bcm_sf2_regs.h index 49695fcc2ea8..788361ad68a0 100644 --- a/drivers/net/dsa/bcm_sf2_regs.h +++ b/drivers/net/dsa/bcm_sf2_regs.h @@ -205,16 +205,8 @@ enum bcm_sf2_reg_offs { #define CORE_IMP0_PRT_ID 0x0804 -#define CORE_BRCM_HDR_CTRL 0x0080c -#define BRCM_HDR_EN_P8 (1 << 0) -#define BRCM_HDR_EN_P5 (1 << 1) -#define BRCM_HDR_EN_P7 (1 << 2) - #define CORE_RST_MIB_CNT_EN 0x0950 -#define CORE_BRCM_HDR_RX_DIS 0x0980 -#define CORE_BRCM_HDR_TX_DIS 0x0988 - #define CORE_ARLA_VTBL_RWCTRL 0x1600 #define ARLA_VTBL_CMD_WRITE 0 #define ARLA_VTBL_CMD_READ 1 From patchwork Tue Sep 19 17:46:49 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 815753 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="nYuJKa42"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xxVgz6CKQz9sPk for ; Wed, 20 Sep 2017 03:47:27 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751832AbdISRrX (ORCPT ); Tue, 19 Sep 2017 13:47:23 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:33498 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751815AbdISRrV (ORCPT ); Tue, 19 Sep 2017 13:47:21 -0400 Received: by mail-wm0-f65.google.com with SMTP id m127so325688wmm.0 for ; Tue, 19 Sep 2017 10:47:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=C1YxtWeozYSwn7h9C+bKIXNKwfiCD5/6358FWU5MpuY=; b=nYuJKa4211fDt5Xg1NVuQiS1RtE0z9FS7EB74IN7hV2gbXq7Mbrvz9yax/ke5uBpIw FVmM0dsRMJWPotHfbL/HVA4A+yyuYgpNEFu8w5ajLBlyQRXba4oEq90xUH3yYQPF4bFo gWF5SF9QBwoMP2F5AXfOH/N4x1Mr0RLcv9T2Se9w8HtMVpxy8b7a+d0KzlzhnVybLyTx h89fiShjisgsjRvvj0ni8V6oB79/dl49NAdeamya/PQGdGrK6NP51SJgj52jrUR6TLvi 7oJCus+IVdeS4cgI+Issz4St6hUcnT7xxhsPRGewsFhVQh6yGAnWAyjknrG21tV0QbCn 7OzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=C1YxtWeozYSwn7h9C+bKIXNKwfiCD5/6358FWU5MpuY=; b=AZcql+szAiDQrT+PszUOYdhoevzXeKlAqDSLqu0AA7SuO20OR3vU1bYgtMvNvzMQ6z 3LfwjgYnptjUHI/KaibDd9jnsp68OCa+YJh/KLtx/ZBCcExUVakRpV1jzJmklFvHkoI2 dL6Msn6Fx+uP95DqmX+yqU1HQQL5pWzWZ1Q8kY30eSYcQpjjwdCb+iTpo1ywembwgXA6 n/eajfTM38mAp9evd/K7VTjgllT0f8Hf6OxQkocf3PQigSRNbo4tLhkhe/cdZVpp3jVO J6Livup6DJVHdxq8Dbgv7gSRNQZO4SFR/31Qz0NtJsI28NL/b1slfiJtHk3r+4k2qNoU aM6Q== X-Gm-Message-State: AHPjjUimTSvLCL4lBCgSAHKdjqW/2OHvF7FNGuzYL7WmNpGrK07oVveX Go0KDou9D8pU8N0mnB8dYE43vvJO X-Google-Smtp-Source: AOwi7QDWSX659XfwJOlYFuBVBV9phrjuqqBfHvllzmydQ2Sskj0JWK3USv9uT7lifikZXBwjrXQVzg== X-Received: by 10.28.203.4 with SMTP id b4mr927234wmg.17.1505843239742; Tue, 19 Sep 2017 10:47:19 -0700 (PDT) Received: from fainelli-desktop.broadcom.com ([192.19.255.250]) by smtp.gmail.com with ESMTPSA id q19sm11543124wrb.17.2017.09.19.10.47.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Sep 2017 10:47:18 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, Florian Fainelli Subject: [PATCH net-next v3 07/12] net: dsa: b53: Define EEE register page Date: Tue, 19 Sep 2017 10:46:49 -0700 Message-Id: <20170919174654.2122-8-f.fainelli@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170919174654.2122-1-f.fainelli@gmail.com> References: <20170919174654.2122-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In preparation for migrating the EEE code from bcm_sf2 to b53, define the full EEE register page and offsets within that page. Reviewed-by: Vivien Didelot Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_regs.h | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/drivers/net/dsa/b53/b53_regs.h b/drivers/net/dsa/b53/b53_regs.h index 5e8b8e31fee8..2a9f421680aa 100644 --- a/drivers/net/dsa/b53/b53_regs.h +++ b/drivers/net/dsa/b53/b53_regs.h @@ -50,6 +50,9 @@ /* Jumbo Frame Registers */ #define B53_JUMBO_PAGE 0x40 +/* EEE Control Registers Page */ +#define B53_EEE_PAGE 0x92 + /* CFP Configuration Registers Page */ #define B53_CFP_PAGE 0xa1 @@ -472,6 +475,44 @@ #define JMS_MAX_SIZE 9724 /************************************************************************* + * EEE Configuration Page Registers + *************************************************************************/ + +/* EEE Enable control register (16 bit) */ +#define B53_EEE_EN_CTRL 0x00 + +/* EEE LPI assert status register (16 bit) */ +#define B53_EEE_LPI_ASSERT_STS 0x02 + +/* EEE LPI indicate status register (16 bit) */ +#define B53_EEE_LPI_INDICATE 0x4 + +/* EEE Receiving idle symbols status register (16 bit) */ +#define B53_EEE_RX_IDLE_SYM_STS 0x6 + +/* EEE Pipeline timer register (32 bit) */ +#define B53_EEE_PIP_TIMER 0xC + +/* EEE Sleep timer Gig register (32 bit) */ +#define B53_EEE_SLEEP_TIMER_GIG(i) (0x10 + 4 * (i)) + +/* EEE Sleep timer FE register (32 bit) */ +#define B53_EEE_SLEEP_TIMER_FE(i) (0x34 + 4 * (i)) + +/* EEE Minimum LP timer Gig register (32 bit) */ +#define B53_EEE_MIN_LP_TIMER_GIG(i) (0x58 + 4 * (i)) + +/* EEE Minimum LP timer FE register (32 bit) */ +#define B53_EEE_MIN_LP_TIMER_FE(i) (0x7c + 4 * (i)) + +/* EEE Wake timer Gig register (16 bit) */ +#define B53_EEE_WAKE_TIMER_GIG(i) (0xa0 + 2 * (i)) + +/* EEE Wake timer FE register (16 bit) */ +#define B53_EEE_WAKE_TIMER_FE(i) (0xb2 + 2 * (i)) + + +/************************************************************************* * CFP Configuration Page Registers *************************************************************************/ From patchwork Tue Sep 19 17:46:50 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 815754 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="W+OYpDYR"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xxVh070tNz9sPm for ; Wed, 20 Sep 2017 03:47:28 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751614AbdISRr0 (ORCPT ); Tue, 19 Sep 2017 13:47:26 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:33509 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751365AbdISRrX (ORCPT ); Tue, 19 Sep 2017 13:47:23 -0400 Received: by mail-wm0-f65.google.com with SMTP id m127so325768wmm.0 for ; Tue, 19 Sep 2017 10:47:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=RIYmw6CIfZytBhdYNIckk3vIC+0Lq32CO8lBOMEpynA=; b=W+OYpDYRHpWDFQCylLeOw50BpvNKS4WmSKKZrcciHodEjl807q5ZFZKB6Ap59L2PX8 EqQnog2UGdP50ytbb++5tpkUUgIqCeaVy2o2DxQKw48HHka8Ly3aMZRtwmNBh1EoSe/R 9hDX6EbBHAfYArCXuUFJ4sYwHRea07U+3PnrmbhmIg54CO/lc/zanpLmmN1nmTgOstdZ kE7E1jfv6yHYj7mTQWHGw78QevImJVpuzEx2no+5aNsNV0jF94CWi2XyREww9c/9+FDn fYCfMtCR7jRvTwbT6kcawrvMLqd6KWt+41UsABmkF98HMmYGfQYTgr2XLzs/Z2lN8bau cuvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=RIYmw6CIfZytBhdYNIckk3vIC+0Lq32CO8lBOMEpynA=; b=LWo7LuPoDGqjFrBgEJ0TXcJQ3EEBmSU7WkRGJYgKPYmLuj+e79NJY9Ln2Uq74zxpSK MHrbry8Oe5e4AEIW+1lWd1pRUU7B0W8L4kBSqDVCQtibwo9T1Nh5NmWOlCcKHexFaKxe Bc+4ensL/MFyP8ILO5NMFz7QeyzjLkbYqTzly1uoXd1ExmH0M7W0x+9MVoI+pRANZpY1 khUqYY1wghTN7xgjJLLBSz3hKvdZeZp75UV79u10NBegEUOhn8i9+6yrRhoGJJAPG86g qn09cT+PWtUEweMEWCfKQIA24P93fscmDqpDV6xXfy3GmI4ZJhnV98Zovs8JQzjLNZCc zqfQ== X-Gm-Message-State: AHPjjUivscTz7HXqQL6h8DSMBpgqhK0UOFwZ1mZfJS+j4hyfxIuNs/+c nLpHYW5vHjOCVEGcibATLNCa0XBg X-Google-Smtp-Source: AOwi7QBSPk6NUrXAu9Xyvwh6OolgdTbo0nhy3Od07ZDt6SBSFncZVGRm72pEXtDm6P5m/U2uSUPthg== X-Received: by 10.28.6.9 with SMTP id 9mr1634200wmg.37.1505843242187; Tue, 19 Sep 2017 10:47:22 -0700 (PDT) Received: from fainelli-desktop.broadcom.com ([192.19.255.250]) by smtp.gmail.com with ESMTPSA id q19sm11543124wrb.17.2017.09.19.10.47.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Sep 2017 10:47:21 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, Florian Fainelli Subject: [PATCH net-next v3 08/12] net: dsa: b53: Move EEE functions to b53 Date: Tue, 19 Sep 2017 10:46:50 -0700 Message-Id: <20170919174654.2122-9-f.fainelli@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170919174654.2122-1-f.fainelli@gmail.com> References: <20170919174654.2122-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Move the bcm_sf2 EEE-related functions to the b53 driver because this is shared code amongst Gigabit capable switch, only 5325 and 5365 are too old to support that. Reviewed-by: Vivien Didelot Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 63 ++++++++++++++++++++++++++++++++++++++ drivers/net/dsa/b53/b53_priv.h | 5 +++ drivers/net/dsa/bcm_sf2.c | 66 ++++------------------------------------ drivers/net/dsa/bcm_sf2.h | 2 -- drivers/net/dsa/bcm_sf2_regs.h | 3 -- 5 files changed, 74 insertions(+), 65 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index aa2187c71ea5..491e4ffa8a0e 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1531,6 +1531,69 @@ void b53_mirror_del(struct dsa_switch *ds, int port, } EXPORT_SYMBOL(b53_mirror_del); +void b53_eee_enable_set(struct dsa_switch *ds, int port, bool enable) +{ + struct b53_device *dev = ds->priv; + u16 reg; + + b53_read16(dev, B53_EEE_PAGE, B53_EEE_EN_CTRL, ®); + if (enable) + reg |= BIT(port); + else + reg &= ~BIT(port); + b53_write16(dev, B53_EEE_PAGE, B53_EEE_EN_CTRL, reg); +} +EXPORT_SYMBOL(b53_eee_enable_set); + + +/* Returns 0 if EEE was not enabled, or 1 otherwise + */ +int b53_eee_init(struct dsa_switch *ds, int port, struct phy_device *phy) +{ + int ret; + + ret = phy_init_eee(phy, 0); + if (ret) + return 0; + + b53_eee_enable_set(ds, port, true); + + return 1; +} +EXPORT_SYMBOL(b53_eee_init); + +int b53_get_mac_eee(struct dsa_switch *ds, int port, struct ethtool_eee *e) +{ + struct b53_device *dev = ds->priv; + struct ethtool_eee *p = &dev->ports[port].eee; + u16 reg; + + if (is5325(dev) || is5365(dev)) + return -EOPNOTSUPP; + + b53_read16(dev, B53_EEE_PAGE, B53_EEE_LPI_INDICATE, ®); + e->eee_enabled = p->eee_enabled; + e->eee_active = !!(reg & BIT(port)); + + return 0; +} +EXPORT_SYMBOL(b53_get_mac_eee); + +int b53_set_mac_eee(struct dsa_switch *ds, int port, struct ethtool_eee *e) +{ + struct b53_device *dev = ds->priv; + struct ethtool_eee *p = &dev->ports[port].eee; + + if (is5325(dev) || is5365(dev)) + return -EOPNOTSUPP; + + p->eee_enabled = e->eee_enabled; + b53_eee_enable_set(ds, port, e->eee_enabled); + + return 0; +} +EXPORT_SYMBOL(b53_set_mac_eee); + static const struct dsa_switch_ops b53_switch_ops = { .get_tag_protocol = b53_get_tag_protocol, .setup = b53_setup, diff --git a/drivers/net/dsa/b53/b53_priv.h b/drivers/net/dsa/b53/b53_priv.h index 77102f685da0..aabe80eab25d 100644 --- a/drivers/net/dsa/b53/b53_priv.h +++ b/drivers/net/dsa/b53/b53_priv.h @@ -70,6 +70,7 @@ enum { struct b53_port { u16 vlan_ctl_mask; + struct ethtool_eee eee; }; struct b53_vlan { @@ -310,5 +311,9 @@ int b53_mirror_add(struct dsa_switch *ds, int port, void b53_mirror_del(struct dsa_switch *ds, int port, struct dsa_mall_mirror_tc_entry *mirror); void b53_brcm_hdr_setup(struct dsa_switch *ds, int port); +void b53_eee_enable_set(struct dsa_switch *ds, int port, bool enable); +int b53_eee_init(struct dsa_switch *ds, int port, struct phy_device *phy); +int b53_get_mac_eee(struct dsa_switch *ds, int port, struct ethtool_eee *e); +int b53_set_mac_eee(struct dsa_switch *ds, int port, struct ethtool_eee *e); #endif diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c index 49cb51223f70..4e8ef4c07eab 100644 --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c @@ -107,19 +107,6 @@ static void bcm_sf2_imp_setup(struct dsa_switch *ds, int port) core_writel(priv, reg, offset); } -static void bcm_sf2_eee_enable_set(struct dsa_switch *ds, int port, bool enable) -{ - struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); - u32 reg; - - reg = core_readl(priv, CORE_EEE_EN_CTRL); - if (enable) - reg |= 1 << port; - else - reg &= ~(1 << port); - core_writel(priv, reg, CORE_EEE_EN_CTRL); -} - static void bcm_sf2_gphy_enable_set(struct dsa_switch *ds, bool enable) { struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); @@ -256,8 +243,8 @@ static int bcm_sf2_port_setup(struct dsa_switch *ds, int port, bcm_sf2_imp_vlan_setup(ds, cpu_port); /* If EEE was enabled, restore it */ - if (priv->port_sts[port].eee.eee_enabled) - bcm_sf2_eee_enable_set(ds, port, true); + if (priv->dev->ports[port].eee.eee_enabled) + b53_eee_enable_set(ds, port, true); return 0; } @@ -292,47 +279,6 @@ static void bcm_sf2_port_disable(struct dsa_switch *ds, int port, core_writel(priv, reg, CORE_MEM_PSM_VDD_CTRL); } -/* Returns 0 if EEE was not enabled, or 1 otherwise - */ -static int bcm_sf2_eee_init(struct dsa_switch *ds, int port, - struct phy_device *phy) -{ - int ret; - - ret = phy_init_eee(phy, 0); - if (ret) - return 0; - - bcm_sf2_eee_enable_set(ds, port, true); - - return 1; -} - -static int bcm_sf2_sw_get_mac_eee(struct dsa_switch *ds, int port, - struct ethtool_eee *e) -{ - struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); - struct ethtool_eee *p = &priv->port_sts[port].eee; - u32 reg; - - reg = core_readl(priv, CORE_EEE_LPI_INDICATE); - e->eee_enabled = p->eee_enabled; - e->eee_active = !!(reg & (1 << port)); - - return 0; -} - -static int bcm_sf2_sw_set_mac_eee(struct dsa_switch *ds, int port, - struct ethtool_eee *e) -{ - struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); - struct ethtool_eee *p = &priv->port_sts[port].eee; - - p->eee_enabled = e->eee_enabled; - bcm_sf2_eee_enable_set(ds, port, e->eee_enabled); - - return 0; -} static int bcm_sf2_sw_indir_rw(struct bcm_sf2_priv *priv, int op, int addr, int regnum, u16 val) @@ -567,7 +513,7 @@ static void bcm_sf2_sw_adjust_link(struct dsa_switch *ds, int port, struct phy_device *phydev) { struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); - struct ethtool_eee *p = &priv->port_sts[port].eee; + struct ethtool_eee *p = &priv->dev->ports[port].eee; u32 id_mode_dis = 0, port_mode; const char *str = NULL; u32 reg, offset; @@ -649,7 +595,7 @@ static void bcm_sf2_sw_adjust_link(struct dsa_switch *ds, int port, core_writel(priv, reg, offset); if (!phydev->is_pseudo_fixed_link) - p->eee_enabled = bcm_sf2_eee_init(ds, port, phydev); + p->eee_enabled = b53_eee_init(ds, port, phydev); } static void bcm_sf2_sw_fixed_link_update(struct dsa_switch *ds, int port, @@ -978,8 +924,8 @@ static const struct dsa_switch_ops bcm_sf2_ops = { .set_wol = bcm_sf2_sw_set_wol, .port_enable = bcm_sf2_port_setup, .port_disable = bcm_sf2_port_disable, - .get_mac_eee = bcm_sf2_sw_get_mac_eee, - .set_mac_eee = bcm_sf2_sw_set_mac_eee, + .get_mac_eee = b53_get_mac_eee, + .set_mac_eee = b53_set_mac_eee, .port_bridge_join = b53_br_join, .port_bridge_leave = b53_br_leave, .port_stp_state_set = b53_br_set_stp_state, diff --git a/drivers/net/dsa/bcm_sf2.h b/drivers/net/dsa/bcm_sf2.h index 02c499f9c56b..1922e027ff59 100644 --- a/drivers/net/dsa/bcm_sf2.h +++ b/drivers/net/dsa/bcm_sf2.h @@ -48,8 +48,6 @@ struct bcm_sf2_hw_params { struct bcm_sf2_port_status { unsigned int link; - - struct ethtool_eee eee; }; struct bcm_sf2_cfp_priv { diff --git a/drivers/net/dsa/bcm_sf2_regs.h b/drivers/net/dsa/bcm_sf2_regs.h index 788361ad68a0..d8b8074a47b9 100644 --- a/drivers/net/dsa/bcm_sf2_regs.h +++ b/drivers/net/dsa/bcm_sf2_regs.h @@ -244,9 +244,6 @@ enum bcm_sf2_reg_offs { #define CORE_JOIN_ALL_VLAN_EN 0xd140 -#define CORE_EEE_EN_CTRL 0x24800 -#define CORE_EEE_LPI_INDICATE 0x24810 - #define CORE_CFP_ACC 0x28000 #define OP_STR_DONE (1 << 0) #define OP_SEL_SHIFT 1 From patchwork Tue Sep 19 17:46:51 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 815755 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Xg+LsdZ3"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xxVh53YMtz9sBZ for ; Wed, 20 Sep 2017 03:47:33 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751842AbdISRrc (ORCPT ); Tue, 19 Sep 2017 13:47:32 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:34282 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751837AbdISRr0 (ORCPT ); Tue, 19 Sep 2017 13:47:26 -0400 Received: by mail-wm0-f65.google.com with SMTP id i131so320192wma.1 for ; Tue, 19 Sep 2017 10:47:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=PsV9CUNi7UWMlJBKsIw+X7hDpsPKahDU5/3+PE+rk6Y=; b=Xg+LsdZ3T0ZGsurbG2fgl9qfpnfGo4PSGj5KSH1RLbALYfcynIZifc5N2K+XFB/Rqd uqr2Q3+A3S0yKzkE1cEMAW5kKmrU18Y1XgXLmCSToM9HgtZfQflrxS1I/aOb8Eo4IloT jXeCjfapPQhCO9Hij3CMcfFqSlRh6zxeqr92O5udPdUHQOGcEZpbLD4/goA07BB5Trlz LkR7lt6i+85BiFQSIAIjecGmB1bJCV6eGJRaDNbjD8SylXJfYdWrVPBax3PMNCp39Edk XiSjlIQVE6cS7qGE7bpdMZ2ub0GDT6T3AsFBx+ZilPYP4aGzHvWrlzXTzGXd7F35k64J b+/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=PsV9CUNi7UWMlJBKsIw+X7hDpsPKahDU5/3+PE+rk6Y=; b=aULmYV6xl2pw2rtZgt4ggStx9FSidhTj7ZaALpf/W56H2gj8XQ/AWTWTVtRyxtNruR 9wnWSej6kGAFXnYNvLCeo3ysVYuFy8i38/5C7a1dzR6ZJkaByh3m+vMaUkRV4j5NKYFF ts8JdTcJDm706c5z/KIf4GQsYjZPBLnLlzqepfnKmf+Y670mP4tdSFaJ1RF60gExSODD c7lMmtr7VLR4MFPUE0HeZvt2ViWhhrjSuZkG4rEebPBQWvYHSzmFJ2ebtRAUhIgP8n1d T52h+SW0oNQoGXO4neGLWQebXVOcL/GEhGq2RK+PTm2P+qtvJ+EdbM/tCcVL0+QrkdCr WR8g== X-Gm-Message-State: AHPjjUiBQBztFzIfpTUh1zpaO51+I9/8+BheWCLJhg4IkgMZUeDK0t4d bPX+R8gkitwaugJjYf3+56yMpUXw X-Google-Smtp-Source: AOwi7QCuaBRaDT2WxA4xzNJfcy4wU8yNGc5/WVKh4S21iWxUqWWpojqo63kS0mcWpQshZfboAZTCfA== X-Received: by 10.28.158.208 with SMTP id h199mr1654509wme.47.1505843245058; Tue, 19 Sep 2017 10:47:25 -0700 (PDT) Received: from fainelli-desktop.broadcom.com ([192.19.255.250]) by smtp.gmail.com with ESMTPSA id q19sm11543124wrb.17.2017.09.19.10.47.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Sep 2017 10:47:24 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, Florian Fainelli Subject: [PATCH net-next v3 09/12] net: dsa: b53: Wire-up EEE Date: Tue, 19 Sep 2017 10:46:51 -0700 Message-Id: <20170919174654.2122-10-f.fainelli@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170919174654.2122-1-f.fainelli@gmail.com> References: <20170919174654.2122-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add support for enabling and disabling EEE, as well as re-negotiating it in .adjust_link() and in .port_enable(). Reviewed-by: Vivien Didelot Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index 491e4ffa8a0e..4e37ec27e496 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -523,6 +523,10 @@ static int b53_enable_port(struct dsa_switch *ds, int port, b53_imp_vlan_setup(ds, cpu_port); + /* If EEE was enabled, restore it */ + if (dev->ports[port].eee.eee_enabled) + b53_eee_enable_set(ds, port, true); + return 0; } @@ -879,6 +883,7 @@ static void b53_adjust_link(struct dsa_switch *ds, int port, struct phy_device *phydev) { struct b53_device *dev = ds->priv; + struct ethtool_eee *p = &dev->ports[port].eee; u8 rgmii_ctrl = 0, reg = 0, off; if (!phy_is_pseudo_fixed_link(phydev)) @@ -1000,6 +1005,9 @@ static void b53_adjust_link(struct dsa_switch *ds, int port, b53_write8(dev, B53_CTRL_PAGE, po_reg, gmii_po); } } + + /* Re-negotiate EEE if it was enabled already */ + p->eee_enabled = b53_eee_init(ds, port, phydev); } int b53_vlan_filtering(struct dsa_switch *ds, int port, bool vlan_filtering) @@ -1605,6 +1613,8 @@ static const struct dsa_switch_ops b53_switch_ops = { .adjust_link = b53_adjust_link, .port_enable = b53_enable_port, .port_disable = b53_disable_port, + .get_mac_eee = b53_get_mac_eee, + .set_mac_eee = b53_set_mac_eee, .port_bridge_join = b53_br_join, .port_bridge_leave = b53_br_leave, .port_stp_state_set = b53_br_set_stp_state, From patchwork Tue Sep 19 17:46:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 815757 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="n+ch5UCg"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xxVhH0Dbdz9rvt for ; Wed, 20 Sep 2017 03:47:43 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751629AbdISRrb (ORCPT ); Tue, 19 Sep 2017 13:47:31 -0400 Received: from mail-wr0-f194.google.com ([209.85.128.194]:38254 "EHLO mail-wr0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751488AbdISRr3 (ORCPT ); Tue, 19 Sep 2017 13:47:29 -0400 Received: by mail-wr0-f194.google.com with SMTP id p37so178003wrb.5 for ; Tue, 19 Sep 2017 10:47:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Uabn1qnEKHeYrG5takERNtDbIzqC03OYC1d3YELsiCk=; b=n+ch5UCgZ/nMSc+E4Ojs64yh56lxgBBpampj8oTp7MgucHPt6lFK1vrv1NgRVMjryv Vgosc41mE+QGw+R40USWJFLRP0cDHpjEY8poJkfASpAfQFF5lCTf1Hx0lVqINo8Ly4UV BS2b0nG8Xo4jV/y/p3/2IFd0ufHlm3i62psc8Nj7IyGMB1kGo00K48AyDPi/UH7F8DEC 36hpD6t/MgDv4TqqTZVqVILwfkAYiJ7VrWuMVbIV4d/VB+kMVgJr50tbDPW8eiBxUfD5 rwTS3pGEDK9Z41YHMPMzGm59hXnjD30DQXNV75b+4Q6fwUtY5xL0ZcqIDetJUlaFqQ2t 2JBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Uabn1qnEKHeYrG5takERNtDbIzqC03OYC1d3YELsiCk=; b=ReLY5RCMxX761oszMPLOJAbkREzPS77xtid5r9OsP0+r2m5mi8rOdqUYh8dscHogIs Z4GBjN3ADa1/CjrXDQm/i3lL266MWrryW0NJNzJxy5naf9q5kkggx/p9kYf78XcELaB1 fPdwMoIL14eMrUKfP9l+8GbdPDw/FO4jlUWeW6Tbc1wfNmme055obaaarB8Vxpogoe1d 8yZzIe02neTYigqXao/51k6xwaJI1Dqt7JXiwY1ioLbR4I30BLloa0UVKgVvNPucfXtW +ScE12DrIVSpxvr4EHQMs/rhm0Gy6p9ao71MoHEbJqdbxi3vOHhc4j9FUMgrshBl0IUi /4NQ== X-Gm-Message-State: AHPjjUg0a/VDM9BgwME9kmi0EDkSoawkCDaGPItWk4Vb/XSxFOZnw0l8 GlSEYHSJd2CYu02+FH7vl8Zs9Qoq X-Google-Smtp-Source: AOwi7QASv9Hy3sh7Pyl0XzybcZxRWCCQhiNaMK8kCyQ67GESn2RVIvdk7lyH80XYDEM/llpNlg7EMw== X-Received: by 10.223.198.130 with SMTP id j2mr2214661wrg.52.1505843247506; Tue, 19 Sep 2017 10:47:27 -0700 (PDT) Received: from fainelli-desktop.broadcom.com ([192.19.255.250]) by smtp.gmail.com with ESMTPSA id q19sm11543124wrb.17.2017.09.19.10.47.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Sep 2017 10:47:26 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, Florian Fainelli Subject: [PATCH net-next v3 10/12] net: dsa: b53: Export b53_imp_vlan_setup() Date: Tue, 19 Sep 2017 10:46:52 -0700 Message-Id: <20170919174654.2122-11-f.fainelli@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170919174654.2122-1-f.fainelli@gmail.com> References: <20170919174654.2122-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org bcm_sf2 and b53 do exactly the same thing, so share that piece. Reviewed-by: Vivien Didelot Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 3 ++- drivers/net/dsa/b53/b53_priv.h | 1 + drivers/net/dsa/bcm_sf2.c | 23 +---------------------- 3 files changed, 4 insertions(+), 23 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index 4e37ec27e496..c3f1cd2c33ea 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -484,7 +484,7 @@ static int b53_fast_age_vlan(struct b53_device *dev, u16 vid) return b53_flush_arl(dev, FAST_AGE_VLAN); } -static void b53_imp_vlan_setup(struct dsa_switch *ds, int cpu_port) +void b53_imp_vlan_setup(struct dsa_switch *ds, int cpu_port) { struct b53_device *dev = ds->priv; unsigned int i; @@ -500,6 +500,7 @@ static void b53_imp_vlan_setup(struct dsa_switch *ds, int cpu_port) b53_write16(dev, B53_PVLAN_PAGE, B53_PVLAN_PORT_MASK(i), pvlan); } } +EXPORT_SYMBOL(b53_imp_vlan_setup); static int b53_enable_port(struct dsa_switch *ds, int port, struct phy_device *phy) diff --git a/drivers/net/dsa/b53/b53_priv.h b/drivers/net/dsa/b53/b53_priv.h index aabe80eab25d..8f4f83e2e4bd 100644 --- a/drivers/net/dsa/b53/b53_priv.h +++ b/drivers/net/dsa/b53/b53_priv.h @@ -284,6 +284,7 @@ static inline int b53_switch_get_reset_gpio(struct b53_device *dev) #endif /* Exported functions towards other drivers */ +void b53_imp_vlan_setup(struct dsa_switch *ds, int cpu_port); void b53_get_strings(struct dsa_switch *ds, int port, uint8_t *data); void b53_get_ethtool_stats(struct dsa_switch *ds, int port, uint64_t *data); int b53_get_sset_count(struct dsa_switch *ds); diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c index 4e8ef4c07eab..08639674947a 100644 --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c @@ -40,27 +40,6 @@ static enum dsa_tag_protocol bcm_sf2_sw_get_tag_protocol(struct dsa_switch *ds) return DSA_TAG_PROTO_BRCM; } -static void bcm_sf2_imp_vlan_setup(struct dsa_switch *ds, int cpu_port) -{ - struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); - unsigned int i; - u32 reg; - - /* Enable the IMP Port to be in the same VLAN as the other ports - * on a per-port basis such that we only have Port i and IMP in - * the same VLAN. - */ - for (i = 0; i < priv->hw_params.num_ports; i++) { - if (!((1 << i) & ds->enabled_port_mask)) - continue; - - reg = core_readl(priv, CORE_PORT_VLAN_CTL_PORT(i)); - reg |= (1 << cpu_port); - core_writel(priv, reg, CORE_PORT_VLAN_CTL_PORT(i)); - } -} - - static void bcm_sf2_imp_setup(struct dsa_switch *ds, int port) { struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); @@ -240,7 +219,7 @@ static int bcm_sf2_port_setup(struct dsa_switch *ds, int port, reg |= priv->dev->ports[port].vlan_ctl_mask; core_writel(priv, reg, CORE_PORT_VLAN_CTL_PORT(port)); - bcm_sf2_imp_vlan_setup(ds, cpu_port); + b53_imp_vlan_setup(ds, cpu_port); /* If EEE was enabled, restore it */ if (priv->dev->ports[port].eee.eee_enabled) From patchwork Tue Sep 19 17:46:53 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 815758 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="X+VMtffq"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xxVhJ16pjz9sPk for ; Wed, 20 Sep 2017 03:47:44 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751635AbdISRrm (ORCPT ); Tue, 19 Sep 2017 13:47:42 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:33549 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751549AbdISRrb (ORCPT ); Tue, 19 Sep 2017 13:47:31 -0400 Received: by mail-wm0-f67.google.com with SMTP id m127so325989wmm.0 for ; Tue, 19 Sep 2017 10:47:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=PhmFRLbT6q86KY+w+4aX+M32B8mrlZ5dxsoQH9miVjM=; b=X+VMtffqlff4MsMj+LJh2d3RV9tj5WtzUIarj8MkAINPI1K6kJqenduKQmNMDf4m5Q OOo2uIv+56QPNTy2yppgYfGqN3uzeAMn/uSTTqmOEXyHTo5o5e4bLHAZvBPw8TB4Tj3f t/5nQOfsRCHVXv+dB7gzYRFyzs9fZpe7D3qEy9J5yE+DvsywaNUNBqe8ZzwL20M4C2Wp sHLvPsZDUn3f0aK2Znj/V2jKg/JoSiGiSQu9Cp0wOJuv+o6HwWSOPORCGa+r81aToFxQ DeWZbgqypQLbdbLjlomnCYmwDYTgg6SSlZYCOcJkqO2gR0PuQEyWhUY3DsKVAEVyhTE0 JgdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=PhmFRLbT6q86KY+w+4aX+M32B8mrlZ5dxsoQH9miVjM=; b=SgnEMmQ96XXD50AezKnp+mpPzdyfbis7sbb9RWFy0VkEn1epTv2ObzoETFziZXMDLM gRlqJvba1oEnmsMl7VZj4ixIQ5pBe8hOM9BI7iBMkuM11gI1zVjNftwzOGwps+twy+3l pOP3JdY71ndPDPEessjWwfrEHwp/MOULSNa7Al13Y/vvr7lHRdi+peXJxft8kZDCknj7 ZgNDVeld1V4Z9wqh3Ko5NiR4SIDb5cSHG/V5XkvQlqY0Ne20+SpoudZD3COl5tB/vL5p ZwbzmPsLGKMwq9BPy3kv3LRy0CwDd57YAFW+OC/5fEeXbHTRhJWnIVyargJlVLCbIrdo ACrg== X-Gm-Message-State: AHPjjUgb3t/JEwE6AJa1dyFZJi1ITDHRsQVyd84XmJIA0te0ftOWDPwp sgnlUYhSIMPmScz/KQQUm6nudlTO X-Google-Smtp-Source: AOwi7QCEFqkKIoAkbr2y4JhExM1O6QsIQlsQJEmahIoO2UHPRHlcr5L6x4cJlFtfIz78B8/mDQTCUg== X-Received: by 10.28.150.195 with SMTP id y186mr1799425wmd.52.1505843250003; Tue, 19 Sep 2017 10:47:30 -0700 (PDT) Received: from fainelli-desktop.broadcom.com ([192.19.255.250]) by smtp.gmail.com with ESMTPSA id q19sm11543124wrb.17.2017.09.19.10.47.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Sep 2017 10:47:29 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, Florian Fainelli Subject: [PATCH net-next v3 11/12] net: dsa: bcm_sf2: Use SF2_NUM_EGRESS_QUEUES for CFP Date: Tue, 19 Sep 2017 10:46:53 -0700 Message-Id: <20170919174654.2122-12-f.fainelli@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170919174654.2122-1-f.fainelli@gmail.com> References: <20170919174654.2122-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The magic number 8 in 3 locations in bcm_sf2_cfp.c actually designates the number of switch port egress queues, so use that define instead of open-coding it. Reviewed-by: Vivien Didelot Signed-off-by: Florian Fainelli --- drivers/net/dsa/bcm_sf2_cfp.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/dsa/bcm_sf2_cfp.c b/drivers/net/dsa/bcm_sf2_cfp.c index 8a1da7e67707..94649e1481ec 100644 --- a/drivers/net/dsa/bcm_sf2_cfp.c +++ b/drivers/net/dsa/bcm_sf2_cfp.c @@ -144,7 +144,7 @@ static int bcm_sf2_cfp_rule_set(struct dsa_switch *ds, int port, * destination port is enabled and that we are within the * number of ports supported by the switch */ - port_num = fs->ring_cookie / 8; + port_num = fs->ring_cookie / SF2_NUM_EGRESS_QUEUES; if (fs->ring_cookie == RX_CLS_FLOW_DISC || !(BIT(port_num) & ds->enabled_port_mask) || @@ -280,7 +280,7 @@ static int bcm_sf2_cfp_rule_set(struct dsa_switch *ds, int port, * We have a small oddity where Port 6 just does not have a * valid bit here (so we subtract by one). */ - queue_num = fs->ring_cookie % 8; + queue_num = fs->ring_cookie % SF2_NUM_EGRESS_QUEUES; if (port_num >= 7) port_num -= 1; @@ -401,7 +401,7 @@ static int bcm_sf2_cfp_rule_get(struct bcm_sf2_priv *priv, int port, /* There is no Port 6, so we compensate for that here */ if (nfc->fs.ring_cookie >= 6) nfc->fs.ring_cookie++; - nfc->fs.ring_cookie *= 8; + nfc->fs.ring_cookie *= SF2_NUM_EGRESS_QUEUES; /* Extract the destination queue */ queue_num = (reg >> NEW_TC_SHIFT) & NEW_TC_MASK; From patchwork Tue Sep 19 17:46:54 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 815756 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="MZaWrSwR"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xxVhB33cmz9sBZ for ; Wed, 20 Sep 2017 03:47:38 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751848AbdISRrf (ORCPT ); Tue, 19 Sep 2017 13:47:35 -0400 Received: from mail-wr0-f195.google.com ([209.85.128.195]:35586 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751605AbdISRre (ORCPT ); Tue, 19 Sep 2017 13:47:34 -0400 Received: by mail-wr0-f195.google.com with SMTP id n64so184661wrb.2 for ; Tue, 19 Sep 2017 10:47:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=zLW0b6/7aUbKNTb6q0oByZv0IT9WyTRBaalXJtqOlys=; b=MZaWrSwRggdMjJnjXU6b+QX+QkCeuwzaov6rTIbPttsT/PfA/dKcRpgVaUPar8WK5G B5X1qMmSZLz+ghij0+xfhefxEhlH2d+YdFXlCY/2IPy/1HKry7tqmFscKXkIPisY+WEl cxX7YZEZBtMpgkk83mDSfwvcDx0oaylqfdmUh+KGZxnbwwlXM7OYsU3luLsMCzM7X8Hg KVFgjNBUVkhG52QQQ5o2ede5ZD+oL0Tuh+N6lj99sBn3orMo7+HWQL72y4drFaevauhR Hxere7KwIHnaWVzRwaHQj/2+wExhjxf4ZB7yXoAvj3v/BnrGYp55QoT6Qiohbk5LaUn+ 6jtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=zLW0b6/7aUbKNTb6q0oByZv0IT9WyTRBaalXJtqOlys=; b=MJX12RlTU5meFFPv6yQLVRQGg/FNDuvWy2hvjmTBWbpEVKii0ZV5iIODkFDfYzXzec Lm4JzjIu34Kl++3faEJA1khVZtlCZyVJd55Nr84aqTQ9romoTUZNLDyc+M8CDX9R/M3r eh/VqGOYbxS3GRukjbfvDBqmrLB67rRlAcCeXthhcDg7FcpeHmC8XZ0T1L4qQA610Syc nTXZdpevdbUlcR3z0lIUrfldpUJHwmsU2sCYOP/WJMRzDzEBw7zEE9ObQqe2lHupleqa hoQl7OAvm9vHYdDT5IXRbKaqX+NhHmSsnArC4UizXAgru6nTahUYUPxX4fE9NxjEhE+b IxsQ== X-Gm-Message-State: AHPjjUh1OCpjfODsWlqXsWPvKl/ztSQ5nFRnUoX0/DNYpMSi7t0NZEV1 bChAkZoNCcl0ENdT7JrVFGRr68W4 X-Google-Smtp-Source: AOwi7QC/avyZSiV1WGE1qL+BIl5DXMalZV167vZEgOHniRUb7kNEc3KAoCufv+Q7/K4K/00IuY5h8A== X-Received: by 10.223.163.154 with SMTP id l26mr2196714wrb.42.1505843252507; Tue, 19 Sep 2017 10:47:32 -0700 (PDT) Received: from fainelli-desktop.broadcom.com ([192.19.255.250]) by smtp.gmail.com with ESMTPSA id q19sm11543124wrb.17.2017.09.19.10.47.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Sep 2017 10:47:31 -0700 (PDT) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, Florian Fainelli Subject: [PATCH net-next v3 12/12] net: dsa: bcm_sf2: Utilize b53_{enable, disable}_port Date: Tue, 19 Sep 2017 10:46:54 -0700 Message-Id: <20170919174654.2122-13-f.fainelli@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170919174654.2122-1-f.fainelli@gmail.com> References: <20170919174654.2122-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Export b53_{enable,disable}_port and use these two functions in bcm_sf2_port_setup and bcm_sf2_port_disable. The generic functions cannot be used without wrapping because we need to manage additional switch integration details (PHY, Broadcom tag etc.). Reviewed-by: Vivien Didelot Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 8 ++++---- drivers/net/dsa/b53/b53_priv.h | 2 ++ drivers/net/dsa/bcm_sf2.c | 26 ++------------------------ 3 files changed, 8 insertions(+), 28 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index c3f1cd2c33ea..a9f2a5b55a5e 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -502,8 +502,7 @@ void b53_imp_vlan_setup(struct dsa_switch *ds, int cpu_port) } EXPORT_SYMBOL(b53_imp_vlan_setup); -static int b53_enable_port(struct dsa_switch *ds, int port, - struct phy_device *phy) +int b53_enable_port(struct dsa_switch *ds, int port, struct phy_device *phy) { struct b53_device *dev = ds->priv; unsigned int cpu_port = dev->cpu_port; @@ -530,9 +529,9 @@ static int b53_enable_port(struct dsa_switch *ds, int port, return 0; } +EXPORT_SYMBOL(b53_enable_port); -static void b53_disable_port(struct dsa_switch *ds, int port, - struct phy_device *phy) +void b53_disable_port(struct dsa_switch *ds, int port, struct phy_device *phy) { struct b53_device *dev = ds->priv; u8 reg; @@ -542,6 +541,7 @@ static void b53_disable_port(struct dsa_switch *ds, int port, reg |= PORT_CTRL_RX_DISABLE | PORT_CTRL_TX_DISABLE; b53_write8(dev, B53_CTRL_PAGE, B53_PORT_CTRL(port), reg); } +EXPORT_SYMBOL(b53_disable_port); void b53_brcm_hdr_setup(struct dsa_switch *ds, int port) { diff --git a/drivers/net/dsa/b53/b53_priv.h b/drivers/net/dsa/b53/b53_priv.h index 8f4f83e2e4bd..603c66d240d8 100644 --- a/drivers/net/dsa/b53/b53_priv.h +++ b/drivers/net/dsa/b53/b53_priv.h @@ -311,6 +311,8 @@ int b53_mirror_add(struct dsa_switch *ds, int port, struct dsa_mall_mirror_tc_entry *mirror, bool ingress); void b53_mirror_del(struct dsa_switch *ds, int port, struct dsa_mall_mirror_tc_entry *mirror); +int b53_enable_port(struct dsa_switch *ds, int port, struct phy_device *phy); +void b53_disable_port(struct dsa_switch *ds, int port, struct phy_device *phy); void b53_brcm_hdr_setup(struct dsa_switch *ds, int port); void b53_eee_enable_set(struct dsa_switch *ds, int port, bool enable); int b53_eee_init(struct dsa_switch *ds, int port, struct phy_device *phy); diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c index 08639674947a..0072a959db5b 100644 --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c @@ -163,7 +163,6 @@ static int bcm_sf2_port_setup(struct dsa_switch *ds, int port, struct phy_device *phy) { struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); - s8 cpu_port = ds->dst->cpu_dp->index; unsigned int i; u32 reg; @@ -184,9 +183,6 @@ static int bcm_sf2_port_setup(struct dsa_switch *ds, int port, reg |= i << (PRT_TO_QID_SHIFT * i); core_writel(priv, reg, CORE_PORT_TC2_QOS_MAP_PORT(port)); - /* Clear the Rx and Tx disable bits and set to no spanning tree */ - core_writel(priv, 0, CORE_G_PCTL_PORT(port)); - /* Re-enable the GPHY and re-apply workarounds */ if (priv->int_phy_mask & 1 << port && priv->hw_params.num_gphy == 1) { bcm_sf2_gphy_enable_set(ds, true); @@ -209,23 +205,7 @@ static int bcm_sf2_port_setup(struct dsa_switch *ds, int port, if (port == priv->moca_port) bcm_sf2_port_intr_enable(priv, port); - /* Set this port, and only this one to be in the default VLAN, - * if member of a bridge, restore its membership prior to - * bringing down this port. - */ - reg = core_readl(priv, CORE_PORT_VLAN_CTL_PORT(port)); - reg &= ~PORT_VLAN_CTRL_MASK; - reg |= (1 << port); - reg |= priv->dev->ports[port].vlan_ctl_mask; - core_writel(priv, reg, CORE_PORT_VLAN_CTL_PORT(port)); - - b53_imp_vlan_setup(ds, cpu_port); - - /* If EEE was enabled, restore it */ - if (priv->dev->ports[port].eee.eee_enabled) - b53_eee_enable_set(ds, port, true); - - return 0; + return b53_enable_port(ds, port, phy); } static void bcm_sf2_port_disable(struct dsa_switch *ds, int port, @@ -248,9 +228,7 @@ static void bcm_sf2_port_disable(struct dsa_switch *ds, int port, else off = CORE_G_PCTL_PORT(port); - reg = core_readl(priv, off); - reg |= RX_DIS | TX_DIS; - core_writel(priv, reg, off); + b53_disable_port(ds, port, phy); /* Power down the port memory */ reg = core_readl(priv, CORE_MEM_PSM_VDD_CTRL);