On Thu, Jan 24, 2019 at 7:08 PM Johannes Berg <johan...@sipsolutions.net> wrote: > > On Thu, 2019-01-24 at 19:05 +0100, Mathieu Malaterre wrote: > > During refactor in commit 9e478066eae4 ("mac80211: fix MU-MIMO > > follow-MAC mode") a new struct 'action' was declared with packed > > attribute as: > > > > struct { > > struct ieee80211_hdr_3addr hdr; > > u8 category; > > u8 action_code; > > } __packed action; > > > > But since struct 'ieee80211_hdr_3addr' is declared with an aligned > > keyword as: > > > > struct ieee80211_hdr { > > __le16 frame_control; > > __le16 duration_id; > > u8 addr1[ETH_ALEN]; > > u8 addr2[ETH_ALEN]; > > u8 addr3[ETH_ALEN]; > > __le16 seq_ctrl; > > u8 addr4[ETH_ALEN]; > > } __packed __aligned(2); > > > > Solve the ambiguity of placing aligned structure in a packed one by > > removing the packed attribute from struct. This seems to be the behavior > > of gcc anyway, since the following is still compiling: > > > > BUILD_BUG_ON(sizeof(action) != IEEE80211_MIN_ACTION_SIZE + 1); > > I'm not sure this will work on all platforms, didn't something like > alpha pad out u8's to u32 when not requiring packing?
I was not aware of that. > I guess I'd feel better about using __packed __aligned(2) here as well, > which should solve the warning too? Indeed, I will re-spin a v2 then.