Message ID | 20240417164316.1755299-4-o.rempel@pengutronix.de (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | add support for TimeSync path delays | expand |
Hi Oleksij, kernel test robot noticed the following build warnings: [auto build test WARNING on net-next/main] url: https://github.com/intel-lab-lkp/linux/commits/Oleksij-Rempel/net-phy-Add-TimeSync-delay-query-support-to-PHYlib-API/20240418-004607 base: net-next/main patch link: https://lore.kernel.org/r/20240417164316.1755299-4-o.rempel%40pengutronix.de patch subject: [PATCH net-next v1 3/4] net: phy: realtek: provide TimeSync data path delays for RTL8211E config: arm-defconfig (https://download.01.org/0day-ci/archive/20240418/202404181340.89g7TIG1-lkp@intel.com/config) compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240418/202404181340.89g7TIG1-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202404181340.89g7TIG1-lkp@intel.com/ All warnings (new ones prefixed by >>): >> drivers/net/phy/realtek.c:278:2: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough] default: ^ drivers/net/phy/realtek.c:278:2: note: insert 'break;' to avoid fall-through default: ^ break; 1 warning generated. vim +278 drivers/net/phy/realtek.c 245 246 static int rtl8211e_get_timesync_data_path_delays(struct phy_device *phydev, 247 struct phy_timesync_delay *tsd) 248 { 249 phydev_warn(phydev, "Time stamping is not supported\n"); 250 251 switch (phydev->interface) { 252 case PHY_INTERFACE_MODE_RGMII: 253 case PHY_INTERFACE_MODE_RGMII_RXID: 254 case PHY_INTERFACE_MODE_RGMII_TXID: 255 case PHY_INTERFACE_MODE_RGMII_ID: 256 /* The values are measured with RTL8211E and LAN8841 as link 257 * partners and confirmed with i211 to be in sane range. 258 */ 259 if (phydev->speed == SPEED_1000) { 260 tsd->tx_min_delay_ns = 326; 261 tsd->rx_min_delay_ns = 406; 262 return 0; 263 } else if (phydev->speed == SPEED_100) { 264 tsd->tx_min_delay_ns = 703; 265 tsd->rx_min_delay_ns = 621; 266 return 0; 267 } else if (phydev->speed == SPEED_10) { 268 /* This value is suspiciously big, with atypical 269 * shift to Egress side. This value is confirmed 270 * by measuring RGMII-PHY-PHY-RGMII path delay. 271 * Similar results are confirmed with LAN8841 and i211 272 * as link partners. 273 */ 274 tsd->tx_min_delay_ns = 920231; 275 tsd->rx_min_delay_ns = 1674; 276 return 0; 277 } > 278 default: 279 break; 280 } 281 282 phydev_warn(phydev, "Not tested or not supported modes for path delay values\n"); 283 284 return -EOPNOTSUPP; 285 } 286
diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c index 1fa70427b2a26..e39fec8d166b9 100644 --- a/drivers/net/phy/realtek.c +++ b/drivers/net/phy/realtek.c @@ -221,6 +221,47 @@ static int rtl8211e_config_intr(struct phy_device *phydev) return err; } +static int rtl8211e_get_timesync_data_path_delays(struct phy_device *phydev, + struct phy_timesync_delay *tsd) +{ + phydev_warn(phydev, "Time stamping is not supported\n"); + + switch (phydev->interface) { + case PHY_INTERFACE_MODE_RGMII: + case PHY_INTERFACE_MODE_RGMII_RXID: + case PHY_INTERFACE_MODE_RGMII_TXID: + case PHY_INTERFACE_MODE_RGMII_ID: + /* The values are measured with RTL8211E and LAN8841 as link + * partners and confirmed with i211 to be in sane range. + */ + if (phydev->speed == SPEED_1000) { + tsd->tx_min_delay_ns = 326; + tsd->rx_min_delay_ns = 406; + return 0; + } else if (phydev->speed == SPEED_100) { + tsd->tx_min_delay_ns = 703; + tsd->rx_min_delay_ns = 621; + return 0; + } else if (phydev->speed == SPEED_10) { + /* This value is suspiciously big, with atypical + * shift to Egress side. This value is confirmed + * by measuring RGMII-PHY-PHY-RGMII path delay. + * Similar results are confirmed with LAN8841 and i211 + * as link partners. + */ + tsd->tx_min_delay_ns = 920231; + tsd->rx_min_delay_ns = 1674; + return 0; + } + default: + break; + } + + phydev_warn(phydev, "Not tested or not supported modes for path delay values\n"); + + return -EOPNOTSUPP; +} + static int rtl8211f_config_intr(struct phy_device *phydev) { u16 val; @@ -935,6 +976,7 @@ static struct phy_driver realtek_drvs[] = { .resume = genphy_resume, .read_page = rtl821x_read_page, .write_page = rtl821x_write_page, + .get_timesync_data_path_delays = rtl8211e_get_timesync_data_path_delays, }, { PHY_ID_MATCH_EXACT(0x001cc916), .name = "RTL8211F Gigabit Ethernet",
Provide default data path delays for RTL8211E. The measurements was done against with iMX8MP STMMAC and LAN8841 as the link partner. This values was calculated based on RGMII-PHY-PHY-RGMII measurements, where the link partner is LAN8841. Following values was measured: - data flow from RTL8211E to LAN8841: 746ns @ 1000Mbps 1770ns @ 100Mbps 932000ns @ 10Mbps - data flow from LAN8841 to RTL8211E: 594ns @ 1000Mbps 1130ns @ 100Mbps 8920ns @ 10Mbps Before this patch ptp4l reported following path delays: ~610ns @ 1000Mbps ~942ns @ 100Mbps ~465998ns @ 10Mbps PPS offset compared to grand master was: ~ -114ns @ 1000Mbps ~ -215ns @ 100Mbps ~ -465998ns @ 10Mbps Magnetic - Cable - Magnetic - delay in this setup was about 5ns. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> --- drivers/net/phy/realtek.c | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+)