net: systemport: Fix 64-bit statistics dependency
authorFlorian Fainelli <f.fainelli@gmail.com>
Mon, 18 Sep 2017 23:31:30 +0000 (16:31 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 19 Sep 2017 03:58:45 +0000 (20:58 -0700)
commit8ecb1a29e11e24c458ee4ee59447d0ddf8274589
tree84fe6a2b4cdaa6f08bad6f3c45cde019eb4db779
parent129c6cda2de2a8ac44fab096152469999b727faf
net: systemport: Fix 64-bit statistics dependency

There are several problems with commit 10377ba7673d ("net: systemport:
Support 64bit statistics", first one got fixed in 7095c973453e ("net:
systemport: Fix 64-bit stats deadlock").

The second problem is that this specific code updates the
stats64.tx_{packets,bytes} from ndo_get_stats64() and that is what we
are returning to ethtool -S. If we are not running a tool that involves
calling ndo_get_stats64(), then we won't get updated ethtool stats.

The solution to this is to update the stats from both call sites,
factoring that into a specific function, While at it, don't just check
the sizeof() but also the type of the statistics in order to use the
64-bit stats seqlock.

Fixes: 10377ba7673d ("net: systemport: Support 64bit statistics")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bcmsysport.c