Re: Endianness of particular fields?

Johannes Berg <[email protected]> Thu, 22 Feb 2018 21:19:55 +0100
Newsgroups org.netbsd.radiotap
Message-ID <[email protected]>
On Thu, 2018-02-22 at 10:13 -0800, Guy Harris wrote:
> 	http://www.radiotap.org
> 
> says
> 
> 	Important Radiotap Characteristics
> 
> 		...
> 
> 	* Data is specified in little endian byte-order, all data
> fields including the it_version, it_len and it_present fields in the
> radiotap header are to be specified in little endian byte-order. This
> wiki has adopted the Linux convention of using __le64, __le32 and
> __le16 for 64-, 32- and 16-bit little endian quantities.
> 
> However, for example
> 
> 	http://www.radiotap.org/fields/dB%20TX%20attenuation.html
> 
> says:
> 
> 	Structure
> 		u16
> 
> rather than __le{anything}.

Oops.

> I presume the *intent* is that data in particular fields always be
> little-endian.  

Yes.

> Part of the problem here is that the Linux convention, used to
> describe the comment headers specifies endianness rather than
> signedness (presumably everything is unsigned), and the convention
> used for particular fields specifies signedness rather than
> endianness (presumably everything is little-endian).

Yeah.

> Should the site use the {u,s}{64,32,16,8} convention uniformly, and
> say "all multi-byte fields in all the headers and the fields are
> little-endian", to make it a little clearer that fields, as well as
> headers, are little-endian?  (Or, alternatively, say "{u,s}_le_64",
> "{u,s}_le_32", etc., or something similar with fewer underscores as
> desired?)

I think we should just use {u,s}{64,32,16,8} and drop the whole __le
thing.

I'd say we should just remove the wording about adopting the Linux
convention. We'd never use __be16 or such anyway.

johannes