public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
From: Vladimir Oltean <olteanv@gmail.com>
To: Ansuel Smith <ansuelsmth@gmail.com>
Cc: Andrew Lunn <andrew@lunn.ch>,
	Vivien Didelot <vivien.didelot@gmail.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	Russell King <linux@armlinux.org.uk>,
	linux-kernel@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: [net-next PATCH 03/19] net: dsa: qca8k: skip sgmii delay on double cpu conf
Date: Fri, 19 Nov 2021 02:58:26 +0200	[thread overview]
Message-ID: <20211119005826.omgn7pj3cx3lwwr7@skbuf> (raw)
In-Reply-To: <20211117210451.26415-4-ansuelsmth@gmail.com>

On Wed, Nov 17, 2021 at 10:04:35PM +0100, Ansuel Smith wrote:
> With a dual cpu configuration rgmii+sgmii, skip configuring sgmii delay
> as it does cause no traffic. Configure only rgmii delay in this
> specific configuration.
> 
> Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
> ---

I feel that you owe a serious explanation about this SGMII delay
business, it's getting stranger and stranger. I chalked it up to the
fact that maybe QCA8334 has a strange SGMII implementation, where the
clock it is source-synchronous, as opposed to the data lanes themselves
being self-clocking. But the fact is, I don't really know, I never was
sure, never got an explanation, and now I am even less sure. And now
that I look in the datasheet for the pinout, I see a regular pair of
pins (SOP, SON) for the TX differential pair, and a regular pair of pins
(SIP, SIN) for the RX differential pair. No pin for any source
synchronous clock. So where is this SGMII_CLK125M clock localized, and
if it's inside the switch, and why do you need to configure its sampling
edge and delay, what is different between one board and another?

The RGMII and the SGMII CPU ports are different physical ports, are they not?
Why would the configuration of one affect the other? Do they share any
physical resource?

