Re: [PATCH net-next v5 07/10] forcedeth: implement ndo_get_stats64() API
From: David Decotigny <hidden>
Date: 2011-11-16 20:46:36
Also in:
lkml
Thanks to you all! I have an implementation that's similar to sky2's. I will run the usual set of tests and send the updated patch series here. Regards, -- David Decotigny On Wed, Nov 16, 2011 at 12:32 PM, Eric Dumazet [off-list ref] wrote:
Le mercredi 16 novembre 2011 à 19:32 +0000, Ben Hutchings a écrit :quoted
On Wed, 2011-11-16 at 11:25 -0800, David Decotigny wrote:quoted
Thanks for your feedback on these concerns. On Wed, Nov 16, 2011 at 9:14 AM, Ben Hutchings [off-list ref] wrote:quoted
On Wed, 2011-11-16 at 08:55 -0800, Stephen Hemminger wrote:quoted
Or realize that the Tx side is single threaded by dev->xmit_lock already and the Rx side is single threaded by NAPI.Right.Yes, that's what I meant by "Each software stat field is updated by one single writer." in a previous email. However, I think that TX and RX paths are not always synchronized. So I'm afraid that if I'm using a single seqcount, I might run into trouble in the absence of a lock around each update.... and I'd really prefer to avoid such a lock. Are you suggesting I should use 2 independent seqcounts? One for RX path, the other for TX path, all this without a lock around writers?Yes, there should be 1 for each path.David, drivers/net/ethernet/marvell/sky2.c contains code like that (different syncpfor rx/tx) TX path: u64_stats_update_begin(&sky2->tx_stats.syncp); ++sky2->tx_stats.packets; sky2->tx_stats.bytes += skb->len; u64_stats_update_end(&sky2->tx_stats.syncp); RX path: u64_stats_update_begin(&sky2->rx_stats.syncp); sky2->rx_stats.packets += packets; sky2->rx_stats.bytes += bytes; u64_stats_update_end(&sky2->rx_stats.syncp);