From patchwork Sat Aug 17 19:14:49 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Marek_Beh=C3=BAn?= X-Patchwork-Id: 1148774 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=none (p=none dis=none) header.from=nic.cz Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=nic.cz header.i=@nic.cz header.b="BLGpyO5w"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 469qdT5FdPz9sBF for ; Sun, 18 Aug 2019 05:15:09 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726294AbfHQTPC (ORCPT ); Sat, 17 Aug 2019 15:15:02 -0400 Received: from mail.nic.cz ([217.31.204.67]:41634 "EHLO mail.nic.cz" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725929AbfHQTPA (ORCPT ); Sat, 17 Aug 2019 15:15:00 -0400 Received: from dellmb.labs.office.nic.cz (unknown [IPv6:2001:1488:fffe:6:cac7:3539:7f1f:463]) by mail.nic.cz (Postfix) with ESMTP id AFB13140B51; Sat, 17 Aug 2019 21:14:57 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nic.cz; s=default; t=1566069297; bh=I1A5PY1euPFgyoIk7ud22sWUZbz4uiUOTaqDkg6UQ7I=; h=From:To:Date; b=BLGpyO5wy1mhSZptkm+JAX/SrDDBFjtBZ2MXD/1DY1hF2QKr7IAJcnojNb2AkRZKw Q3gSdTLgE4ZToOPBShFvKnYToFY+KWwECkFVIz4eSXBBAZbiu/XW2vE3vd93qTSn1x jg1y2gMv4aSProU0ZUjEouB7he/bOoWcGe/lcoGc= From: =?utf-8?q?Marek_Beh=C3=BAn?= To: netdev@vger.kernel.org Cc: Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , =?utf-8?q?Marek_Beh=C3=BA?= =?utf-8?q?n?= Subject: [PATCH RFC v2 net-next 1/4] net: dsa: mv88e6xxx: support 2500base-x in SGMII IRQ handler Date: Sat, 17 Aug 2019 21:14:49 +0200 Message-Id: <20190817191452.16716-2-marek.behun@nic.cz> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190817191452.16716-1-marek.behun@nic.cz> References: <20190817191452.16716-1-marek.behun@nic.cz> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.100.3 at mail.nic.cz X-Virus-Status: Clean X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT, URIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mail.nic.cz Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The mv88e6390_serdes_irq_link_sgmii IRQ handler reads the SERDES PHY status register to determine speed, among other things. If cmode of the port is set to 2500base-x, though, the PHY still reports 1000 Mbps (the PHY register itself does not differentiate between 1000 Mbps and 2500 Mbps - it thinks it is running at 1000 Mbps, although clock is 2.5x faster). Look at the cmode and set SPEED_2500 if cmode is set to 2500base-x. Also tell mv88e6xxx_port_setup_mac the PHY interface mode corresponding to current cmode in terms of phy_interface_t. Signed-off-by: Marek Behún Cc: Andrew Lunn Cc: Florian Fainelli Cc: Vladimir Oltean Cc: Vivien Didelot --- drivers/net/dsa/mv88e6xxx/serdes.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/drivers/net/dsa/mv88e6xxx/serdes.c b/drivers/net/dsa/mv88e6xxx/serdes.c index 20c526c2a9ee..0f3d7cbb696b 100644 --- a/drivers/net/dsa/mv88e6xxx/serdes.c +++ b/drivers/net/dsa/mv88e6xxx/serdes.c @@ -506,9 +506,11 @@ static void mv88e6390_serdes_irq_link_sgmii(struct mv88e6xxx_chip *chip, int port, int lane) { struct dsa_switch *ds = chip->ds; + u8 cmode = chip->ports[port].cmode; int duplex = DUPLEX_UNKNOWN; int speed = SPEED_UNKNOWN; int link, err; + phy_interface_t mode; u16 status; err = mv88e6390_serdes_read(chip, lane, MDIO_MMD_PHYXS, @@ -527,7 +529,10 @@ static void mv88e6390_serdes_irq_link_sgmii(struct mv88e6xxx_chip *chip, switch (status & MV88E6390_SGMII_PHY_STATUS_SPEED_MASK) { case MV88E6390_SGMII_PHY_STATUS_SPEED_1000: - speed = SPEED_1000; + if (cmode == MV88E6XXX_PORT_STS_CMODE_2500BASEX) + speed = SPEED_2500; + else + speed = SPEED_1000; break; case MV88E6390_SGMII_PHY_STATUS_SPEED_100: speed = SPEED_100; @@ -541,8 +546,22 @@ static void mv88e6390_serdes_irq_link_sgmii(struct mv88e6xxx_chip *chip, } } + switch (cmode) { + case MV88E6XXX_PORT_STS_CMODE_SGMII: + mode = PHY_INTERFACE_MODE_SGMII; + break; + case MV88E6XXX_PORT_STS_CMODE_1000BASE_X: + mode = PHY_INTERFACE_MODE_1000BASEX; + break; + case MV88E6XXX_PORT_STS_CMODE_2500BASEX: + mode = PHY_INTERFACE_MODE_2500BASEX; + break; + default: + mode = PHY_INTERFACE_MODE_NA; + } + err = mv88e6xxx_port_setup_mac(chip, port, link, speed, duplex, - PAUSE_OFF, PHY_INTERFACE_MODE_NA); + PAUSE_OFF, mode); if (err) dev_err(chip->dev, "can't propagate PHY settings to MAC: %d\n", err); From patchwork Sat Aug 17 19:14:50 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Marek_Beh=C3=BAn?= X-Patchwork-Id: 1148775 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=none (p=none dis=none) header.from=nic.cz Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=nic.cz header.i=@nic.cz header.b="EJMdMoP5"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 469qdV1ncjz9sML for ; Sun, 18 Aug 2019 05:15:10 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726302AbfHQTPF (ORCPT ); Sat, 17 Aug 2019 15:15:05 -0400 Received: from mail.nic.cz ([217.31.204.67]:41644 "EHLO mail.nic.cz" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726126AbfHQTO7 (ORCPT ); Sat, 17 Aug 2019 15:14:59 -0400 Received: from dellmb.labs.office.nic.cz (unknown [IPv6:2001:1488:fffe:6:cac7:3539:7f1f:463]) by mail.nic.cz (Postfix) with ESMTP id D390D140B52; Sat, 17 Aug 2019 21:14:57 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nic.cz; s=default; t=1566069297; bh=5bUmByzWwsKmOQtkyX8os620YqcHFPrH1przbv7z6IA=; h=From:To:Date; b=EJMdMoP5poGls/wlpc4FDvRjghzuokovhM7qfVwQgzKRLTwZPO2tn0mg6rhiRHjAN ExduBNQm9eDMVekkowO7DKl1B2hxKJBJk6e3kSXekMyZeDCa6TaETJDW/Da/3wIFax ZVG7YQWQoZGYzHKJfGQEVH+CSgpGTVSGNHeujfyM= From: =?utf-8?q?Marek_Beh=C3=BAn?= To: netdev@vger.kernel.org Cc: Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , =?utf-8?q?Marek_Beh=C3=BA?= =?utf-8?q?n?= Subject: [PATCH RFC v2 net-next 2/4] net: dsa: call port_enable/port_disable for CPU/DSA ports Date: Sat, 17 Aug 2019 21:14:50 +0200 Message-Id: <20190817191452.16716-3-marek.behun@nic.cz> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190817191452.16716-1-marek.behun@nic.cz> References: <20190817191452.16716-1-marek.behun@nic.cz> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.100.3 at mail.nic.cz X-Virus-Status: Clean X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT, URIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mail.nic.cz Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Call dsa_port_enable for CPU/DSA ports in dsa_port_setup, and dsa_port_disable for CPU/DSA ports in dsa_port_teardown. This requires changing all DSA drivers, since they expect the port_enable/port_disable methods to be called only for user ports. Signed-off-by: Marek Behún Cc: Andrew Lunn Cc: Florian Fainelli Cc: Vladimir Oltean Cc: Vivien Didelot --- net/dsa/dsa2.c | 21 ++++++++++++++++++++- net/dsa/port.c | 4 ++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index 3abd173ebacb..98ea5c158ee3 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c @@ -315,6 +315,16 @@ static int dsa_port_setup(struct dsa_port *dp) break; } + switch (dp->type) { + case DSA_PORT_TYPE_CPU: + case DSA_PORT_TYPE_DSA: + if (!err) + err = dsa_port_enable(dp, NULL); + break; + default: + break; + } + if (err) devlink_port_unregister(&dp->devlink_port); @@ -323,8 +333,17 @@ static int dsa_port_setup(struct dsa_port *dp) static void dsa_port_teardown(struct dsa_port *dp) { - if (dp->type != DSA_PORT_TYPE_UNUSED) + switch (dp->type) { + case DSA_PORT_TYPE_UNUSED: + break; + case DSA_PORT_TYPE_CPU: + case DSA_PORT_TYPE_DSA: + dsa_port_disable(dp); + /* fall-through */ + case DSA_PORT_TYPE_USER: devlink_port_unregister(&dp->devlink_port); + break; + } switch (dp->type) { case DSA_PORT_TYPE_UNUSED: diff --git a/net/dsa/port.c b/net/dsa/port.c index f071acf2842b..0cadda57df1f 100644 --- a/net/dsa/port.c +++ b/net/dsa/port.c @@ -75,7 +75,7 @@ int dsa_port_enable(struct dsa_port *dp, struct phy_device *phy) return err; } - if (!dp->bridge_dev) + if (dp->type == DSA_PORT_TYPE_USER && !dp->bridge_dev) dsa_port_set_state_now(dp, BR_STATE_FORWARDING); return 0; @@ -86,7 +86,7 @@ void dsa_port_disable(struct dsa_port *dp) struct dsa_switch *ds = dp->ds; int port = dp->index; - if (!dp->bridge_dev) + if (dp->type == DSA_PORT_TYPE_USER && !dp->bridge_dev) dsa_port_set_state_now(dp, BR_STATE_DISABLED); if (ds->ops->port_disable) From patchwork Sat Aug 17 19:14:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Marek_Beh=C3=BAn?= X-Patchwork-Id: 1148773 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=none (p=none dis=none) header.from=nic.cz Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=nic.cz header.i=@nic.cz header.b="g6o6lspX"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 469qdT2KR4z9sN1 for ; Sun, 18 Aug 2019 05:15:09 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726257AbfHQTPA (ORCPT ); Sat, 17 Aug 2019 15:15:00 -0400 Received: from mail.nic.cz ([217.31.204.67]:41650 "EHLO mail.nic.cz" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726129AbfHQTO7 (ORCPT ); Sat, 17 Aug 2019 15:14:59 -0400 Received: from dellmb.labs.office.nic.cz (unknown [IPv6:2001:1488:fffe:6:cac7:3539:7f1f:463]) by mail.nic.cz (Postfix) with ESMTP id 03ABD140B53; Sat, 17 Aug 2019 21:14:58 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nic.cz; s=default; t=1566069298; bh=gwiHlu1/e5gUceR70Z1eXl8Fjfy+Wc1wI65HN+bkQiU=; h=From:To:Date; b=g6o6lspXYZNWy5hK4P0ksqiLzHso6nGRE71EL1eqA1lFbCvJKapJ22jOpjl8PhqEW Pg+tSY6Ks9rgEFyLgH6xJlJDHmtm1iGo1e6fMj26ZPtNIBP33HbHC32ZEsVsw49z54 xr+oQxuZpnYLt8RisbpJJIJi5FzlTztJcyTHiNFU= From: =?utf-8?q?Marek_Beh=C3=BAn?= To: netdev@vger.kernel.org Cc: Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , =?utf-8?q?Marek_Beh=C3=BA?= =?utf-8?q?n?= Subject: [PATCH RFC v2 net-next 3/4] net: dsa: mv88e6xxx: check for port type in port_disable Date: Sat, 17 Aug 2019 21:14:51 +0200 Message-Id: <20190817191452.16716-4-marek.behun@nic.cz> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190817191452.16716-1-marek.behun@nic.cz> References: <20190817191452.16716-1-marek.behun@nic.cz> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.100.3 at mail.nic.cz X-Virus-Status: Clean X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT, URIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mail.nic.cz Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The mv88e6xxx_port_disable method calls mv88e6xxx_port_set_state, which should be called only for user ports. Signed-off-by: Marek Behún Cc: Andrew Lunn Cc: Florian Fainelli Cc: Vladimir Oltean Cc: Vivien Didelot --- drivers/net/dsa/mv88e6xxx/chip.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c index 9b3ad22a5b98..ad27f2fc5c33 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -2285,8 +2285,9 @@ static void mv88e6xxx_port_disable(struct dsa_switch *ds, int port) mv88e6xxx_reg_lock(chip); - if (mv88e6xxx_port_set_state(chip, port, BR_STATE_DISABLED)) - dev_err(chip->dev, "failed to disable port\n"); + if (dsa_is_user_port(ds, port)) + if (mv88e6xxx_port_set_state(chip, port, BR_STATE_DISABLED)) + dev_err(chip->dev, "failed to disable port\n"); if (chip->info->ops->serdes_irq_free) chip->info->ops->serdes_irq_free(chip, port); From patchwork Sat Aug 17 19:14:52 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Marek_Beh=C3=BAn?= X-Patchwork-Id: 1148772 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=none (p=none dis=none) header.from=nic.cz Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=nic.cz header.i=@nic.cz header.b="KrTbl7mm"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 469qdS6Yjjz9sML for ; Sun, 18 Aug 2019 05:15:08 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726242AbfHQTPA (ORCPT ); Sat, 17 Aug 2019 15:15:00 -0400 Received: from mail.nic.cz ([217.31.204.67]:41656 "EHLO mail.nic.cz" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726162AbfHQTPA (ORCPT ); Sat, 17 Aug 2019 15:15:00 -0400 Received: from dellmb.labs.office.nic.cz (unknown [IPv6:2001:1488:fffe:6:cac7:3539:7f1f:463]) by mail.nic.cz (Postfix) with ESMTP id 244AB140B54; Sat, 17 Aug 2019 21:14:58 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nic.cz; s=default; t=1566069298; bh=qicFrCIaUQafmC2tXbYuA0sqLyoW/+M2sqPggITw7PA=; h=From:To:Date; b=KrTbl7mm/zCI2zzcnF4DicypyLXYjNLmIpVTfZdka607PSJg8I8umdFKuARsDA0PV g7F7S9nmWioXCRiGHZGcZIrBHw5x1j9p1dg7GgOphYN4YetwW/yRD4fEiLJQVzls5C TPuPEATG0G+r3uvBjiOHSPLtG0mWW+I5gf0C+MYU= From: =?utf-8?q?Marek_Beh=C3=BAn?= To: netdev@vger.kernel.org Cc: Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , =?utf-8?q?Marek_Beh=C3=BA?= =?utf-8?q?n?= Subject: [PATCH RFC v2 net-next 4/4] net: dsa: mv88e6xxx: do not enable SERDESes in mv88e6xxx_setup Date: Sat, 17 Aug 2019 21:14:52 +0200 Message-Id: <20190817191452.16716-5-marek.behun@nic.cz> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190817191452.16716-1-marek.behun@nic.cz> References: <20190817191452.16716-1-marek.behun@nic.cz> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.100.3 at mail.nic.cz X-Virus-Status: Clean X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT, URIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mail.nic.cz Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org CPU/DSA ports are now enabled/disabled in the .port_enable() and .port_disable() methods. We do not need to enable SERDESes for these ports in mv88e6xxx_setup. Signed-off-by: Marek Behún Cc: Andrew Lunn Cc: Florian Fainelli Cc: Vladimir Oltean Cc: Vivien Didelot --- drivers/net/dsa/mv88e6xxx/chip.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c index ad27f2fc5c33..cca9f1e2038f 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -2151,16 +2151,6 @@ static int mv88e6xxx_setup_port(struct mv88e6xxx_chip *chip, int port) if (err) return err; - /* Enable the SERDES interface for DSA and CPU ports. Normal - * ports SERDES are enabled when the port is enabled, thus - * saving a bit of power. - */ - if ((dsa_is_cpu_port(ds, port) || dsa_is_dsa_port(ds, port))) { - err = mv88e6xxx_serdes_power(chip, port, true); - if (err) - return err; - } - /* Port Control 2: don't force a good FCS, set the maximum frame size to * 10240 bytes, disable 802.1q tags checking, don't discard tagged or * untagged frames on this port, do a destination address lookup on all