On Fri, 2021-10-01 at 09:32 +0300, Kalle Valo wrote: > > > > Add "__packed" before the "__le16 *" should solve this warning by my > > understand like this: [snip] > > > > -static void ieee80211_he_mcs_disable(__le16 *he_mcs) > > +static void ieee80211_he_mcs_disable(__packed __le16 *he_mcs) > > [snip] > I don't know what Johannes thinks, but to me that looks like an ugly > hack. Wouldn't use get_unaligned() or similar be cleaner? > Well, then we've have to pass an untyped pointer (void *), which I guess is fine? Since we do all kinds of le16_to_cpu() with it anyway, that'd just become get_unaligned_le16(). That's probably the better choice. But regardless, would the __packed even *work*? __attribute__((packed)) is documented as: This attribute, attached to a struct, union, or C++ class type definition, specifies that each of its members (other than zero-width bit-fields) is placed to minimize the memory required. This is equivalent to specifying the packed attribute on each of the members. When attached to an enum definition, the packed attribute indicates that the smallest integral type should be used. Specifying the -fshort-enums flag on the command line is equivalent to specifying the packed attribute on all enum definitions. [snip example] You may only specify the packed attribute on the definition of an enum, struct, union, or class, not on a typedef that does not also define the enumerated type, structure, union, or class. So I'm not convinced it would actually *do* anything here at all, in the proposed context? johannes