> 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