linux/drivers/net/phy
Russell King 9525ae8395 phylink: add phylink infrastructure
The link between the ethernet MAC and its PHY has become more complex
as the interface evolves.  This is especially true with serdes links,
where the part of the PHY is effectively integrated into the MAC.

Serdes links can be connected to a variety of devices, including SFF
modules soldered down onto the board with the MAC, a SFP cage with
a hotpluggable SFP module which may contain a PHY or directly modulate
the serdes signals onto optical media with or without a PHY, or even
a classical PHY connection.

Moreover, the negotiation information on serdes links comes in two
varieties - SGMII mode, where the PHY provides its speed/duplex/flow
control information to the MAC, and 1000base-X mode where both ends
exchange their abilities and each resolve the link capabilities.

This means we need a more flexible means to support these arrangements,
particularly with the hotpluggable nature of SFP, where the PHY can
be attached or detached after the network device has been brought up.

Ethtool information can come from multiple sources:
- we may have a PHY operating in either SGMII or 1000base-X mode, in
  which case we take ethtool/mii data directly from the PHY.
- we may have a optical SFP module without a PHY, with the MAC
  operating in 1000base-X mode - the ethtool/mii data needs to come
  from the MAC.
- we may have a copper SFP module with a PHY whic can't be accessed,
  which means we need to take ethtool/mii data from the MAC.

Phylink aims to solve this by providing an intermediary between the
MAC and PHY, providing a safe way for PHYs to be hotplugged, and
allowing a SFP driver to reconfigure the serdes connection.

Phylink also takes over support of fixed link connections, where the
speed/duplex/flow control are fixed, but link status may be controlled
by a GPIO signal.  By avoiding the fixed-phy implementation, phylink
can provide a faster response to link events: fixed-phy has to wait for
phylib to operate its state machine, which can take several seconds.
In comparison, phylink takes milliseconds.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

