2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-31 06:15:47 +00:00

netdev-vport: Use vport set_stats instead of internal dev.

In certain cases we require the ability to provide stats that are
added to the values collected by the kernel (currently only used
by bond fake devices).  Internal devices previously implemented
this directly but now that their stats are now handled by the vport
layer the functionality has been moved there.  This removes the
userspace code to set the stats and replaces it with a mechanism
to access the equivalent functionality in the vport layer.
This commit is contained in:
Jesse Gross
2010-06-09 12:54:34 -07:00
parent 7fbef77a30
commit f4b6076aca
8 changed files with 51 additions and 110 deletions

View File

@@ -158,6 +158,40 @@ netdev_vport_get_stats(const struct netdev *netdev, struct netdev_stats *stats)
return 0;
}
int
netdev_vport_set_stats(struct netdev *netdev, const struct netdev_stats *stats)
{
struct odp_vport_stats_req ovsr;
int err;
ovs_strlcpy(ovsr.devname, netdev_get_name(netdev), sizeof ovsr.devname);
ovsr.stats.rx_packets = stats->rx_packets;
ovsr.stats.tx_packets = stats->tx_packets;
ovsr.stats.rx_bytes = stats->rx_bytes;
ovsr.stats.tx_bytes = stats->tx_bytes;
ovsr.stats.rx_errors = stats->rx_errors;
ovsr.stats.tx_errors = stats->tx_errors;
ovsr.stats.rx_dropped = stats->rx_dropped;
ovsr.stats.tx_dropped = stats->tx_dropped;
ovsr.stats.collisions = stats->collisions;
ovsr.stats.rx_over_err = stats->rx_over_errors;
ovsr.stats.rx_crc_err = stats->rx_crc_errors;
ovsr.stats.rx_frame_err = stats->rx_frame_errors;
err = netdev_vport_do_ioctl(ODP_VPORT_STATS_SET, &ovsr);
/* If the vport layer doesn't know about the device, that doesn't mean it
* doesn't exist (after all were able to open it when netdev_open() was
* called), it just means that it isn't attached and we'll be getting
* stats a different way. */
if (err == ENODEV) {
err = EOPNOTSUPP;
}
return err;
}
int
netdev_vport_update_flags(struct netdev *netdev OVS_UNUSED,
enum netdev_flags off, enum netdev_flags on OVS_UNUSED,