>  drivers/net/dsa/qca8k.c | 12 ++++++++++--
>  drivers/net/dsa/qca8k.h |  1 +
>  2 files changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/dsa/qca8k.c b/drivers/net/dsa/qca8k.c
> index bfffc1fb7016..ace465c878f8 100644
> --- a/drivers/net/dsa/qca8k.c
> +++ b/drivers/net/dsa/qca8k.c
> @@ -1041,8 +1041,13 @@ qca8k_parse_port_config(struct qca8k_priv *priv)
>  			if (mode == PHY_INTERFACE_MODE_RGMII ||
>  			    mode == PHY_INTERFACE_MODE_RGMII_ID ||
>  			    mode == PHY_INTERFACE_MODE_RGMII_TXID ||
> -			    mode == PHY_INTERFACE_MODE_RGMII_RXID)
> +			    mode == PHY_INTERFACE_MODE_RGMII_RXID) {
> +				if (priv->ports_config.rgmii_tx_delay[cpu_port_index] ||
> +				    priv->ports_config.rgmii_rx_delay[cpu_port_index])
> +					priv->ports_config.skip_sgmii_delay = true;
> +
>  				break;
> +			}
>  
>  			if (of_property_read_bool(port_dn, "qca,sgmii-txclk-falling-edge"))
>  				priv->ports_config.sgmii_tx_clk_falling_edge = true;
> @@ -1457,8 +1462,11 @@ qca8k_phylink_mac_config(struct dsa_switch *ds, int port, unsigned int mode,
>  
>  		/* From original code is reported port instability as SGMII also
>  		 * require delay set. Apply advised values here or take them from DT.
> +		 * In dual CPU configuration, apply only delay to rgmii as applying
> +		 * it also to the SGMII line cause no traffic to the entire switch.
>  		 */
> -		if (state->interface == PHY_INTERFACE_MODE_SGMII)
> +		if (state->interface == PHY_INTERFACE_MODE_SGMII &&
> +		    !priv->ports_config.skip_sgmii_delay)

I thought that the deal was that with the new "tx-internal-delay-ps" and
"rx-internal-delay-ps" properties, you would not enable any delays by
default in their absence. So if system is broken by the fact that delays
are applied on the SGMII port when they shouldn't have, the issue is in
the device tree and the fix is also there. This "skip_sgmii_delay" logic
on the other hand is fixing up the default delays that get applied in
lack of device tree properties.

>  			qca8k_mac_config_setup_internal_delay(priv, cpu_port_index, reg);
>  
>  		break;
> diff --git a/drivers/net/dsa/qca8k.h b/drivers/net/dsa/qca8k.h
> index 128b8cf85e08..57c4c0d93558 100644
> --- a/drivers/net/dsa/qca8k.h
> +++ b/drivers/net/dsa/qca8k.h
> @@ -275,6 +275,7 @@ struct qca8k_ports_config {
>  	bool sgmii_rx_clk_falling_edge;
>  	bool sgmii_tx_clk_falling_edge;
>  	bool sgmii_enable_pll;
> +	bool skip_sgmii_delay;
>  	u8 rgmii_rx_delay[QCA8K_NUM_CPU_PORTS]; /* 0: CPU port0, 1: CPU port6 */
>  	u8 rgmii_tx_delay[QCA8K_NUM_CPU_PORTS]; /* 0: CPU port0, 1: CPU port6 */
>  };
> -- 
> 2.32.0
> 


  reply	other threads:[~2021-11-19  0:58 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-17 21:04 [net-next PATCH 00/19] Multiple cleanup and feature for qca8k Ansuel Smith
2021-11-17 21:04 ` regmap: allow to define reg_update_bits for no bus configuration Ansuel Smith
2021-11-17 22:15   ` Mark Brown
2021-11-17 22:19     ` Ansuel Smith
2021-11-17 22:33       ` Mark Brown
2021-11-19  1:54         ` Jakub Kicinski
2021-11-19  2:00           ` Ansuel Smith
2021-11-19  2:00   ` patchwork-bot+netdevbpf
2021-11-17 21:04 ` [net-next PATCH 02/19] net: dsa: qca8k: remove redundant check in parse_port_config Ansuel Smith
2021-11-18 23:59   ` Vladimir Oltean
2021-11-17 21:04 ` [net-next PATCH 03/19] net: dsa: qca8k: skip sgmii delay on double cpu conf Ansuel Smith
2021-11-19  0:58   ` Vladimir Oltean [this message]
2021-11-17 21:04 ` [net-next PATCH 04/19] net: dsa: qca8k: convert to GENMASK/FIELD_PREP/FIELD_GET Ansuel Smith
2021-11-17 21:04 ` [net-next PATCH 05/19] net: dsa: qca8k: move read switch id function in qca8k_setup Ansuel Smith
2021-11-19  1:03   ` Vladimir Oltean
2021-11-19  1:08     ` Ansuel Smith
2021-11-21 18:34       ` Vladimir Oltean
2021-11-17 21:04 ` [net-next PATCH 06/19] net: dsa: qca8k: remove extra mutex_init " Ansuel Smith
2021-11-17 21:04 ` [net-next PATCH 07/19] net: dsa: qca8k: set regmap init as mandatory for regmap conversion Ansuel Smith
2021-11-19  1:09   ` Vladimir Oltean
2021-11-17 21:04 ` [net-next PATCH 08/19] net: dsa: qca8k: convert qca8k to regmap helper Ansuel Smith
2021-11-19  1:14   ` Vladimir Oltean
2021-11-19  1:28     ` Ansuel Smith
2021-11-21 18:31       ` Vladimir Oltean
2021-11-17 21:04 ` [net-next PATCH 09/19] net: dsa: qca8k: add additional MIB counter and make it dynamic Ansuel Smith
2021-11-19  1:17   ` Vladimir Oltean
2021-11-17 21:04 ` [net-next PATCH 10/19] net: dsa: qca8k: add support for port fast aging Ansuel Smith
2021-11-19  1:20   ` Vladimir Oltean
2021-11-17 21:04 ` [net-next PATCH 11/19] net: dsa: qca8k: add support for mirror mode Ansuel Smith
2021-11-19  1:42   ` Vladimir Oltean
2021-11-17 21:04 ` [net-next PATCH 12/19] net: dsa: qca8k: add set_ageing_time support Ansuel Smith
2021-11-19  1:47   ` Vladimir Oltean
2021-11-17 21:04 ` [net-next PATCH 13/19] net: dsa: qca8k: add min/max ageing time Ansuel Smith
2021-11-19  1:49   ` Vladimir Oltean
2021-11-17 21:04 ` [net-next PATCH 14/19] net: dsa: qca8k: add support for mdb_add/del Ansuel Smith
2021-11-19  2:06   ` Vladimir Oltean
2021-11-19  2:19     ` Ansuel Smith
2021-11-19  2:33       ` Vladimir Oltean
2021-11-17 21:04 ` [net-next PATCH 15/19] net: dsa: qca8k: add LAG support Ansuel Smith
2021-11-19  2:13   ` Vladimir Oltean
2021-11-17 21:04 ` [net-next PATCH 16/19] net: dsa: qca8k: enable mtu_enforcement_ingress Ansuel Smith
2021-11-19  2:20   ` Vladimir Oltean
2021-11-19  2:28     ` Ansuel Smith
2021-11-21 18:11       ` Vladimir Oltean
2021-11-17 21:04 ` [net-next PATCH 17/19] net: dsa: qca8k: move qca8k to qca dir Ansuel Smith
2021-11-17 21:04 ` [net-next PATCH 18/19] net: dsa: qca8k: use device_get_match_data instead of the OF variant Ansuel Smith
2021-11-19  2:21   ` Vladimir Oltean
2021-11-19  2:32     ` Ansuel Smith
2021-11-21 18:03       ` Vladimir Oltean
2021-11-17 21:04 ` [net-next PATCH 19/19] net: dsa: qca8k: split qca8k in common and 8xxx specific code Ansuel Smith

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=20211119005826.omgn7pj3cx3lwwr7@skbuf \
    --to=olteanv@gmail.com \
    --cc=andrew@lunn.ch \
    --cc=ansuelsmth@gmail.com \
    --cc=davem@davemloft.net \
    --cc=f.fainelli@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=netdev@vger.kernel.org \
    --cc=vivien.didelot@gmail.com \
    /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