linux/drivers/net
Jerome Brunet f1e2400a80 net: phy: meson-gxl: detect LPA corruption
The purpose of this change is to fix the incorrect detection of the link
partner (LP) advertised capabilities which sometimes happens with this PHY
(roughly 1 time in a dozen)

This issue may cause the link to be negotiated at 10Mbps/Full or
10Mbps/Half when 100MBps/Full is actually possible. In some case, the link
is even completely broken and no communication is possible.

To detect the corruption, we must look for a magic undocumented bit in the
WOL bank (hint given by the SoC vendor kernel) but this is not enough to
cover all cases. We also have to look at the LPA ack. If the LP supports
Aneg but did not ack our base code when aneg is completed, we assume
something went wrong.

The detection of a corrupted LPA triggers a restart of the aneg process.
This solves the problem but may take up to 6 retries to complete.

Fixes: 7334b3e47a ("net: phy: Add Meson GXL Internal PHY driver")
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-12-11 11:18:33 -05:00
..
appletalk Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
arcnet Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
bonding bonding: use nla_get_u64 to extract the value for IFLA_BOND_AD_ACTOR_SYSTEM 2017-11-28 15:56:40 -05:00
caif treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
can can: peak/pcie_fd: fix potential bug in restarting tx queue 2017-12-08 10:51:53 +01:00
cris drivers/net: cris: Convert timers to use timer_setup() 2017-11-21 15:46:44 -08:00
dsa net: dsa: mv88e6xxx: Unregister MDIO bus on error path 2017-12-07 13:53:05 -05:00
ethernet net: mvpp2: fix the RSS table entry offset 2017-12-08 14:35:15 -05:00
fddi License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
fjes
hamradio treewide: Remove TIMER_FUNC_TYPE and TIMER_DATA_TYPE casts 2017-11-21 16:35:54 -08:00
hippi Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
hyperv hv_netvsc: preserve hw_features on mtu/channels/ringparam changes 2017-11-16 10:49:00 +09:00
ieee802154 ieee802154: ca8210: use __func__ macro for debug messages 2017-11-06 16:39:14 +01:00
ipvlan ipvlan: Add the skb->mark as flow4's member to lookup route 2017-12-03 09:44:02 -05:00
phy net: phy: meson-gxl: detect LPA corruption 2017-12-11 11:18:33 -05:00
plip net: plip: mark expected switch fall-throughs 2017-11-05 22:19:00 +09:00
ppp ppp: exit_net cleanup checks added 2017-11-14 15:46:17 +09:00
slip treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
team Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
usb usbnet: fix alignment for frames with no ethernet header 2017-12-07 14:32:30 -05:00
vmxnet3
wan Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-29 13:10:25 -08:00
wimax License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
wireless Third batch of iwlwifi patches intended for 4.15. 2017-12-07 15:50:34 +02:00
xen-netback xen-netback: Fix logging message with spurious period after newline 2017-12-06 15:10:32 -05:00
dummy.c
eql.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
geneve.c geneve: only configure or fill UDP_ZERO_CSUM6_RX/TX info when CONFIG_IPV6 2017-11-24 03:29:22 +09:00
gtp.c
ifb.c
Kconfig
LICENSE.SRC
loopback.c
macsec.c genetlink: fix genlmsg_nlhdr() 2017-11-16 10:49:00 +09:00
macvlan.c
macvtap.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-10-30 21:09:24 +09:00
Makefile Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c drivers/net: ntb_netdev: Convert timers to use timer_setup() 2017-11-01 12:38:45 +09:00
rionet.c
sb1000.c
Space.c
sungem_phy.c
tap.c tap: free skb if flags error 2017-12-02 21:31:03 -05:00
thunderbolt.c net: thunderbolt: Stop using zero to mean no valid DMA mapping 2017-11-25 23:56:02 +09:00
tun.c tun: free skb in early errors 2017-12-02 21:31:03 -05:00
veth.c
virtio_net.c virtio: bugfixes 2017-12-08 12:58:51 -08:00
vrf.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
vsockmon.c
vxlan.c vxlan: use __be32 type for the param vni in __vxlan_fdb_delete 2017-11-28 15:57:12 -05:00
xen-netfront.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-29 13:10:25 -08:00