linux-stable/drivers/net/phy
Russell King 9d9facd32d net: sfp: cope with SFPs that set both LOS normal and LOS inverted
commit 624407d2cf upstream.

The SFP MSA defines two option bits in byte 65 to indicate how the
Rx_LOS signal on SFP pin 8 behaves:

bit 2 - Loss of Signal implemented, signal inverted from standard
        definition in SFP MSA (often called "Signal Detect").
bit 1 - Loss of Signal implemented, signal as defined in SFP MSA
        (often called "Rx_LOS").

Clearly, setting both bits results in a meaningless situation: it would
mean that LOS is implemented in both the normal sense (1 = signal loss)
and inverted sense (0 = signal loss).

Unfortunately, there are modules out there which set both bits, which
will be initially interpret as "inverted" sense, and then, if the LOS
signal changes state, we will toggle between LINK_UP and WAIT_LOS
states.

Change our LOS handling to give well defined behaviour: only interpret
these bits as meaningful if exactly one is set, otherwise treat it as
if LOS is not implemented.

Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/E1kyYQa-0004iR-CU@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Cc: Pali Rohár <pali@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-04-16 11:43:22 +02:00
..
mscc net: phy: mscc: adding LCPLL reset to VSC8514 2021-03-04 11:37:35 +01:00
adin.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
amd.c
aquantia.h
aquantia_hwmon.c
aquantia_main.c
at803x.c net: phy: at803x: constify static regulator_ops 2020-08-26 16:21:17 -07:00
ax88796b.c
bcm-cygnus.c
bcm-phy-lib.c net: phy: broadcom: Only advertise EEE for supported modes 2021-04-14 08:42:08 +02:00
bcm-phy-lib.h
bcm7xxx.c net: phy: bcm7xxx: Add an entry for BCM72113 2020-09-21 17:16:17 -07:00
bcm63xx.c
bcm87xx.c net: mdiobus: add clause 45 mdiobus accessors 2020-05-26 15:31:45 -07:00
bcm54140.c
bcm84881.c
broadcom.c net: phy: broadcom: Fix RGMII delays for BCM50160 and BCM50610M 2021-03-30 14:32:05 +02:00
cicada.c
cortina.c net: mdiobus: add clause 45 mdiobus accessors 2020-05-26 15:31:45 -07:00
davicom.c
dp83tc811.c
dp83640.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-09-04 21:28:59 -07:00
dp83640_reg.h
dp83822.c net: phy: introduce phydev->port 2021-03-30 14:32:05 +02:00
dp83848.c
dp83867.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-09-04 21:28:59 -07:00
dp83869.c net: phy: introduce phydev->port 2021-03-30 14:32:05 +02:00
et1011c.c
fixed_phy.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
icplus.c
intel-xway.c
Kconfig mdio: fix mdio-thunder.c dependency & build error 2020-09-27 13:21:28 -07:00
linkmode.c
lxt.c net: phy: introduce phydev->port 2021-03-30 14:32:05 +02:00
Makefile net: phy: Sort Kconfig and Makefile 2020-08-27 06:55:51 -07:00
marvell.c net: phy: introduce phydev->port 2021-03-30 14:32:05 +02:00
marvell10g.c net: phy: introduce phydev->port 2021-03-30 14:32:05 +02:00
mdio-boardinfo.c net: phy: Fixup parameters in kerneldoc 2020-07-07 12:47:10 -07:00
mdio-boardinfo.h
mdio_bus.c net: mdiobus: Remove WARN_ON_ONCE(in_interrupt()) 2020-09-29 14:02:54 -07:00
mdio_device.c net: mdio device: use flexible sleeping in reset function 2020-08-03 15:01:02 -07:00
mdio_devres.c of: mdio: provide devm_of_mdiobus_register() 2020-06-30 15:57:34 -07:00
meson-gxl.c
micrel.c net: phy: introduce phydev->port 2021-03-30 14:32:05 +02:00
microchip.c
microchip_t1.c
mii_timestamper.c
national.c
nxp-tja11xx.c net: ethtool: Add generic parts of cable test TDR 2020-05-26 23:21:48 -07:00
phy-c45.c net: phy: split devices_in_package 2020-06-19 20:17:15 -07:00
phy-core.c net: phy: Document core PHY structures 2020-09-23 18:02:49 -07:00
phy.c net: phy: introduce phydev->port 2021-03-30 14:32:05 +02:00
phy_device.c net: phy: introduce phydev->port 2021-03-30 14:32:05 +02:00
phy_led_triggers.c
phylink.c net: phylink: Fix phylink_err() function name error in phylink_major_config 2021-03-30 14:31:59 +02:00
qsemi.c
realtek.c net: phy: realtek: support paged operations on RTL8201CP 2020-11-10 16:11:39 -08:00
rockchip.c
sfp-bus.c net: sfp: relax bitrate-derived mode check 2021-04-16 11:43:22 +02:00
sfp.c net: sfp: cope with SFPs that set both LOS normal and LOS inverted 2021-04-16 11:43:22 +02:00
sfp.h
smsc.c net: phy: smsc: fix clk error handling 2021-01-23 16:04:03 +01:00
spi_ks8995.c net: Use kobj_to_dev() API 2020-09-28 15:14:42 -07:00
ste10Xp.c
swphy.c
swphy.h
teranetics.c
uPD60620.c
vitesse.c
xilinx_gmii2rgmii.c