From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Vladimir Oltean <olteanv@gmail.com>
Cc: "Marek Behún" <kabel@kernel.org>,
netdev@vger.kernel.org, "Andrew Lunn" <andrew@lunn.ch>,
"Jakub Kicinski" <kuba@kernel.org>,
"David Miller" <davem@davemloft.net>,
"Rob Herring" <robh+dt@kernel.org>,
devicetree@vger.kernel.org
Subject: Re: [PATCH net-next 8/8] net: phy: marvell10g: select host interface configuration
Date: Thu, 18 Nov 2021 13:22:18 +0000 [thread overview]
Message-ID: <YZZTinTgX3SPWIZM@shell.armlinux.org.uk> (raw)
In-Reply-To: <20211118120334.jjujutp5cnjgwjq2@skbuf>
On Thu, Nov 18, 2021 at 02:03:34PM +0200, Vladimir Oltean wrote:
> On Wed, Nov 17, 2021 at 11:50:50PM +0100, Marek Behún wrote:
> > +static int mv3310_select_mactype(unsigned long *interfaces)
> > +{
> > + if (test_bit(PHY_INTERFACE_MODE_USXGMII, interfaces))
> > + return MV_V2_33X0_PORT_CTRL_MACTYPE_USXGMII;
> > + else if (test_bit(PHY_INTERFACE_MODE_SGMII, interfaces) &&
> > + test_bit(PHY_INTERFACE_MODE_10GBASER, interfaces))
> > + return MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER;
> > + else if (test_bit(PHY_INTERFACE_MODE_SGMII, interfaces) &&
> > + test_bit(PHY_INTERFACE_MODE_RXAUI, interfaces))
> > + return MV_V2_33X0_PORT_CTRL_MACTYPE_RXAUI;
> > + else if (test_bit(PHY_INTERFACE_MODE_SGMII, interfaces) &&
> > + test_bit(PHY_INTERFACE_MODE_XAUI, interfaces))
> > + return MV_V2_3310_PORT_CTRL_MACTYPE_XAUI;
> > + else if (test_bit(PHY_INTERFACE_MODE_10GBASER, interfaces))
> > + return MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER_RATE_MATCH;
> > + else if (test_bit(PHY_INTERFACE_MODE_RXAUI, interfaces))
> > + return MV_V2_33X0_PORT_CTRL_MACTYPE_RXAUI_RATE_MATCH;
> > + else if (test_bit(PHY_INTERFACE_MODE_XAUI, interfaces))
> > + return MV_V2_3310_PORT_CTRL_MACTYPE_XAUI_RATE_MATCH;
> > + else if (test_bit(PHY_INTERFACE_MODE_SGMII, interfaces))
> > + return MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER;
> > + else
> > + return -1;
> > +}
> > +
>
> I would like to understand this heuristic better. Both its purpose and
> its implementation.
>
> It says:
> (a) If the intersection between interface modes supported by the MAC and
> the PHY contains USXGMII, then use USXGMII as a MACTYPE
> (b) Otherwise, if the intersection contains both 10GBaseR and SGMII, then
> use 10GBaseR as MACTYPE
> (...)
> (c) Otherwise, if the intersection contains just 10GBaseR (no SGMII), then
> use 10GBaseR with rate matching as MACTYPE
> (...)
> (d) Otherwise, if the intersection contains just SGMII (no 10GBaseR), then
> use 10GBaseR as MACTYPE (no rate matching).
What is likely confusing you is a misinterpretation of the constant.
MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER actually means the PHY will
choose between 10GBASE-R, 5GBASE-R, 2500BASE-X, and SGMII depending
on the speed negotiated by the media. In this setting, the PHY
dictates which interface mode will be used.
I could have named "MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER" as
"MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER_5GBASER_2500BASEX_SGMII_AUTONEG_ON".
Similar with "MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER_NO_SGMII_AN", which
would be
"MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER_5GBASER_2500BASEX_SGMII_AUTONEG_OFF".
And "MV_V2_3310_PORT_CTRL_MACTYPE_XAUI" would be
"MV_V2_3310_PORT_CTRL_MACTYPE_XAUI_5GBASER_2500BASEX_SGMII_AUTONEG_ON".
Clearly using such long identifiers would have been rediculous,
especially the second one at 74 characters.
> First of all, what is MACTYPE exactly? And what is the purpose of
> changing it? What would happen if this configuration remained fixed, as
> it were?
The PHY defines the MAC interface mode depending on the MACTYPE
setting selected and the results of the media side negotiation.
I think the above answers your remaining questions.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
next prev parent reply other threads:[~2021-11-18 13:22 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-17 22:50 [PATCH net-next 0/8] Extend `phy-mode` to string array Marek Behún
2021-11-17 22:50 ` [PATCH net-next 1/8] dt-bindings: ethernet-controller: support multiple PHY connection types Marek Behún
2021-11-18 16:27 ` Andrew Lunn
2021-11-17 22:50 ` [PATCH net-next 2/8] net: Update documentation for *_get_phy_mode() functions Marek Behún
2021-11-18 16:28 ` Andrew Lunn
2021-11-17 22:50 ` [PATCH net-next 3/8] device property: add helper function for getting phy mode bitmap Marek Behún
2021-11-18 16:31 ` Andrew Lunn
2021-11-17 22:50 ` [PATCH net-next 4/8] net: phylink: update supported_interfaces with modes from fwnode Marek Behún
2021-11-18 9:05 ` Russell King (Oracle)
2021-11-18 16:33 ` Andrew Lunn
2021-11-18 17:08 ` Russell King (Oracle)
2021-11-18 17:33 ` Marek Behún
2021-11-18 17:39 ` Russell King (Oracle)
2021-11-18 20:38 ` Sean Anderson
2021-11-17 22:50 ` [PATCH net-next 5/8] net: phylink: pass supported PHY interface modes to phylib Marek Behún
2021-11-18 9:32 ` Russell King (Oracle)
2021-11-18 16:27 ` Andrew Lunn
2021-11-18 16:28 ` Russell King (Oracle)
2021-11-17 22:50 ` [PATCH net-next 6/8] net: phy: marvell10g: Use generic macro for supported interfaces Marek Behún
2021-11-18 9:33 ` Russell King (Oracle)
2021-11-18 16:27 ` Andrew Lunn
2021-11-17 22:50 ` [PATCH net-next 7/8] net: phy: marvell10g: Use tabs instead of spaces for indentation Marek Behún
2021-11-18 9:34 ` Russell King (Oracle)
2021-11-17 22:50 ` [PATCH net-next 8/8] net: phy: marvell10g: select host interface configuration Marek Behún
2021-11-18 9:41 ` Russell King (Oracle)
2021-11-18 13:46 ` Marek Behún
2021-11-18 14:25 ` Russell King (Oracle)
2021-11-18 12:03 ` Vladimir Oltean
2021-11-18 13:22 ` Russell King (Oracle) [this message]
2021-11-18 14:20 ` Vladimir Oltean
2021-11-18 14:47 ` Russell King (Oracle)
2021-11-18 15:09 ` Vladimir Oltean
2021-11-18 15:20 ` Marek Behún
2021-11-18 15:59 ` Russell King (Oracle)
2021-11-18 13:56 ` Marek Behún
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=YZZTinTgX3SPWIZM@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=kabel@kernel.org \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=robh+dt@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).