Re: [net-next PATCH v4 06/13] net: dsa: qca8k: move rgmii delay detection to phylink mac_config

From: Andrew Lunn
Date: Sun Oct 10 2021 - 11:18:28 EST


> > -{
> > - struct device_node *port_dn;
> > - phy_interface_t mode;
> > - struct dsa_port *dp;
> > - u32 val;
> > -
> > - /* CPU port is already checked */
> > - dp = dsa_to_port(priv->ds, 0);
> > -
> > - port_dn = dp->dn;
> > -
> > - /* Check if port 0 is set to the correct type */
> > - of_get_phy_mode(port_dn, &mode);
> > - if (mode != PHY_INTERFACE_MODE_RGMII_ID &&
> > - mode != PHY_INTERFACE_MODE_RGMII_RXID &&
> > - mode != PHY_INTERFACE_MODE_RGMII_TXID) {
> > - return 0;
> > - }
> > -
> > - switch (mode) {
> > - case PHY_INTERFACE_MODE_RGMII_ID:
> > - case PHY_INTERFACE_MODE_RGMII_RXID:
>
> Also, since you touch this area.
> There have been tons of discussions on this topic, but I believe that
> your interpretation of the RGMII delays is wrong.
> Basically a MAC should not apply delays based on the phy-mode string (so
> it should treat "rgmii" same as "rgmii-id"), but based on the value of
> "rx-internal-delay-ps" and "tx-internal-delay-ps".
> The phy-mode is for a PHY to use.

There is one exception to this, when the MAC is taking the place of a
PHY, i.e. CPU port. You need delays added somewhere, and the mv88e6xxx
driver will look at the phy-mode in this case. And i think in general,
a DSA driver needs this for the CPU port.

Andrew