#include "compat.h"
+/* If the native device stats aren't 64 bit use the vport stats tracking instead. */
+#define USE_VPORT_STATS (sizeof(((struct net_device_stats *)0)->rx_bytes) < sizeof(u64))
+
static void netdev_port_receive(struct net_bridge_port *, struct sk_buff *);
/*
goto error_put;
}
+ /* If we are using the vport stats layer initialize it to the current
+ * values so we are roughly consistent with the device stats. */
+ if (USE_VPORT_STATS) {
+ struct odp_vport_stats stats;
+
+ err = netdev_get_stats(vport, &stats);
+ if (!err)
+ vport_set_stats(vport, &stats);
+ }
+
return vport;
error_put:
struct vport_ops netdev_vport_ops = {
.type = "netdev",
- .flags = VPORT_F_REQUIRED,
+ .flags = (VPORT_F_REQUIRED |
+ (USE_VPORT_STATS ? VPORT_F_GEN_STATS : 0)),
.init = netdev_init,
.exit = netdev_exit,
.create = netdev_create,