From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Warren Date: Wed, 28 Jan 2009 09:55:45 -0800 Subject: [U-Boot] IP_t should be a "packed" struct In-Reply-To: <200901271932.11060.luigi.mantellini.ml@gmail.com> References: <200901271932.11060.luigi.mantellini.ml@gmail.com> Message-ID: <49809C21.6070004@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Luigi 'Comio' Mantellini wrote: > Hi ML, > > I'm working on a mips target and I used qemu_mips target to simulate my target > (that I hope to have in the next week...) > > Following my activities I noticed that IP_t structure is no defined with > attribute "packed". I noticed this issue because using a self-made toolchain > (gcc4.2.4+binutils2.8+uclibc0.9.30) the compiler has aligned all bytes to > 32bit boundary. This is not ok, because the packets IP_t can be non aligned > (see the /net/net.c PingSend function, for an example). > > Why is your compiler aligning all bytes to 32-bit boundary? Seems like an awful waste of space. This struct should pack itself nicely, and does on the small sample of toolchains I've tried (gcc 4.3.2 x86_64 and gcc 4.0.0 ppc_4xx). > The dirty solution is to define the structure with the > __attribute__((__packed__))... but, from my point of view, a better packet > forging mechanism should be implemented into the net.c stack. > > I attached a trivial patch that solved the issue on my target. > > Any comments is welcome. > > best regards, > > luigi > > I'd focus on fixing your toolchain. Your problem will not be confined to protocol headers. > > ------------------------------------------------------------------------ > > _______________________________________________ > U-Boot mailing list > U-Boot at lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot regards, Ben