datapath: Use rtnl_link_stats64
authorSimon Horman <horms@verge.net.au>
Mon, 23 Aug 2010 06:30:11 +0000 (15:30 +0900)
committerJesse Gross <jesse@nicira.com>
Mon, 23 Aug 2010 18:37:44 +0000 (14:37 -0400)
This adds compatibility with a series kernel changesets that
introduces 64bit statistics. The final changeset (to date) being
"net: Document that dev_get_stats() returns the given pointer".
The relevant changesets were added between 2.6.35 and 2.6.36-rc1.

Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Jesse Gross <jesse@nicira.com>
datapath/vport-netdev.c

index e93a5ff..f6709e2 100644 (file)
@@ -211,9 +211,15 @@ struct kobject *netdev_get_kobj(const struct vport *vport)
 int netdev_get_stats(const struct vport *vport, struct odp_vport_stats *stats)
 {
        const struct netdev_vport *netdev_vport = netdev_vport_priv(vport);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
+       struct rtnl_link_stats64 *netdev_stats, storage;
+
+       netdev_stats = dev_get_stats(netdev_vport->dev, &storage);
+#else
        const struct net_device_stats *netdev_stats;
 
        netdev_stats = dev_get_stats(netdev_vport->dev);
+#endif
 
        stats->rx_bytes         = netdev_stats->rx_bytes;
        stats->rx_packets       = netdev_stats->rx_packets;