On Mon, 2017-07-31 at 01:01 +0100, Jianming.qiao wrote:
...

> +     for (q = 0; q < dev->num_tx_queues; q++) {
> +             ring = &priv->tx_rings[q];
> +             do {
> +                     start = u64_stats_fetch_begin_irq(&stats64->syncp);
> +                     tx_bytes += ring->bytes;
> +                     tx_packets += ring->packets;
> +             } while (u64_stats_fetch_retry_irq(&stats64->syncp, start));
> +     }


This is broken.

If the retry loop is ever done, tx_bytes and tx_packets get wrong value.



Reply via email to