linux/drivers/net/ethernet/amd
Tom Lendacky 96f4d430c5 amd-xgbe: Improve KR auto-negotiation and training
Update xgbe-phy-v2.c to make use of the auto-negotiation (AN) phy hooks
to improve the ability to successfully complete Clause 73 AN when running
at 10gbps.  Hardware can sometimes have issues with CDR lock when the
AN DME page exchange is being performed.

The AN and KR training hooks are used as follows:
- The pre AN hook is used to disable CDR tracking in the PHY so that the
  DME page exchange can be successfully and consistently completed.
- The post KR training hook is used to re-enable the CDR tracking so that
  KR training can successfully complete.
- The post AN hook is used to check for an unsuccessful AN which will
  increase a CDR tracking enablement delay (up to a maximum value).

Add two debugfs entries to allow control over use of the CDR tracking
workaround.  The debugfs entries allow the CDR tracking workaround to
be disabled and determine whether to re-enable CDR tracking before or
after link training has been initiated.

Also, with these changes the receiver reset cycle that is performed during
the link status check can be performed less often.

Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2018-04-23 21:24:22 -04:00
..
xgbe amd-xgbe: Improve KR auto-negotiation and training 2018-04-23 21:24:22 -04:00
7990.c ethernet: amd: use IS_ENABLED() instead of checking for built-in or module 2016-09-12 20:27:58 -07:00
7990.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
a2065.c drivers/net: amd: Convert timers to use timer_setup() 2017-10-28 19:09:49 +09:00
a2065.h
am79c961a.c drivers/net: amd: Convert timers to use timer_setup() 2017-10-28 19:09:49 +09:00
am79c961a.h drivers/net: amd: Convert timers to use timer_setup() 2017-10-28 19:09:49 +09:00
amd8111e.c net: amd8111e: remove redundant assignment to 'tx_index' 2018-03-04 18:17:27 -05:00
amd8111e.h scripts/spelling.txt: add regsiter -> register spelling mistake 2017-05-08 17:15:13 -07:00
ariadne.c net: amd: constify zorro_device_id 2017-08-22 14:35:36 -07:00
ariadne.h
atarilance.c format-security: move static strings to const 2017-05-08 17:15:14 -07:00
au1000_eth.c au1000_eth: switch to dma_alloc_attrs 2017-08-29 10:03:27 +02:00
au1000_eth.h net: ethernet: amd: au1000_eth: use phydev from struct net_device 2016-07-15 16:41:35 -07:00
declance.c drivers/net: amd: Convert timers to use timer_setup() 2017-10-28 19:09:49 +09:00
hplance.c net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
hplance.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-12 19:56:15 -08:00
lance.c Annotate hardware config module parameters in drivers/net/ethernet/ 2017-04-20 12:02:32 +01:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mvme147.c net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
ni65.c Annotate hardware config module parameters in drivers/net/ethernet/ 2017-04-20 12:02:32 +01:00
ni65.h
nmclan_cs.c net: nmlan_cs: Use net_device_stats from struct net_device 2017-04-07 07:03:33 -07:00
pcnet32.c drivers/net: amd: Convert timers to use timer_setup() 2017-10-28 19:09:49 +09:00
sun3lance.c format-security: move static strings to const 2017-05-08 17:15:14 -07:00
sunlance.c drivers/net: amd: Convert timers to use timer_setup() 2017-10-28 19:09:49 +09:00