summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorNikita Yushchenko <nikita.yoush@cogentembedded.com>2016-11-29 09:44:51 +0300
committerDavid S. Miller <davem@davemloft.net>2016-11-30 12:44:40 -0500
commit80cca775cdc4f8555612d2943a2872076b33e0ff (patch)
treec1b4020c8833a49749d72fc1aed29497262a3370 /net
parent17b463654f41f0aa334efd5a6efeab8a6e9496f7 (diff)
downloadlinux-80cca775cdc4f8555612d2943a2872076b33e0ff.tar.gz
linux-80cca775cdc4f8555612d2943a2872076b33e0ff.tar.bz2
linux-80cca775cdc4f8555612d2943a2872076b33e0ff.zip
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>
Diffstat (limited to 'net')
0 files changed, 0 insertions, 0 deletions