linux/drivers/net/phy
Niklas Söderlund 569bf6d481 net: phy: Check for read errors in SIOCGMIIREG
When reading registers from the PHY using the SIOCGMIIREG IOCTL any
errors returned from either mdiobus_read() or mdiobus_c45_read() are
ignored, and parts of the returned error is passed as the register value
back to user-space.

For example, if mdiobus_c45_read() is used with a bus that do not
implement the read_c45() callback -EOPNOTSUPP is returned. This is
however directly stored in mii_data->val_out and returned as the
registers content. As val_out is a u16 the error code is truncated and
returned as a plausible register value.

Fix this by first checking the return value for errors before returning
it as the register content.

Before this patch,

    # phytool read eth0/0:1/0
    0xffa1

After this change,

    $ phytool read eth0/0:1/0
    error: phy_read (-95)

Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://patch.msgid.link/20240903171536.628930-1-niklas.soderlund+renesas@ragnatech.se
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2024-09-04 17:01:21 -07:00
..
aquantia net: phy: aquantia: only poll GLOBAL_CFG regs on aqr113, aqr113c and aqr115c 2024-07-30 18:27:58 -07:00
mscc net: Add struct kernel_ethtool_ts_info 2024-07-15 08:02:26 -07:00
qcom net: phy: add helpers to handle sfp phy connect/disconnect 2024-08-23 13:04:34 +01:00
adin.c net: phy: adin: allow control of Fast Link Down 2023-11-29 19:49:38 -08:00
adin1100.c net: phy: adin1100: Add interrupt support for link change 2024-01-31 16:22:29 -08:00
air_en8811h.c net: phy: air_en8811h: reset netdev rules when LED is set manually 2024-05-13 13:51:17 -07:00
amd.c net: phy: amd: Support the Altima AMI101L 2023-10-03 11:44:09 +02:00
ax88796b_rust.rs rust: net::phy unified read/write API for C22 and C45 registers 2024-08-30 10:27:35 +01:00
ax88796b.c net: phy: fix regression with AX88772A PHY driver 2023-09-19 17:03:44 +02:00
bcm-cygnus.c
bcm-phy-lib.c net: phy: bcm-phy-lib: Implement BroadR-Reach link modes 2024-07-14 20:38:35 -07: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 net: Add struct kernel_ethtool_ts_info 2024-07-15 08:02:26 -07:00
bcm7xxx.c net: phy: bcm7xxx: Add missing 16nm EPHY statistics 2023-10-18 18:13:13 -07:00
bcm63xx.c
bcm87xx.c net: phy: fill in missing MODULE_DESCRIPTION()s 2023-11-01 21:50:56 -07:00
bcm54140.c net: phy: extend PHY package API to support multiple global address 2023-12-17 20:10:07 +00:00
bcm84881.c net: phy: bcm84881: fill in possible_interfaces 2023-11-27 18:04:12 -08:00
broadcom.c net: phy: bcm-phy-lib: Implement BroadR-Reach link modes 2024-07-14 20:38:35 -07:00
cicada.c
cortina.c
davicom.c
dp83tc811.c
dp83td510.c phy: dp83td510: Utilize ALCD for cable length measurement when link is active 2024-08-26 09:33:58 -07:00
dp83tg720.c net: phy: dp83tg720: Add cable testing support 2024-08-16 10:16:26 -07:00
dp83640_reg.h
dp83640.c net: Add struct kernel_ethtool_ts_info 2024-07-15 08:02:26 -07:00
dp83822.c net: phy: dp8382x: keep WOL settings across suspends 2024-04-09 16:57:55 -07:00
dp83848.c
dp83867.c net: phy: dp83867: Add support for active-low LEDs 2024-02-02 10:12:21 +00:00
dp83869.c net: phy: dp83869: Fix MII mode failure 2024-04-25 11:25:07 +01:00
et1011c.c
fixed_phy.c
icplus.c
intel-xway.c
Kconfig net: phy: add Applied Micro QT2025 PHY driver 2024-08-30 10:27:35 +01:00
linkmode.c
lxt.c
Makefile net: phy: add Applied Micro QT2025 PHY driver 2024-08-30 10:27:35 +01:00
marvell-88q2xxx.c net: phy: marvell-88q2xxx: add support for Rev B1 and B2 2024-05-08 12:18:25 +01:00
marvell-88x2222.c net: phy: add helpers to handle sfp phy connect/disconnect 2024-08-23 13:04:34 +01:00
marvell.c net: phy: add helpers to handle sfp phy connect/disconnect 2024-08-23 13:04:34 +01:00
marvell10g.c net: phy: add helpers to handle sfp phy connect/disconnect 2024-08-23 13:04:34 +01:00
mdio_bus.c driver core: have match() callback in struct bus_type take a const * 2024-07-03 15:16:54 +02:00
mdio_device.c driver core: have match() callback in struct bus_type take a const * 2024-07-03 15:16:54 +02:00
mdio_devres.c net: fill in MODULE_DESCRIPTION()s for mdio_devres 2024-02-15 08:03:46 -08:00
mdio-boardinfo.c
mdio-boardinfo.h
mdio-open-alliance.h
mediatek-ge-soc.c net: phy: mediatek-ge-soc: follow netdev LED trigger semantics 2024-04-24 11:50:49 +01:00
mediatek-ge.c net: phy: mediatek-ge: do not disable EEE advertisement 2024-04-17 10:44:20 +01:00
meson-gxl.c
micrel.c net: phy: micrel: Fix the KSZ9131 MDI-X status issue 2024-07-30 15:10:53 -07:00
microchip_t1.c net: phy: microchip_t1: Adds support for lan887x phy 2024-08-26 09:21:15 -07:00
microchip_t1s.c
microchip.c net: phy: microchip: lan937x: add support for 100BaseTX PHY 2024-07-09 15:12:04 +02:00
mii_timestamper.c
motorcomm.c net: phy: motorcomm: Add pad drive strength cfg support 2023-07-24 10:36:45 +01:00
mxl-gpy.c net: phy: mxl-gpy: Remove interrupt mask clearing from config_init 2024-06-18 12:04:23 +02:00
national.c
ncn26000.c
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: Add struct kernel_ethtool_ts_info 2024-07-15 08:02:26 -07:00
nxp-c45-tja11xx.h net: phy: nxp-c45-tja11xx: add MACsec support 2023-12-27 13:08:10 +00:00
nxp-cbtx.c
nxp-tja11xx.c net: Convert some ethtool_sprintf() to ethtool_puts() 2023-12-08 10:56:25 +00: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_device.c net: phy: Use for_each_available_child_of_node_scoped() 2024-09-03 12:54:43 +02:00
phy_led_triggers.c
phy_link_topology.c net: phy: Introduce ethernet link topology representation 2024-08-23 13:04:34 +01:00
phy-c45.c net: phy: Immediately call adjust_link if only tx_lpi_enabled changes 2024-03-05 19:21:17 -08:00
phy-core.c net: phy: bcm54811: New link mode for BroadR-Reach 2024-07-14 20:38:34 -07:00
phy.c net: phy: Check for read errors in SIOCGMIIREG 2024-09-04 17:01:21 -07:00
phylink.c net: sfp: pass the phy_device when disconnecting an sfp module's PHY 2024-08-23 13:04:34 +01:00
qsemi.c
qt2025.rs net: phy: add Applied Micro QT2025 PHY driver 2024-08-30 10:27:35 +01:00
realtek.c net: phy: realtek: Fix setting of PHY LEDs Mode B bit on RTL8211F 2024-08-22 13:00:05 +02:00
rockchip.c
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: Always call sfp_sm_mod_remove() on remove 2024-06-06 17:34:03 -07:00
sfp.h net: sfp: Remove unused function declaration sfp_link_configure() 2023-08-07 08:53:55 +01:00
smsc.c net: Convert some ethtool_sprintf() to ethtool_puts() 2023-12-08 10:56:25 +00:00
spi_ks8995.c
ste10Xp.c
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
uPD60620.c
vitesse.c net: phy: vitesse: implement MDI-X configuration in vsc73xx 2024-08-27 14:26:49 -07:00
xilinx_gmii2rgmii.c net: phy: xilinx-gmii2rgmii: Adopt clock support 2024-05-29 13:10:57 +01:00