On Thu, 7 Jan 2021 22:17:15 +0100 Marc Kleine-Budde wrote:
> > +struct __packed tcan4x5x_buf_cmd {
> > + u8 cmd;
> > + __be16 addr;
> > + u8 len;
> > +};
>
> This has to be packed, as I assume the compiler would add some space after the
> "u8 cmd" to align the __be16 naturally.
Ack, packing this one makes sense.
> > +struct __packed tcan4x5x_map_buf {
> > + struct tcan4x5x_buf_cmd cmd;
> > + u8 data[256 * sizeof(u32)];
> > +} ____cacheline_aligned;
>
> Due to the packing of the struct tcan4x5x_buf_cmd it should have a length of 4
> bytes. Without __packed, will the "u8 data" come directly after the cmd?
Yup, u8 with no alignment attribute will follow the previous
field with no holes.