- remove sync status
- rework supported and advertisment handling
- add 1000base-x speed for fixed links
- use functionality exported from phy-core, reworking
  __phylink_ethtool_ksettings_set for it
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-08-06 20:55:29 -07:00
..
amd.c
aquantia.c net: phy: aquantia: add PHY ID of AQR106 and AQR107 2016-10-20 14:25:23 -04:00
at803x.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-10-30 12:42:58 -04:00
bcm7xxx.c net: phy: bcm7xxx: add support for 28nm EPHY 2017-03-13 21:51:49 -07:00
bcm63xx.c net: phy: bcm63xx: Utilize correct config_intr function 2017-01-18 16:56:10 -05:00
bcm87xx.c
bcm-cygnus.c net: phy: phy drivers should not set SUPPORTED_[Asym_]Pause 2016-12-10 23:31:19 -05:00
bcm-phy-lib.c net: phy: switch remaining users to phy_(read|write)_mmd() 2017-03-22 12:43:00 -07:00
bcm-phy-lib.h net: phy: broadcom: Add support code for reading PHY counters 2016-11-30 10:22:27 -05:00
broadcom.c net: phy: Remove residual magic from PHY drivers 2017-05-16 15:58:18 -04:00
cicada.c
cortina.c net: phy: Add Cortina CS4340 driver 2017-05-30 12:42:27 -04:00
davicom.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
dp83640_reg.h
dp83640.c net: dp83640: Avoid NULL pointer dereference. 2017-06-23 14:38:16 -04:00
dp83848.c net: phy: dp83848: Fix Typo 2017-03-24 15:33:32 +01:00
dp83867.c net: phy: dp83867: add workaround for incorrect RX_CTRL pin strap 2017-07-05 09:23:53 +01:00
et1011c.c
fixed_phy.c net: phy: fixed_phy: fix of_node leak in fixed_phy_unregister 2016-11-17 12:05:05 -05:00
icplus.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
intel-xway.c net: phy: switch remaining users to phy_(read|write)_mmd() 2017-03-22 12:43:00 -07:00
Kconfig phylink: add phylink infrastructure 2017-08-06 20:55:29 -07:00
lxt.c net: phy: lxt: Export link partner advertising 2017-06-20 13:41:24 -04:00
Makefile phylink: add phylink infrastructure 2017-08-06 20:55:29 -07:00
marvell10g.c net: phy: add Marvell Alaska X 88X3310 10Gigabit PHY support 2017-06-06 21:14:13 -04:00
marvell.c net: phy: marvell: logical vs bitwise OR typo 2017-08-04 10:55:54 -07:00
mdio_bus.c mdio_bus: Remove unneeded gpiod NULL check 2017-07-17 16:57:04 -07:00
mdio_device.c net: phy: Allow pre-declaration of MDIO devices 2017-02-07 10:51:46 -05:00
mdio-bcm-iproc.c net: phy: Initialize mdio clock at probe function 2017-02-09 17:10:23 -05:00
mdio-bcm-unimac.c net: phy: mdio-bcm-unimac: Allow specifying platform data 2017-07-31 14:40:58 -07:00
mdio-bitbang.c
mdio-boardinfo.c net: phy: Allow building mdio-boardinfo into the kernel 2017-03-29 10:32:32 -07:00
mdio-boardinfo.h net: phy: Allow building mdio-boardinfo into the kernel 2017-03-29 10:32:32 -07:00
mdio-cavium.c phy: mdio-cavium: Add missing MODULE_* annotations. 2016-03-16 19:55:37 -04:00
mdio-cavium.h phy: mdio-octeon: Refactor into two files/modules 2016-03-14 15:27:22 -04:00
mdio-gpio.c net: mdio-gpio: Use gpio subsystem to handle low-active pins 2017-01-12 15:05:10 -05:00
mdio-hisi-femac.c net: Add MDIO bus driver for the Hisilicon FEMAC 2016-07-16 21:32:58 -07:00
mdio-i2c.c net: phy: add I2C mdio bus 2017-08-06 20:55:28 -07:00
mdio-i2c.h net: phy: add I2C mdio bus 2017-08-06 20:55:28 -07:00
mdio-moxart.c
mdio-mux-bcm-iproc.c net: mdio-mux: bcm-iproc: call mdiobus_free() in error path 2017-05-08 17:59:33 -04:00
mdio-mux-gpio.c mdio: mux: Enhanced MDIO mux framework for integrated multiplexers 2016-06-10 23:24:53 -07:00
mdio-mux-mmioreg.c net: Convert to using %pOF instead of full_name 2017-07-24 13:41:48 -07:00
mdio-mux.c net: Convert to using %pOF instead of full_name 2017-07-24 13:41:48 -07:00
mdio-octeon.c phy: mdio-octeon: Refactor into two files/modules 2016-03-14 15:27:22 -04:00
mdio-sun4i.c mdio-sun4i: oops in error handling in probe 2016-03-21 11:30:01 -04:00
mdio-thunder.c phy: mdio-thunder: Add driver for Cavium Thunder SoC MDIO buses. 2016-03-14 15:27:22 -04:00
mdio-xgene.c drivers: net: phy: xgene: Add lock to protect mac access 2017-05-16 11:41:08 -04:00
mdio-xgene.h drivers: net: phy: xgene: Add lock to protect mac access 2017-05-16 11:41:08 -04:00
meson-gxl.c net: phy: Add Meson GXL Internal PHY driver 2016-11-09 12:50:55 -05:00
micrel.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-06-30 12:43:08 -04:00
microchip.c net: phy: Remove residual magic from PHY drivers 2017-05-16 15:58:18 -04:00
mscc.c net: phy: Add LED mode driver for Microsemi PHYs. 2017-02-08 13:29:04 -05:00
national.c net: phy: phy drivers should not set SUPPORTED_[Asym_]Pause 2016-12-10 23:31:19 -05:00
phy_device.c phylink: add phylink infrastructure 2017-08-06 20:55:29 -07:00
phy_led_triggers.c net: phy: leds: Break dependency of phy.h on phy_led_triggers.h 2017-01-25 14:40:19 -05:00
phy-c45.c net: phy: split out 10G genphy support 2017-06-06 21:14:13 -04:00
phy-core.c net: phy: add 1000Base-X to phy settings table 2017-08-06 20:55:28 -07:00
phy.c net: phy: export phy_start_machine() for phylink 2017-08-06 20:55:28 -07:00
phylink.c phylink: add phylink infrastructure 2017-08-06 20:55:29 -07:00
qsemi.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
realtek.c net: phy: realtek: fix enabling of the TX-delay for RTL8211F 2016-11-28 12:06:54 -05:00
smsc.c net: phy: smsc: fix buffer overflow in memcpy 2017-06-22 11:12:31 -04:00
spi_ks8995.c spi_ks8995: regs_size incorrect for some devices 2017-03-07 13:33:24 -08:00
ste10Xp.c
swphy.c phy: generate swphy registers on the fly 2016-06-27 10:40:57 -04:00
swphy.h phy: generate swphy registers on the fly 2016-06-27 10:40:57 -04:00
teranetics.c
vitesse.c net: phy: vitesse: add support for VSC8572 2016-12-02 10:36:47 -05:00
xilinx_gmii2rgmii.c net: phy: xgmiitorgmii: Fix non static symbol warning 2016-08-23 17:17:48 -07:00