mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
net: Enable 64-bit net device statistics on 32-bit architectures
Use struct rtnl_link_stats64 as the statistics structure. On 32-bit architectures, insert 32 bits of padding after/before each field of struct net_device_stats to make its layout compatible with struct rtnl_link_stats64. Add an anonymous union in net_device; move stats into the union and add struct rtnl_link_stats64 stats64. Add net_device_ops::ndo_get_stats64, implementations of which will return a pointer to struct rtnl_link_stats64. Drivers that implement this operation must not update the structure asynchronously. Change dev_get_stats() to call ndo_get_stats64 if available, and to return a pointer to struct rtnl_link_stats64. Change callers of dev_get_stats() accordingly. Signed-off-by: Ben Hutchings <[email protected]> Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
parent
d19b514999
commit
be1f3c2c02
7 changed files with 90 additions and 67 deletions
|
|
@ -278,8 +278,9 @@ static int vlandev_seq_show(struct seq_file *seq, void *offset)
|
|||
{
|
||||
struct net_device *vlandev = (struct net_device *) seq->private;
|
||||
const struct vlan_dev_info *dev_info = vlan_dev_info(vlandev);
|
||||
const struct net_device_stats *stats;
|
||||
const struct rtnl_link_stats64 *stats;
|
||||
static const char fmt[] = "%30s %12lu\n";
|
||||
static const char fmt64[] = "%30s %12llu\n";
|
||||
int i;
|
||||
|
||||
if (!is_vlan_dev(vlandev))
|
||||
|
|
@ -291,12 +292,12 @@ static int vlandev_seq_show(struct seq_file *seq, void *offset)
|
|||
vlandev->name, dev_info->vlan_id,
|
||||
(int)(dev_info->flags & 1), vlandev->priv_flags);
|
||||
|
||||
seq_printf(seq, fmt, "total frames received", stats->rx_packets);
|
||||
seq_printf(seq, fmt, "total bytes received", stats->rx_bytes);
|
||||
seq_printf(seq, fmt, "Broadcast/Multicast Rcvd", stats->multicast);
|
||||
seq_printf(seq, fmt64, "total frames received", stats->rx_packets);
|
||||
seq_printf(seq, fmt64, "total bytes received", stats->rx_bytes);
|
||||
seq_printf(seq, fmt64, "Broadcast/Multicast Rcvd", stats->multicast);
|
||||
seq_puts(seq, "\n");
|
||||
seq_printf(seq, fmt, "total frames transmitted", stats->tx_packets);
|
||||
seq_printf(seq, fmt, "total bytes transmitted", stats->tx_bytes);
|
||||
seq_printf(seq, fmt64, "total frames transmitted", stats->tx_packets);
|
||||
seq_printf(seq, fmt64, "total bytes transmitted", stats->tx_bytes);
|
||||
seq_printf(seq, fmt, "total headroom inc",
|
||||
dev_info->cnt_inc_headroom_on_tx);
|
||||
seq_printf(seq, fmt, "total encap on xmit",
|
||||
|
|
|
|||
Loading…
Reference in a new issue