[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <570F3A2E.2000707@cumulusnetworks.com>
Date: Wed, 13 Apr 2016 23:35:26 -0700
From: roopa <roopa@...ulusnetworks.com>
To: David Miller <davem@...emloft.net>
CC: netdev@...r.kernel.org, jhs@...atatu.com
Subject: Re: [PATCH net-next v2 1/2] rtnetlink: add new RTM_GETSTATS message
to dump link stats
On 4/13/16, 9:19 PM, David Miller wrote:
> From: Roopa Prabhu <roopa@...ulusnetworks.com>
> Date: Fri, 8 Apr 2016 23:38:11 -0700
>
>> This patch adds a new RTM_GETSTATS message to query link stats via netlink
>> from the kernel. RTM_NEWLINK also dumps stats today, but RTM_NEWLINK
>> returns a lot more than just stats and is expensive in some cases when
>> frequent polling for stats from userspace is a common operation.
> Great work. One thing catches my eye:
>
>> + if (filter_mask & IFLA_STATS_FILTER_BIT(IFLA_STATS_LINK64)) {
>> + attr = nla_reserve(skb, IFLA_STATS_LINK64,
>> + sizeof(struct rtnl_link_stats64));
>> + if (!attr)
>> + return -EMSGSIZE;
>> +
>> + stats = dev_get_stats(dev, &temp);
>> +
>> + copy_rtnl_link_stats64(nla_data(attr), stats);
> This extra copy bothers me, so I tried to figure out what is going
> on here.
>
> dev_get_stats() always returns the rtnl_link_stats64 pointer it was
> given. We should be able to pass, therefore, nla_data(attr), straight
> there to avoid the copy.
nice catch. I picked this up straight from rtnl_fill_stats. agree, also thanks
for the example below.
>
> Bonding even uses dev_get_stats() in this way.
>
> The existing rtnl_fill_stats() can be improved similarly but is of
> course a separate change. In that case, we'd do something like:
>
> struct rtnl_link_stats64 *sp;
>
> attr = nla_reserve(skb, IFLA_STATS64,
> sizeof(struct rtnl_link_stats64));
> if (!attr)
> return -EMSGSIZE;
>
> sp = nla_data(attr);
> dev_get_stats(dev, sp);
>
> attr = nla_reserve(skb, IFLA_STATS,
> sizeof(struct rtnl_link_stats));
> if (!attr)
> return -EMSGSIZE;
>
> copy_rtnl_link_stats(nla_data(attr), sp);
I will submit a separate patch for this with some testing.
Will send a v3 out before end of this week.
Thank you!.
Powered by blists - more mailing lists