OpenCloudOS-Kernel/drivers/net/ethernet/freescale
Nikita Yushchenko 80cca775cd net: fec: cache statistics while device is down
Execution 'ethtool -S' on fec device that is down causes OOPS on Vybrid
board:

Unhandled fault: external abort on non-linefetch (0x1008) at 0xe0898200
pgd = ddecc000
[e0898200] *pgd=9e406811, *pte=400d1653, *ppte=400d1453
Internal error: : 1008 [#1] SMP ARM
...

Reason of OOPS is that fec_enet_get_ethtool_stats() accesses fec
registers while IPG clock is stopped by PM.

Fix that by caching statistics in fec_enet_private. Cache is initialized
at device probe time, and updated at statistics request time if device
is up, and also just before turning device off on down path.

Additional locking is not needed, since cached statistics is accessed
either before device is registered, or under rtnl_lock().

Signed-off-by: Nikita Yushchenko <nikita.yoush@cogentembedded.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-11-30 12:44:40 -05:00
..
fman net: fsl/fman: fix fixed-link-phydev reference leak 2016-11-27 20:01:15 -05:00
fs_enet net: ethernet: fs_enet: fix fixed-link phydev leaks 2016-11-29 23:17:02 -05:00
Kconfig fsl/fman: Add FMan MURAM support 2015-12-27 20:51:39 -05:00
Makefile net: fec: make driver endian-safe 2016-01-25 10:51:52 -08:00
fec.h net: fec: cache statistics while device is down 2016-11-30 12:44:40 -05:00
fec_main.c net: fec: cache statistics while device is down 2016-11-30 12:44:40 -05:00
fec_mpc52xx.c net: ethernet: fec-mpc52xx: use phy_ethtool_{get|set}_link_ksettings 2016-05-16 22:20:06 -04:00
fec_mpc52xx.h drivers/net: fix up stale paths from driver reorg 2012-01-30 12:54:40 -05:00
fec_mpc52xx_phy.c mdio: Move allocation of interrupts into core 2016-01-07 14:31:26 -05:00
fec_ptp.c net: fec: avoid timespec use 2015-10-05 03:16:39 -07:00
fsl_pq_mdio.c net/fsl_pq_mdio: use IS_ENABLED() instead of checking for built-in or module 2016-09-12 20:27:58 -07:00
gianfar.c net: ethernet: gianfar: fix fixed-link phydev leaks 2016-11-29 23:17:02 -05:00
gianfar.h gianfar: prevent fragmentation in DSA environments 2016-08-23 16:48:59 -07:00
gianfar_ethtool.c net: ethernet: gianfar: use phy_ethtool_{get|set}_link_ksettings 2016-05-16 21:51:40 -04:00
gianfar_ptp.c gianfar_ptp: replace get_of_u32 with of_property_read_u32 2016-02-25 16:22:02 -05:00
ucc_geth.c net: ethernet: ucc_geth: fix fixed-link phydev leaks 2016-11-29 23:17:02 -05:00
ucc_geth.h QE: Move QE from arch/powerpc to drivers/soc 2015-12-22 17:12:56 -06:00
ucc_geth_ethtool.c net: ethernet: ucc: move to new ethtool api {get|set}_link_ksettings 2016-05-03 13:03:52 -04:00
xgmac_mdio.c net/fsl: use of_property_read_bool 2016-08-08 16:15:00 -07:00