From: Roopa Prabhu <roopa@cumulusnetworks.com>
To: David Miller <davem@davemloft.net>
Cc: netdev@vger.kernel.org, jhs@mojatatu.com, tgraf@suug.ch,
nicolas.dichtel@6wind.com
Subject: Re: [PATCH net-next v5] rtnetlink: add new RTM_GETSTATS message to dump link stats
Date: Mon, 18 Apr 2016 21:43:32 -0700 [thread overview]
Message-ID: <5715B774.9070208@cumulusnetworks.com> (raw)
In-Reply-To: <20160418.234137.26692086759328024.davem@davemloft.net>
On 4/18/16, 8:41 PM, David Miller wrote:
> From: Roopa Prabhu <roopa@cumulusnetworks.com>
> Date: Mon, 18 Apr 2016 14:10:19 -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.
> I'm holding off on this until we sort out the 64-bit netlink
> attribute alignment issue.
sure,
>
> Meanwhile, I'll some kind of a fix into the tree for the
> rtnl_fill_stats() change so that it doesn't cause unaligned
> accesses.
>
> I just tested out a clever idea, where for architectures where
> unaligned accesses is a problem, we insert a zero length NOP attribute
> before the 64-bit stats. This makes it properly aligned. A quick
> hack patch just passed testing on my sparc64 box, but I'll go over it
> some more.
>
> diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
> index bb3a90b..5ffdcb3 100644
> --- a/include/uapi/linux/if_link.h
> +++ b/include/uapi/linux/if_link.h
> @@ -155,6 +155,7 @@ enum {
> IFLA_PROTO_DOWN,
> IFLA_GSO_MAX_SEGS,
> IFLA_GSO_MAX_SIZE,
> + IFLA_PAD,
> __IFLA_MAX
> };
>
> diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
> index a7a3d34..b192576 100644
> --- a/net/core/rtnetlink.c
> +++ b/net/core/rtnetlink.c
> @@ -1052,6 +1052,15 @@ static noinline_for_stack int rtnl_fill_stats(struct sk_buff *skb,
> struct rtnl_link_stats64 *sp;
> struct nlattr *attr;
>
> + /* Add a zero length NOP attribute so that the nla_data()
> + * of the IFLA_STATS64 will be 64-bit aligned.
> + */
> +#ifndef HAVE_EFFICIENT_UNALIGNED_ACCESS
> + attr = nla_reserve(skb, IFLA_PAD, 0);
> + if (!attr)
> + return -EMSGSIZE;
> +#endif
> +
> attr = nla_reserve(skb, IFLA_STATS64,
> sizeof(struct rtnl_link_stats64));
> if (!attr)
>
that is cleaver :)
thanks!
next prev parent reply other threads:[~2016-04-19 4:43 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-18 21:10 [PATCH net-next v5] rtnetlink: add new RTM_GETSTATS message to dump link stats Roopa Prabhu
2016-04-18 21:35 ` Eric Dumazet
2016-04-19 0:57 ` David Miller
2016-04-19 1:48 ` David Miller
2016-04-19 2:22 ` Eric Dumazet
2016-04-19 2:40 ` Roopa Prabhu
2016-04-19 3:49 ` David Miller
2016-04-19 3:52 ` David Miller
2016-04-19 10:09 ` Johannes Berg
2016-04-19 10:48 ` Emmanuel Grumbach
2016-04-19 18:23 ` David Miller
2016-04-19 19:41 ` Johannes Berg
2016-04-20 1:53 ` David Ahern
2016-04-20 7:32 ` Johannes Berg
2016-04-20 12:48 ` Jiri Benc
2016-04-20 13:17 ` Johannes Berg
2016-04-20 13:34 ` Jiri Benc
2016-04-20 20:13 ` Johannes Berg
2016-04-19 2:30 ` roopa
2016-04-19 3:41 ` David Miller
2016-04-19 4:17 ` Eric Dumazet
2016-04-19 4:32 ` Eric Dumazet
2016-04-19 5:03 ` David Miller
2016-04-19 18:31 ` David Miller
2016-04-19 18:45 ` Eric Dumazet
2016-04-19 18:47 ` Eric Dumazet
2016-04-19 19:08 ` Nicolas Dichtel
2016-04-19 23:50 ` David Miller
2016-04-20 3:54 ` Roopa Prabhu
2016-04-20 8:57 ` [PATCH net-next 0/4] libnl: enhance API to ease 64bit alignment for attribute Nicolas Dichtel
2016-04-20 8:57 ` [PATCH net-next 1/4] netlink: fix test alignment in nla_align_64bit() Nicolas Dichtel
2016-04-20 9:33 ` Eric Dumazet
2016-04-20 9:44 ` Nicolas Dichtel
2016-04-20 9:57 ` Eric Dumazet
2016-04-20 10:14 ` Nicolas Dichtel
2016-04-20 14:31 ` [PATCH net-next] net: fix HAVE_EFFICIENT_UNALIGNED_ACCESS typos Eric Dumazet
2016-04-20 15:03 ` David Miller
2016-04-20 8:57 ` [PATCH net-next 2/4] libnl: add more helpers to align attribute on 64-bit Nicolas Dichtel
2016-04-20 8:57 ` [PATCH net-next 3/4] ipmr: align RTA_MFC_STATS " Nicolas Dichtel
2016-04-20 8:57 ` [PATCH net-next 4/4] ip6mr: " Nicolas Dichtel
2016-04-21 16:58 ` [PATCH net-next v2 0/4] libnl: enhance API to ease 64bit alignment for attribute Nicolas Dichtel
2016-04-21 16:58 ` [PATCH net-next v2 1/4] libnl: add more helpers to align attributes on 64-bit Nicolas Dichtel
2016-04-21 16:58 ` [PATCH net-next v2 2/4] rtnl: use the new API to align IFLA_STATS* Nicolas Dichtel
2016-04-21 16:58 ` [PATCH net-next v2 3/4] ipmr: align RTA_MFC_STATS on 64-bit Nicolas Dichtel
2016-04-21 16:58 ` [PATCH net-next v2 4/4] ip6mr: " Nicolas Dichtel
2016-04-21 18:28 ` [PATCH net-next v2 0/4] libnl: enhance API to ease 64bit alignment for attribute David Miller
2016-04-21 22:00 ` Nicolas Dichtel
2016-04-22 5:31 ` David Miller
2016-04-19 19:05 ` [PATCH net-next v5] rtnetlink: add new RTM_GETSTATS message to dump link stats Roopa Prabhu
2016-04-19 22:49 ` David Miller
2016-04-20 3:53 ` Roopa Prabhu
2016-04-19 4:43 ` Roopa Prabhu [this message]
2016-04-19 7:45 ` Nicolas Dichtel
2016-04-19 16:00 ` David Miller
2016-04-19 8:26 ` Nicolas Dichtel
2016-04-19 19:55 ` Paul Moore
2016-04-19 20:40 ` Roopa Prabhu
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=5715B774.9070208@cumulusnetworks.com \
--to=roopa@cumulusnetworks.com \
--cc=davem@davemloft.net \
--cc=jhs@mojatatu.com \
--cc=netdev@vger.kernel.org \
--cc=nicolas.dichtel@6wind.com \
--cc=tgraf@suug.ch \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.