* [PATCH 2/2] lan78xx: add ndo_get_stats64
@ 2016-03-15 22:52 Woojung.Huh
2016-03-16 14:16 ` Sergei Shtylyov
0 siblings, 1 reply; 3+ messages in thread
From: Woojung.Huh @ 2016-03-15 22:52 UTC (permalink / raw)
To: davem, netdev; +Cc: UNGLinuxDriver
From: Woojung Huh <woojung.huh@microchip.com>
Add lan78xx_get_stats64 of ndo_get_stats64 to report
all statistics counters including errors from HW statistics.
Read from HW when auto suspend is disabled, use saved counter when
auto suspend is enabled because periodic call to ndo_get_stats64
prevents USB auto suspend.
Signed-off-by: Woojung Huh <woojung.huh@microchip.com>
---
drivers/net/usb/lan78xx.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
index f20890e..f4a9708f 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -3261,6 +3261,54 @@ void lan78xx_tx_timeout(struct net_device *net)
tasklet_schedule(&dev->bh);
}
+struct rtnl_link_stats64 *lan78xx_get_stats64(struct net_device *netdev,
+ struct rtnl_link_stats64 *storage)
+{
+ struct lan78xx_net *dev = netdev_priv(netdev);
+ struct lan78xx_statstage64 stats;
+
+ /* curr_stat is updated by timer.
+ * periodic reading from HW will prevent from entering USB auto suspend.
+ * if autosuspend is disabled, read from HW.
+ */
+ if (!dev->udev->dev.power.runtime_auto)
+ lan78xx_update_stats(dev);
+
+ mutex_lock(&dev->stats.access_lock);
+ memcpy(&stats, &dev->stats.curr_stat, sizeof(stats));
+ mutex_unlock(&dev->stats.access_lock);
+
+ /* calc by driver */
+ storage->rx_packets = (__u64)netdev->stats.rx_packets;
+ storage->tx_packets = (__u64)netdev->stats.tx_packets;
+ storage->rx_bytes = (__u64)netdev->stats.rx_bytes;
+ storage->tx_bytes = (__u64)netdev->stats.tx_bytes;
+
+ /* use counter */
+ storage->rx_length_errors = (stats.rx_undersize_frame_errors +
+ stats.rx_oversize_frame_errors);
+ storage->rx_crc_errors = stats.rx_fcs_errors;
+ storage->rx_frame_errors = stats.rx_alignment_errors;
+ storage->rx_fifo_errors = stats.rx_dropped_frames;
+ storage->rx_over_errors = stats.rx_oversize_frame_errors;
+ storage->rx_errors = (stats.rx_fcs_errors +
+ stats.rx_alignment_errors +
+ stats.rx_fragment_errors +
+ stats.rx_jabber_errors +
+ stats.rx_undersize_frame_errors +
+ stats.rx_oversize_frame_errors +
+ stats.rx_dropped_frames);
+
+ storage->tx_carrier_errors = stats.tx_carrier_errors;
+ storage->tx_errors = (stats.tx_fcs_errors +
+ stats.tx_excess_deferral_errors +
+ stats.tx_carrier_errors);
+
+ storage->multicast = stats.rx_multicast_frames;
+
+ return storage;
+}
+
static const struct net_device_ops lan78xx_netdev_ops = {
.ndo_open = lan78xx_open,
.ndo_stop = lan78xx_stop,
@@ -3274,6 +3322,7 @@ static const struct net_device_ops lan78xx_netdev_ops = {
.ndo_set_features = lan78xx_set_features,
.ndo_vlan_rx_add_vid = lan78xx_vlan_rx_add_vid,
.ndo_vlan_rx_kill_vid = lan78xx_vlan_rx_kill_vid,
+ .ndo_get_stats64 = lan78xx_get_stats64,
};
static void lan78xx_stat_monitor(unsigned long param)
--
2.7.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH 2/2] lan78xx: add ndo_get_stats64
2016-03-15 22:52 [PATCH 2/2] lan78xx: add ndo_get_stats64 Woojung.Huh
@ 2016-03-16 14:16 ` Sergei Shtylyov
2016-03-16 16:11 ` Woojung.Huh
0 siblings, 1 reply; 3+ messages in thread
From: Sergei Shtylyov @ 2016-03-16 14:16 UTC (permalink / raw)
To: Woojung.Huh, davem, netdev; +Cc: UNGLinuxDriver
Hello.
On 3/16/2016 1:52 AM, Woojung.Huh@microchip.com wrote:
> From: Woojung Huh <woojung.huh@microchip.com>
>
> Add lan78xx_get_stats64 of ndo_get_stats64 to report
> all statistics counters including errors from HW statistics.
>
> Read from HW when auto suspend is disabled, use saved counter when
> auto suspend is enabled because periodic call to ndo_get_stats64
> prevents USB auto suspend.
>
> Signed-off-by: Woojung Huh <woojung.huh@microchip.com>
> ---
> drivers/net/usb/lan78xx.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 49 insertions(+)
>
> diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
> index f20890e..f4a9708f 100644
> --- a/drivers/net/usb/lan78xx.c
> +++ b/drivers/net/usb/lan78xx.c
> @@ -3261,6 +3261,54 @@ void lan78xx_tx_timeout(struct net_device *net)
> tasklet_schedule(&dev->bh);
> }
>
> +struct rtnl_link_stats64 *lan78xx_get_stats64(struct net_device *netdev,
> + struct rtnl_link_stats64 *storage)
> +{
[...]
> + storage->rx_length_errors = (stats.rx_undersize_frame_errors +
> + stats.rx_oversize_frame_errors);
Parens not needed.
> + storage->rx_crc_errors = stats.rx_fcs_errors;
> + storage->rx_frame_errors = stats.rx_alignment_errors;
> + storage->rx_fifo_errors = stats.rx_dropped_frames;
> + storage->rx_over_errors = stats.rx_oversize_frame_errors;
> + storage->rx_errors = (stats.rx_fcs_errors +
> + stats.rx_alignment_errors +
> + stats.rx_fragment_errors +
> + stats.rx_jabber_errors +
> + stats.rx_undersize_frame_errors +
> + stats.rx_oversize_frame_errors +
> + stats.rx_dropped_frames);
Neither here.
> +
> + storage->tx_carrier_errors = stats.tx_carrier_errors;
> + storage->tx_errors = (stats.tx_fcs_errors +
> + stats.tx_excess_deferral_errors +
> + stats.tx_carrier_errors);
And here.
[...]
MBR, Sergei
^ permalink raw reply [flat|nested] 3+ messages in thread* RE: [PATCH 2/2] lan78xx: add ndo_get_stats64
2016-03-16 14:16 ` Sergei Shtylyov
@ 2016-03-16 16:11 ` Woojung.Huh
0 siblings, 0 replies; 3+ messages in thread
From: Woojung.Huh @ 2016-03-16 16:11 UTC (permalink / raw)
To: sergei.shtylyov, davem, netdev; +Cc: UNGLinuxDriver
> > + storage->rx_length_errors = (stats.rx_undersize_frame_errors +
> > + stats.rx_oversize_frame_errors);
>
> Parens not needed.
>
> > + storage->rx_errors = (stats.rx_fcs_errors +
> > + stats.rx_alignment_errors +
> > + stats.rx_fragment_errors +
> > + stats.rx_jabber_errors +
> > + stats.rx_undersize_frame_errors +
> > + stats.rx_oversize_frame_errors +
> > + stats.rx_dropped_frames);
>
> Neither here.
>
> > + storage->tx_errors = (stats.tx_fcs_errors +
> > + stats.tx_excess_deferral_errors +
> > + stats.tx_carrier_errors);
>
> And here.
>
Thanks. Will resubmit.
Woojung
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-03-16 16:11 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-15 22:52 [PATCH 2/2] lan78xx: add ndo_get_stats64 Woojung.Huh
2016-03-16 14:16 ` Sergei Shtylyov
2016-03-16 16:11 ` Woojung.Huh
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).