> From: Phoebe Buckheister <phoebe.buckheis...@itwm.fraunhofer.de>
> Date: Tue,  4 Mar 2014 15:34:45 +0100
>
>> +struct ieee802154_sechdr {
>> +    u8 sc;
>> +    u32 frame_ctr;
>> +    union {
>> +            struct {
>> +                    u16 pan_id;
>> +                    u16 short_addr;
>> +            } pan;
>> +            u8 hw[IEEE802154_ADDR_LEN];
>> +    } key_source;
>> +    u8 key_id;
>> +};
>> +
>> +struct ieee802154_hdr {
>> +    u16 fc;
>> +    u8 seq;
>> +    struct ieee802154_addr source;
>> +    struct ieee802154_addr dest;
>> +    struct ieee802154_sechdr sec;
>> +};
>
> You're going to have to address endianness both in these structure
> definitions and the code.
>
> For types larger than u8 you'll need to use __be16, __le16, __be32,
> __le32 etc. as appropriate.
>
> When setting/loading values, you'll need to use cpu_to_be16(),
> cpu_to_le16() etc.  as appropriate.

The fc field in struct ieee802154_hdr is a bitfield with many subfields,
the sc field of struct ieee802154_sec_hdr is also a bitfield. Would it be
acceptable to represent them as bitfields in the header struct? I expect
the code to be just as efficient in every respect, but more readable since
we wouldn't need explicit shifts and masks everywhere.


------------------------------------------------------------------------------
Subversion Kills Productivity. Get off Subversion & Make the Move to Perforce.
With Perforce, you get hassle-free workflows. Merge that actually works. 
Faster operations. Version large binaries.  Built-in WAN optimization and the
freedom to use Git, Perforce or both. Make the move to Perforce.
http://pubads.g.doubleclick.net/gampad/clk?id=122218951&iu=/4140/ostg.clktrk
_______________________________________________
Linux-zigbee-devel mailing list
Linux-zigbee-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-zigbee-devel

Reply via email to