From: Ben Hutchings <bhutchings@solarflare.com>
To: David Miller <davem@davemloft.net>
Cc: shemminger@vyatta.com, arnd@arndb.de, netdev@vger.kernel.org,
linux-net-drivers@solarflare.com
Subject: Re: [PATCHv2 1/2] net: Enable 64-bit net device statistics on 32-bit architectures
Date: Tue, 08 Jun 2010 12:35:28 +0100 [thread overview]
Message-ID: <1275996928.14011.83.camel@localhost> (raw)
In-Reply-To: <20100607.211829.63035366.davem@davemloft.net>
On Mon, 2010-06-07 at 21:18 -0700, David Miller wrote:
> From: Ben Hutchings <bhutchings@solarflare.com>
> Date: Fri, 04 Jun 2010 23:04:53 +0100
>
> > +#if BITS_PER_LONG == 64
> > +#define NET_DEVICE_STATS_DEFINE(name) u64 name
> > +#elif defined(__LITTLE_ENDIAN)
> > +#define NET_DEVICE_STATS_DEFINE(name) u32 name, pad_ ## name
> > +#else
> > +#define NET_DEVICE_STATS_DEFINE(name) u32 pad_ ## name, name
> > +#endif
> > +
> ...
> > + NET_DEVICE_STATS_DEFINE(rx_packets);
> > + NET_DEVICE_STATS_DEFINE(tx_packets);
> > + NET_DEVICE_STATS_DEFINE(rx_bytes);
> ...
> > static const char fmt[] = "%30s %12lu\n";
> > + static const char fmt64[] = "%30s %12llu\n";
> ...
> > + seq_printf(seq, fmt64, "total frames received", stats->rx_packets);
> > + seq_printf(seq, fmt64, "total bytes received", stats->rx_bytes);
> > + seq_printf(seq, fmt64, "Broadcast/Multicast Rcvd", stats->multicast);
>
> I guess you only built this on a 64-bit platform that defines u64 as a
> long long type.
There was some disussion of formatting u64 / unsigned long long in the
past and I thought the outcome of that was that u64 should always be
defined as unsigned long long. (See commits fe33332 and 9018113.)
[...]
> And the whole tree needs to be inspected to make sure there isn't going
> to be fallout in areas your patch didn't take care of wrt. printf format
> strings and the like.
>
> What was always "unsigned long" is now a variable type, therefore using
> a fixed printf format string is impossible unless you always cast these
> things when passed in as printf arguments.
Yes, that's true if there are drivers out there printing members of
net_device_stats. I admit I haven't checked for that. (Hmm, might be
time to try Coccinelle.)
Ben.
--
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
next prev parent reply other threads:[~2010-06-08 11:35 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-04 22:04 [PATCHv2 1/2] net: Enable 64-bit net device statistics on 32-bit architectures Ben Hutchings
2010-06-04 22:06 ` [PATCHv2 2/2] sfc: Implement 64-bit net device statistics on all architectures Ben Hutchings
2010-06-08 4:18 ` [PATCHv2 1/2] net: Enable 64-bit net device statistics on 32-bit architectures David Miller
2010-06-08 11:35 ` Ben Hutchings [this message]
2010-06-08 15:56 ` Ben Hutchings
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=1275996928.14011.83.camel@localhost \
--to=bhutchings@solarflare.com \
--cc=arnd@arndb.de \
--cc=davem@davemloft.net \
--cc=linux-net-drivers@solarflare.com \
--cc=netdev@vger.kernel.org \
--cc=shemminger@vyatta.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 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.