[PATCHv2] networking: consolidate the IP checksum code

Baruch Siach baruch at tkos.co.il
Wed Sep 7 07:46:54 UTC 2011


Hi Joakim,

On Wed, Sep 07, 2011 at 09:05:36AM +0200, Joakim Tjernlund wrote:
> Baruch Siach <baruch at tkos.co.il> wrote on 2011/09/07 06:29:32:
> > Hi Joakim,
> > On Mon, Sep 05, 2011 at 10:09:14PM +0200, Joakim Tjernlund wrote:
> > > > From: Baruch Siach <baruch at tkos.co.il>
> > > >
> > > > Use a single IP checksum routine for ping, traceroute and udhcp.
> > > >
> > > > Signed-off-by: Baruch Siach <baruch at tkos.co.il>
> > > > ---
> > > >
> > > > Changes from v1:
> > > >    Fix inet_cksum() with odd length on big endian systems
> > > >    Remove declaration of removed udhcp_checksum()
> > >
> > > This looks like it is from quagga. I cleaned that up/optimized it
> > > some years ago into this(you might want to fix the types):
> >
> > What is the advantage of this implementation over the one I suggested (which I
> > took from the traceroute code)?
>
> It is cleaner.

Which part of it looks cleaner to you? The two routine look almost the same to 
me.

> Optimizes better(at least on RISC like archs).

I get the following 'readelf -s' results for different toolchains with '-Os':

x86_64 on current Debian testing (gcc 4.6.1):
     8: 0000000000000000    78 FUNC    GLOBAL DEFAULT    1 in_cksum
     9: 000000000000004e    66 FUNC    GLOBAL DEFAULT    1 inet_cksum

ARM with the CodeSourcery 2010q1 toolchain (gcc 4.4.1):
    12: 00000000   100 FUNC    GLOBAL DEFAULT    1 in_cksum
    14: 00000064   104 FUNC    GLOBAL DEFAULT    1 inet_cksum

PowerPC with the CodeSourcery 2010.09 toolchain (gcc 4.5.1):
     8: 00000000    96 FUNC    GLOBAL DEFAULT    1 in_cksum
     9: 00000060   124 FUNC    GLOBAL DEFAULT    1 inet_cksum

I don't see a definite winner here.

> I am not sure if this is allowed on modern gcc's:
>   *(uint8_t*)&tmp = *(uint8_t*)w;

gcc with '-Wall -Wextra' doesn't complain.

> You can drop the pre increment if you like.

baruch

-- 
                                                     ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -


More information about the busybox mailing list