From: Russell King - ARM Linux admin <linux@armlinux.org.uk>
To: Oleksij Rempel <o.rempel@pengutronix.de>
Cc: Andrew Lunn <andrew@lunn.ch>, Michal Kubecek <mkubecek@suse.cz>,
Florian Fainelli <f.fainelli@gmail.com>,
Jonathan Corbet <corbet@lwn.net>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
mkl@pengutronix.de, kernel@pengutronix.de,
David Jander <david@protonic.nl>,
Jakub Kicinski <kuba@kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Heiner Kallweit <hkallweit1@gmail.com>
Subject: Re: [PATCH v1] ethtool: provide UAPI for PHY master/slave configuration.
Date: Fri, 17 Apr 2020 12:51:13 +0100 [thread overview]
Message-ID: <20200417115113.GR25745@shell.armlinux.org.uk> (raw)
In-Reply-To: <20200417112830.mhevvmnyxpve6xvk@pengutronix.de>
On Fri, Apr 17, 2020 at 01:28:30PM +0200, Oleksij Rempel wrote:
> On Fri, Apr 17, 2020 at 11:11:45AM +0100, Russell King - ARM Linux admin wrote:
> > On Wed, Apr 15, 2020 at 11:57:39PM +0200, Andrew Lunn wrote:
> > > > diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
> > > > index c8b0c34030d32..d5edf2bc40e43 100644
> > > > --- a/drivers/net/phy/phy_device.c
> > > > +++ b/drivers/net/phy/phy_device.c
> > > > @@ -604,6 +604,7 @@ struct phy_device *phy_device_create(struct mii_bus *bus, int addr, u32 phy_id,
> > > > dev->asym_pause = 0;
> > > > dev->link = 0;
> > > > dev->interface = PHY_INTERFACE_MODE_GMII;
> > > > + dev->master_slave = PORT_MODE_UNKNOWN;
> > >
> > > phydev->master_slave is how we want the PHY to be configured. I don't
> > > think PORT_MODE_UNKNOWN makes any sense in that contest. 802.3 gives
> > > some defaults. 9.12 should be 0, meaning manual master/slave
> > > configuration is disabled. The majority of linux devices are end
> > > systems. So we should default to a single point device. So i would
> > > initialise PORT_MODE_SLAVE, or whatever we end up calling that.
> >
> > I'm not sure that is a good idea given that we use phylib to drive
> > the built-in PHYs in DSA switches, which ought to prefer master mode
> > via the "is a multiport device" bit.
> >
> > Just to be clear, there are three bits that configure 1G PHYs, which
> > I've framed in briefer terminology:
> >
> > - 9.12: auto/manual configuration (1= manual 0= slave)
> > - 9.11: manual master/slave configuration (1= master, 0 = slave)
> > - 9.10: auto master/slave preference (1= multiport / master)
> >
> > It is recommended that multiport devices (such as DSA switches) set
> > 9.10 so they prefer to be master.
> >
> > It's likely that the reason is to reduce cross-talk interference
> > between neighbouring ports both inside the PHY, magnetics and the
> > board itself. I would suspect that this becomes critical when
> > operating at towards the maximum cable length.
> >
> > I've checked some of my DSA switches, and 9.10 appears to default to
> > one, as expected given what's in the specs.
>
> Hm..
> I've checked one of my DSA devices and 9.10 is by default 0 (proffered
> slave). It get slave even if it is preferred master and it is
> connected to a workstation (not multiport device) with a e1000e NIC.
> The e1000e is configured by default as preferred master.
>
> Grepping over current linux kernel I see following attempts to
> configure master/slave modes:
> drivers/net/ethernet/intel/e1000e/phy.c:597
> e1000_set_master_slave_mode()
>
> all intel NICs have similar code code and do not touch preferred bit
> 9.10. Only force master/slave modes. So the preferred master is probably
> PHY defaults, bootstrap or eeprom.
>
> drivers/net/ethernet/broadcom/tg3.c
> this driver seems to always force master mode
>
> drivers/net/phy/broadcom.c:39
> if ethernet controller is BCMA_CHIP_ID_BCM53573 and the PHY is PHY_ID_BCM54210E
> then force master mode.
>
> drivers/net/phy/micrel.c:637
> Force master mode if devicetree property is set: micrel,force-master
>
> drivers/net/phy/realtek.c:173
> /* RTL8211C has an issue when operating in Gigabit slave mode *
> return phy_set_bits(phydev, MII_CTRL1000,
> CTL1000_ENABLE_MASTER | CTL1000_AS_MASTER)
Short of working around hardware issues, I wonder whether some of the
above is due to not reading or understanding the 802.3 recommendation.
However, it is just a recommendation, not a requirement.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 10.2Mbps down 587kbps up
next prev parent reply other threads:[~2020-04-17 11:51 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-15 12:12 [PATCH v1] ethtool: provide UAPI for PHY master/slave configuration Oleksij Rempel
2020-04-15 12:19 ` Oleksij Rempel
2020-04-15 12:43 ` Michal Kubecek
2020-04-15 13:00 ` Oleksij Rempel
2020-04-15 14:14 ` Russell King - ARM Linux admin
2020-04-15 13:08 ` Oleksij Rempel
2020-04-15 13:11 ` Andrew Lunn
2020-04-15 13:37 ` Oleksij Rempel
2020-04-15 13:45 ` Andrew Lunn
2020-04-17 6:48 ` [EXT] " Christian Herber
2020-04-15 21:57 ` Andrew Lunn
2020-04-17 10:11 ` Russell King - ARM Linux admin
2020-04-17 11:28 ` Oleksij Rempel
2020-04-17 11:51 ` Russell King - ARM Linux admin [this message]
2020-04-17 14:32 ` Andrew Lunn
2020-04-17 14:35 ` Russell King - ARM Linux admin
-- strict thread matches above, loose matches on Subject: below --
2020-04-15 21:59 kbuild test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200417115113.GR25745@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=andrew@lunn.ch \
--cc=corbet@lwn.net \
--cc=davem@davemloft.net \
--cc=david@protonic.nl \
--cc=f.fainelli@gmail.com \
--cc=hkallweit1@gmail.com \
--cc=kernel@pengutronix.de \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mkl@pengutronix.de \
--cc=mkubecek@suse.cz \
--cc=netdev@vger.kernel.org \
--cc=o.rempel@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.