Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp1005026imj; Thu, 7 Feb 2019 15:48:56 -0800 (PST) X-Google-Smtp-Source: AHgI3IZs360dqp5EbxcUqPcV2I89WKCHkC4cLKqrNngVY/KshH0Xccm/mkuo/kLoDN7MgZpOD99p X-Received: by 2002:a62:4587:: with SMTP id n7mr18797627pfi.118.1549583336484; Thu, 07 Feb 2019 15:48:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549583336; cv=none; d=google.com; s=arc-20160816; b=TpMfRMKyemDL8Zbfof0nVUvMOiStyQ01KjQeCfhhMI3avfEtLVlOcIeg3bwhN4mDDM BzfTGFmlPiIctHi1AXcfuVMd7iMs7vWSzv91mCa99n0KlZX8T+E44LRijUqlvrfwl8eL f335y6/qCeod8YOvK5iyuVln7LmaZPLh6WUw+ux5gXnz3bSGn02FJiSi/Z/soqGAovoX N9zV3Ajz5iuR4HjLXX9x6L+0srYZYizG0X2q0k4h+1aouogNzPXhUuMddvjOZQW36DOV 1WFw+Ld9gMQjpP42Zl0+BLRk/LA1t2DFVDgXcU7u1XXxoSQrmvkH4z9YzjTuABe+BwEi P8pQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=gjPeUEpl3IC8+f3m0OUBhJxI8Sy93l2m2nEMVlydeXk=; b=NPWK/0fxCQ1T8QCLol2AXsp913VoOJjL1m6Y+cEwuXZxenjEAGQeHwoySSz68Kx8Da vnC2+8AX+MHdP4q2KZl/ndqwj2zFgbIvdYO5dUL3ygkAlXd8irF2glu14KRuvZsxjApV VIo3Mdld+2rhzZt6jlKvDC4YTyfhGFx0HQfSlAggvDN6dMa18az1l3ROxZNA2ugyEr1B Si57o0zO0y1KsSMehi6wcl2Y4z2jE8ovzrmAhe8UGPSPPClw1g3iCP952hFEakKy0hoZ AD5KHuNC5MgEpQx0fI7qyHKbRHVgDJa9wPBSknZyb3wWm+KLwc5aCzLZobmStuIMuLby XbVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@armlinux.org.uk header.s=pandora-2014 header.b=Wa403v3v; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=armlinux.org.uk Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n125si393756pga.179.2019.02.07.15.48.39; Thu, 07 Feb 2019 15:48:56 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@armlinux.org.uk header.s=pandora-2014 header.b=Wa403v3v; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=armlinux.org.uk Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726821AbfBGXsc (ORCPT + 99 others); Thu, 7 Feb 2019 18:48:32 -0500 Received: from pandora.armlinux.org.uk ([78.32.30.218]:50110 "EHLO pandora.armlinux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726622AbfBGXsc (ORCPT ); Thu, 7 Feb 2019 18:48:32 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2014; h=Sender:In-Reply-To:Content-Type: MIME-Version:References:Message-ID:Subject:Cc:To:From:Date:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=gjPeUEpl3IC8+f3m0OUBhJxI8Sy93l2m2nEMVlydeXk=; b=Wa403v3v2SN2evhNn6D3hojc4 UXfBsGSVFcvxNAGIjTscdV7OPeelgKhq/CZjiTMeHT0zHAJ45LawgdQHUQyROjym3WXRP90JCnKfA 4xFnzyHsvrk2hSiAte3zW5o/ljoM/ptffZ9V1mwI12bUs2+k2nCVKujnR0w3gcHUOLfHI=; Received: from shell.armlinux.org.uk ([2002:4e20:1eda:1:5054:ff:fe00:4ec]:36618) by pandora.armlinux.org.uk with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from ) id 1grtPA-0004hN-CD; Thu, 07 Feb 2019 23:48:28 +0000 Received: from linux by shell.armlinux.org.uk with local (Exim 4.89) (envelope-from ) id 1grtP6-0006Zb-RH; Thu, 07 Feb 2019 23:48:24 +0000 Date: Thu, 7 Feb 2019 23:48:24 +0000 From: Russell King - ARM Linux admin To: Maxime Chevallier Cc: davem@davemloft.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Andrew Lunn , Florian Fainelli , Heiner Kallweit , linux-arm-kernel@lists.infradead.org, Antoine Tenart , thomas.petazzoni@bootlin.com, gregory.clement@bootlin.com, miquel.raynal@bootlin.com, nadavh@marvell.com, stefanc@marvell.com, mw@semihalf.com Subject: Re: [PATCH net-next v2 07/10] net: phy: marvell10g: Add support for 2.5GBASET Message-ID: <20190207234824.dhynfaglfxllxhei@shell.armlinux.org.uk> References: <20190207094939.27369-1-maxime.chevallier@bootlin.com> <20190207094939.27369-8-maxime.chevallier@bootlin.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190207094939.27369-8-maxime.chevallier@bootlin.com> User-Agent: NeoMutt/20170113 (1.7.2) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Feb 07, 2019 at 10:49:36AM +0100, Maxime Chevallier wrote: > The Marvell Alaska family of PHYs supports 2.5GBaseT and 5GBaseT modes, > as defined in the 802.3bz specification. > > When the link partner requests a 2.5GBASET link, the PHY will > reconfigure it's MII interface to 2500BASEX. > > At 5G, the PHY will reconfigure it's interface to 5GBASE-R, but this > mode isn't supported by any MAC for now. > > This was tested with : > - The 88X3310, which is on the MacchiatoBin Hi Maxime, Looking deeper at this, I think we actually need an additional patch at the beginning of your series. The default AN advertisement in 7.32 is 0x1181 - which includes the 2.5G and 5G modes. We need to clear these bits, so that when the 10G mode disabled via ethtool, we do not switch to 2.5G or 5G speed (both of which are not currently reported as supported.) Such a patch needs backporting to stable kernels. > - The 88E2010, an Alaska PHY that has no fiber interfaces, and is > limited to 5G maximum speed. > > Signed-off-by: Maxime Chevallier > --- > V1 -> V2: Use a #define for the 88X3310 PHY ID, since it's reused in > various places in the code. Rebased on Heiner Kallweit's patch > introducing the phy_modify_mmd accessor. > > drivers/net/phy/marvell10g.c | 30 ++++++++++++++++++++++-------- > include/linux/marvell_phy.h | 1 + > 2 files changed, 23 insertions(+), 8 deletions(-) > > diff --git a/drivers/net/phy/marvell10g.c b/drivers/net/phy/marvell10g.c > index 07df87b81369..581b4b6e31e9 100644 > --- a/drivers/net/phy/marvell10g.c > +++ b/drivers/net/phy/marvell10g.c > @@ -238,6 +238,7 @@ static int mv3310_config_init(struct phy_device *phydev) > > /* Check that the PHY interface type is compatible */ > if (phydev->interface != PHY_INTERFACE_MODE_SGMII && > + phydev->interface != PHY_INTERFACE_MODE_2500BASEX && > phydev->interface != PHY_INTERFACE_MODE_XAUI && > phydev->interface != PHY_INTERFACE_MODE_RXAUI && > phydev->interface != PHY_INTERFACE_MODE_10GKR) > @@ -307,8 +308,18 @@ static int mv3310_config_aneg(struct phy_device *phydev) > else > reg = 0; > > + if (linkmode_test_bit(ETHTOOL_LINK_MODE_2500baseT_Full_BIT, > + phydev->advertising)) > + reg |= MDIO_AN_10GBT_CTRL_ADV2_5G; > + if (linkmode_test_bit(ETHTOOL_LINK_MODE_5000baseT_Full_BIT, > + phydev->advertising)) > + reg |= MDIO_AN_10GBT_CTRL_ADV5G; > + > ret = phy_modify_mmd(phydev, MDIO_MMD_AN, MDIO_AN_10GBT_CTRL, > - MDIO_AN_10GBT_CTRL_ADV10G, reg); > + MDIO_AN_10GBT_CTRL_ADV10G | > + MDIO_AN_10GBT_CTRL_ADV5G | > + MDIO_AN_10GBT_CTRL_ADV2_5G, reg); > + > if (ret < 0) > return ret; > if (ret > 0) > @@ -337,17 +348,20 @@ static int mv3310_aneg_done(struct phy_device *phydev) > static void mv3310_update_interface(struct phy_device *phydev) > { > if ((phydev->interface == PHY_INTERFACE_MODE_SGMII || > + phydev->interface == PHY_INTERFACE_MODE_2500BASEX || > phydev->interface == PHY_INTERFACE_MODE_10GKR) && phydev->link) { > /* The PHY automatically switches its serdes interface (and > - * active PHYXS instance) between Cisco SGMII and 10GBase-KR > - * modes according to the speed. Florian suggests setting > - * phydev->interface to communicate this to the MAC. Only do > - * this if we are already in either SGMII or 10GBase-KR mode. > + * active PHYXS instance) between Cisco SGMII, 10GBase-KR and > + * 2500BaseX modes according to the speed. Florian suggests > + * setting phydev->interface to communicate this to the MAC. > + * Only do this if we are already in one of the above modes. > */ > if (phydev->speed == SPEED_10000) > phydev->interface = PHY_INTERFACE_MODE_10GKR; > + else if (phydev->speed == SPEED_2500) > + phydev->interface = PHY_INTERFACE_MODE_2500BASEX; > else if (phydev->speed >= SPEED_10 && > - phydev->speed < SPEED_10000) > + phydev->speed < SPEED_2500) > phydev->interface = PHY_INTERFACE_MODE_SGMII; > } > } > @@ -450,7 +464,7 @@ static int mv3310_read_status(struct phy_device *phydev) > > static struct phy_driver mv3310_drivers[] = { > { > - .phy_id = 0x002b09aa, > + .phy_id = MARVELL_PHY_ID_88X3310, > .phy_id_mask = MARVELL_PHY_ID_MASK, > .name = "mv88x3310", > .features = PHY_10GBIT_FEATURES, > @@ -468,7 +482,7 @@ static struct phy_driver mv3310_drivers[] = { > module_phy_driver(mv3310_drivers); > > static struct mdio_device_id __maybe_unused mv3310_tbl[] = { > - { 0x002b09aa, MARVELL_PHY_ID_MASK }, > + { MARVELL_PHY_ID_88X3310, MARVELL_PHY_ID_MASK }, > { }, > }; > MODULE_DEVICE_TABLE(mdio, mv3310_tbl); > diff --git a/include/linux/marvell_phy.h b/include/linux/marvell_phy.h > index 1eb6f244588d..5851d68d828a 100644 > --- a/include/linux/marvell_phy.h > +++ b/include/linux/marvell_phy.h > @@ -20,6 +20,7 @@ > #define MARVELL_PHY_ID_88E1540 0x01410eb0 > #define MARVELL_PHY_ID_88E1545 0x01410ea0 > #define MARVELL_PHY_ID_88E3016 0x01410e60 > +#define MARVELL_PHY_ID_88X3310 0x002b09aa > > /* The MV88e6390 Ethernet switch contains embedded PHYs. These PHYs do > * not have a model ID. So the switch driver traps reads to the ID2 > -- > 2.19.2 > > -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up According to speedtest.net: 11.9Mbps down 500kbps up