On Tue, 23 Apr 2024 19:31:41 +0800 Xuan Zhuo wrote:
> +static void virtnet_get_base_stats(struct net_device *dev,
> + struct netdev_queue_stats_rx *rx,
> + struct netdev_queue_stats_tx *tx)
> +{
> + /* The queue stats of the virtio-net will not be reset. So here we
> + * return 0.
> + */
> + rx->bytes = 0;
> + rx->packets = 0;
> + rx->alloc_fail = 0;
> + rx->hw_drops = 0;
> + rx->hw_drop_overruns = 0;
> + rx->csum_unnecessary = 0;
> + rx->csum_none = 0;
> + rx->csum_bad = 0;
> + rx->hw_gro_packets = 0;
> + rx->hw_gro_bytes = 0;
> + rx->hw_gro_wire_packets = 0;
> + rx->hw_gro_wire_bytes = 0;
> + rx->hw_drop_ratelimits = 0;
> +
> + tx->bytes = 0;
> + tx->packets = 0;
> + tx->hw_drops = 0;
> + tx->hw_drop_errors = 0;
> + tx->csum_none = 0;
> + tx->needs_csum = 0;
> + tx->hw_gso_packets = 0;
> + tx->hw_gso_bytes = 0;
> + tx->hw_gso_wire_packets = 0;
> + tx->hw_gso_wire_bytes = 0;
> + tx->hw_drop_ratelimits = 0;
Doesn't this need to be conditional based on device capabilities?
We should only assign the stats that the device is collecting
(both in base stats and per-queue).