linux/drivers/net/phy
Jacob Keller 3200fdd402 broadcom: fix support for PTP_EXTTS_REQUEST2 ioctl
Commit 7c571ac57d ("net: ptp: introduce .supported_extts_flags to
ptp_clock_info") modified the PTP core kernel logic to validate the
supported flags for the PTP_EXTTS_REQUEST ioctls, rather than relying on
each individual driver correctly checking its flags.

The bcm_ptp_enable() function implements support for PTP_CLK_REQ_EXTTS, but
does not check the flags, and does not forward the request structure into
bcm_ptp_extts_locked().

When originally converting the bcm-phy-ptp.c code, it was unclear what
edges the hardware actually timestamped. Thus, no flags were initialized in
the .supported_extts_flags field. This results in the kernel automatically
rejecting all userspace requests for the PTP_EXTTS_REQUEST2 ioctl.

This occurs because the PTP_STRICT_FLAGS is always assumed when operating
under PTP_EXTTS_REQUEST2. This has been the case since the flags
introduction by commit 6138e687c7 ("ptp: Introduce strict checking of
external time stamp options.").

The bcm-phy-ptp.c logic never properly supported strict flag validation,
as it previously ignored all flags including both PTP_STRICT_FLAGS and the
PTP_FALLING_EDGE and PTP_RISING_EDGE flags.

Reports from users in the field prove that the hardware timestamps the
rising edge. Encode this in the .supported_extts_flags field. This
re-enables support for the PTP_EXTTS_REQUEST2 ioctl.

Reported-by: James Clark <jjc@jclark.com>
Fixes: 7c571ac57d ("net: ptp: introduce .supported_extts_flags to ptp_clock_info")
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Reviewed-by: Kory Maincent <kory.maincent@bootlin.com>
Tested-by: James Clark <jjc@jclark.com>
Link: https://patch.msgid.link/20250918-jk-fix-bcm-phy-supported-flags-v1-2-747b60407c9c@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2025-09-22 11:36:30 -07:00
..
aquantia net: phy: aquantia: fix commenting format 2025-04-29 15:13:21 -07:00
mediatek net: phy: add Kconfig symbol PHY_PACKAGE 2025-06-16 14:59:30 -07:00
mscc phy: mscc: Stop taking ts_lock for tx_queue and use its own lock 2025-09-04 07:48:29 -07:00
qcom treewide: rename GPIO set callbacks back to their original names 2025-08-07 10:07:06 +02:00
realtek net: phy: realtek: add error handling to rtl8211f_get_wol 2025-06-25 16:54:31 -07:00
Kconfig net: phy: NXP_TJA11XX: Update Kconfig with TJA1102 support 2025-09-08 18:24:19 -07:00
Makefile net: phy: add Kconfig symbol PHY_PACKAGE 2025-06-16 14:59:30 -07:00
adin.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
adin1100.c net: phy: Allow loopback speed selection for PHY drivers 2025-03-20 08:45:08 +01:00
air_en8811h.c net: phy: air_en8811h: Introduce resume/suspend and clk_restore_context to ensure correct CKO settings after network interface reinitialization. 2025-07-01 19:35:43 -07:00
amd.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
as21xxx.c net: phy: Add support for Aeonsemi AS21xxx PHYs 2025-05-21 15:56:10 -07:00
ax88796b.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
ax88796b_rust.rs rust: module: introduce `authors` key 2025-03-10 15:12:17 +01:00
bcm-cygnus.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
bcm-phy-lib.c net: phy: broadcom: use genphy_c45_an_config_eee_aneg in bcm_config_lre_aneg 2024-11-07 20:31:06 -08:00
bcm-phy-lib.h net: phy: bcm-phy-lib: Implement BroadR-Reach link modes 2024-07-14 20:38:35 -07:00
bcm-phy-ptp.c broadcom: fix support for PTP_EXTTS_REQUEST2 ioctl 2025-09-22 11:36:30 -07:00
bcm7xxx.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
bcm63xx.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
bcm87xx.c net: phy: bcm87xx: simplify .match_phy_device OP 2025-05-21 15:56:09 -07:00
bcm54140.c net: phy: move PHY package related code from phy.h to phy_package.c 2025-03-05 19:13:53 -08:00
bcm84881.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
broadcom.c net: phy: bcm54811: PHY initialization 2025-07-09 19:32:31 -07:00
cicada.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
cortina.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
davicom.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
dp83tc811.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
dp83td510.c net: phy: dp83td510: introduce LED framework support 2025-02-10 17:49:19 -08:00
dp83tg720.c net: phy: dp83tg720: switch to adaptive polling and remove random delays 2025-06-13 18:09:47 -07:00
dp83640.c net: ptp: introduce .supported_perout_flags to ptp_clock_info 2025-04-15 20:20:58 -07:00
dp83640_reg.h
dp83822.c net: phy: simplify phy_get_internal_delay() 2025-06-12 18:23:54 -07:00
dp83848.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
dp83867.c net: phy: dp83867: use 2ns delay if not specified in DTB 2025-05-12 18:43:35 -07:00
dp83869.c net: phy: simplify phy_get_internal_delay() 2025-06-12 18:23:54 -07:00
et1011c.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
fixed_phy.c net: phy: fixed_phy: constify status argument where possible 2025-05-20 18:17:43 -07:00
icplus.c net: phy: pass PHY driver to .match_phy_device OP 2025-05-21 15:56:09 -07:00
intel-xway.c net: phy: simplify phy_get_internal_delay() 2025-06-12 18:23:54 -07:00
linkmode.c
lxt.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
marvell-88q2xxx.c net: phy: marvell-88q2xxx: Enable temperature measurement in probe again 2025-05-15 12:32:09 +02:00
marvell-88x2222.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
marvell.c net: phy: marvell: Align set_loopback() implementation 2025-03-20 08:45:08 +01:00
marvell10g.c net: phy: pass PHY driver to .match_phy_device OP 2025-05-21 15:56:09 -07:00
mdio-boardinfo.c net: phy: directly copy struct mdio_board_info in mdiobus_register_board_info 2025-06-13 16:37:23 -07:00
mdio-boardinfo.h net: phy: improve mdio-boardinfo.h 2025-06-13 16:37:23 -07:00
mdio-open-alliance.h
mdio_bus.c net: mdiobus: release reset_gpio in mdiobus_unregister_device() 2025-08-12 12:32:58 +02:00
mdio_bus_provider.c net: mdiobus: release reset_gpio in mdiobus_unregister_device() 2025-08-12 12:32:58 +02:00
mdio_device.c net: phy: assign default match function for non-PHY MDIO devices 2025-06-12 18:12:37 -07:00
mdio_devres.c net: fill in MODULE_DESCRIPTION()s for mdio_devres 2024-02-15 08:03:46 -08:00
meson-gxl.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
micrel.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2025-07-26 11:49:45 -07:00
microchip.c net: phy: microchip: limit 100M workaround to link-down events on LAN88xx 2025-07-10 18:08:16 -07:00
microchip_rds_ptp.c net: ptp: introduce .supported_perout_flags to ptp_clock_info 2025-04-15 20:20:58 -07:00
microchip_rds_ptp.h net: phy: microchip_rds_ptp: Header file library changes for PEROUT 2025-01-16 17:27:56 -08:00
microchip_t1.c net: phy: microchip_t1: Enable pin out specific to lan887x phy for PEROUT signal 2025-01-16 17:27:56 -08:00
microchip_t1s.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
mii_timestamper.c
motorcomm.c net: phy: Add driver for Motorcomm yt8821 2.5G ethernet phy 2024-09-05 15:21:12 +02:00
mxl-86110.c net: phy: add driver for MaxLinear MxL86110 PHY 2025-05-27 09:36:17 +02:00
mxl-gpy.c net: phy: mxl-gpy: remove call to devm_hwmon_sanitize_name 2025-03-21 18:05:30 +01:00
national.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
ncn26000.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
nxp-c45-tja11xx-macsec.c net: phy: nxp-c45-tja11xx: implement mdo_insert_tx_tag 2023-12-27 13:08:10 +00:00
nxp-c45-tja11xx.c net: phy: nxp-c45-tja11xx: fix the PHY ID mismatch issue when using C45 2025-08-12 12:01:07 +02:00
nxp-c45-tja11xx.h net: phy: c45-tja11xx: add support for outputting RMII reference clock 2024-10-15 10:44:52 +02:00
nxp-cbtx.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
nxp-tja11xx.c net: phy: pass PHY driver to .match_phy_device OP 2025-05-21 15:56:09 -07:00
open_alliance_helpers.c phy: Add Open Alliance helpers for the PHY framework 2024-08-16 10:16:26 -07:00
open_alliance_helpers.h phy: Add Open Alliance helpers for the PHY framework 2024-08-16 10:16:26 -07:00
phy-c45.c net: phy: move definition of genphy_c45_driver to phy_device.c 2025-06-12 18:23:08 -07:00
phy-caps.h net: phylink: Use phy_caps to get an interface's capabilities and modes 2025-03-18 09:03:12 +01:00
phy-core.c net: phy: MII-Lite PHY interface mode 2025-07-09 19:32:30 -07:00
phy.c net: phy: transfer phy_config_inband() locking responsibility to phylink 2025-09-05 17:49:43 -07:00
phy_caps.c net: phy: MII-Lite PHY interface mode 2025-07-09 19:32:30 -07:00
phy_device.c net: phy: fix phy_uses_state_machine() 2025-09-09 16:33:19 -07:00
phy_led_triggers.c net: phy: leds: fix memory leak 2025-04-22 18:25:18 -07:00
phy_link_topology.c phy: fix xa_alloc_cyclic() error handling 2025-03-19 09:57:37 +00:00
phy_package.c net: phy: make phy_package a separate module 2025-06-16 14:59:30 -07:00
phylib-internal.h net: phy: move __phy_package_[read|write]_mmd to phy_package.c 2025-06-16 14:59:29 -07:00
phylib.h net: phy: move PHY package MMD access function declarations from phy.h to phylib.h 2025-03-17 19:07:54 +01:00
phylink.c net: phy: transfer phy_config_inband() locking responsibility to phylink 2025-09-05 17:49:43 -07:00
qsemi.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
qt2025.rs Rust changes for v6.15 2025-03-30 17:03:26 -07:00
rockchip.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
sfp-bus.c net: sfp: Add helper to return the SFP bus name 2024-08-23 13:04:34 +01:00
sfp.c net: sfp: add quirk for FLYPRO copper SFP+ module 2025-09-02 14:04:16 -07:00
sfp.h net: sfp: Remove unused function declaration sfp_link_configure() 2023-08-07 08:53:55 +01:00
smsc.c net: phy: smsc: add proper reset flags for LAN8710A 2025-07-30 18:14:11 -07:00
spi_ks8995.c sysfs: treewide: switch back to bin_attribute::read()/write() 2025-06-17 10:44:13 +02:00
ste10Xp.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
stubs.c net: phy: provide phylib stubs for hardware timestamping operations 2023-08-02 19:11:06 -07:00
swphy.c
swphy.h
teranetics.c net: phy: pass PHY driver to .match_phy_device OP 2025-05-21 15:56:09 -07:00
uPD60620.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
vitesse.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
xilinx_gmii2rgmii.c net: phy: Allow loopback speed selection for PHY drivers 2025-03-20 08:45:08 +01:00