linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ben Greear <greearb@candelatech.com>
To: Johannes Berg <johannes@sipsolutions.net>
Cc: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>,
	"Luis R . Rodriguez" <rodrigue@qca.qualcomm.com>,
	linux-wireless@vger.kernel.org
Subject: Re: [RFC] Expand byte counters in struct station_info
Date: Thu, 31 Jan 2013 09:16:06 -0800	[thread overview]
Message-ID: <510AA6D6.3000801@candelatech.com> (raw)
In-Reply-To: <1359628924.8415.5.camel@jlt4.sipsolutions.net>

On 01/31/2013 02:42 AM, Johannes Berg wrote:
> On Thu, 2013-01-31 at 11:46 +0200, Vladimir Kondratiev wrote:
>> Hi,
>>
>> Now wifi drivers reports per-station info using struct station_info;
>> and currently for the data counters it has:
>> 	u32 rx_bytes;
>> 	u32 tx_bytes;
>>
>> while for device-wide statistics one can use ndo_get_stats64() to fill
>> 64-bit counters in the struct rtnl_link_stats64, per-station statistics
>> are 32-bit.
>>
>> This becomes problematic with gigabit speeds now observed for .11ac and .11ad -
>> counters overflown every few seconds.
>>
>> I'd like to extend rx and tx byte counters to 64-bit.
>>
>> What is better - expand existing fields in struct station_info as:
>> 	u64 rx_bytes;
>> 	u64 tx_bytes;
>
> This.
>
>> or add ne ones like:
>> 	u64 rx_bytes64;
>> 	u64 tx_bytes64;
>
> I don't see a reason to do this.
>
>>
>> Then, I'll add
>> 	NL80211_STA_INFO_RX_BYTES64,
>> 	NL80211_STA_INFO_TX_BYTES64,
>> to the enum nl80211_sta_info
>>
>> Before doing patch, I'd like to hear comments.
>> Any consideration why is this not to be done or done differently?
>
> Sounds good to me.
>
> Two points:
>
> 1) You should provide the RX_TX_BYTES attributes, but I think only if
> the value fits into 32 bits. That way, we don't report invalid
> information.

There are already a large amounts of '64-bit' counters reported by
netlink that really wrap at 32-bits, so any solid user-space
code already has to deal with this by making assumptions (ie, if cur
value is < last value, then it wrapped at 32-bits, because there is no way you
actually missed polling a real 64-bit counter wrap).

So, you might not have to worry about this so much.

In my own work, my biggest problem is that stations reset their
counters when they got ifdown and then back to ifup.

Thanks,
Ben

-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com


  reply	other threads:[~2013-01-31 17:16 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-31  9:46 [RFC] Expand byte counters in struct station_info Vladimir Kondratiev
2013-01-31 10:42 ` Johannes Berg
2013-01-31 17:16   ` Ben Greear [this message]
2013-02-01 14:10   ` Vladimir Kondratiev
2013-02-04 11:13   ` [PATCH 0/2] wireless: expand per-station byte counters to 64bit Vladimir Kondratiev
2013-02-04 11:18     ` Johannes Berg
2013-02-04 11:54       ` Vladimir Kondratiev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=510AA6D6.3000801@candelatech.com \
    --to=greearb@candelatech.com \
    --cc=johannes@sipsolutions.net \
    --cc=linux-wireless@vger.kernel.org \
    --cc=qca_vkondrat@qca.qualcomm.com \
    --cc=rodrigue@qca.qualcomm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).