Ralf Baechle wrote: > On Sat, Sep 08, 2007 at 02:23:00AM +0200, Matteo Croce wrote: [snip] > > +/* Register definitions */ > > +struct cpmac_control_regs { > > + u32 revision; > > + u32 control; > > + u32 teardown; > > + u32 unused; > > +} __attribute__ ((packed)); > > + > > +struct cpmac_int_regs { > > + u32 stat_raw; > > + u32 stat_masked; > > + u32 enable; > > + u32 clear; > > +} __attribute__ ((packed)); > > + > > +struct cpmac_stats { > > + u32 good; > > + u32 bcast; > > + u32 mcast; > > + u32 pause; > > + u32 crc_error; > > + u32 align_error; > > + u32 oversized; > > + u32 jabber; > > + u32 undersized; > > + u32 fragment; > > + u32 filtered; > > + u32 qos_filtered; > > + u32 octets; > > +} __attribute__ ((packed)); > > All struct members here are sized such that there is no padding needed, so > the packed attribute doesn't buy you anything - unless of course the > entire structure is missaligned but I don't see how that would be possible > in this driver so the __attribute__ ((packed)) should go - it result in > somwhat larger and slower code. FWIW, a modern gcc will warn about such superfluous packed attributes, that's another reason to remove those. Thiemo