Subject: Re: [PATCH 4/5] r8169: more alignment for the 0x8168

From: Stephen Hemminger <[email-masked]>
Date: Mon, 26 Feb 2007 14:25:28 -0800

On Mon, 26 Feb 2007 17:42:27 +1000
Philip Craig <[email-masked]> wrote:

> Francois Romieu wrote:
> > The experimental r8169 patch of the day against 2.6.21-rc1 is available at:
> > http://www.fr.zoreil.com/linux/kernel/2.6.x/2.6.21-rc1/
> 
> Is 0006-r8169-confusion-between-hardware-and-IP-header-alignment.txt
> the only relevant patch?
> 
> This only partially helps.  Many of the packets are greater than 200
> bytes so copybreak doesn't apply to them.
> 
> Can we assume anything about the alignment of skb->data?  I think it
> should be 4 byte aligned, otherwise the whole NET_IP_ALIGN thing
> won't work.  All the drivers I looked at just reserve NET_IP_ALIGN
> without checking the alignment first.
>

This is where the alignment comes from in slab.c

#ifndef ARCH_KMALLOC_MINALIGN
/*
 * Enforce a minimum alignment for the kmalloc caches.
 * Usually, the kmalloc caches are cache_line_size() aligned, except when
 * DEBUG and FORCED_DEBUG are enabled, then they are BYTES_PER_WORD aligned.
 * Some archs want to perform DMA into kmalloc caches and need a guaranteed
 * alignment larger than BYTES_PER_WORD. ARCH_KMALLOC_MINALIGN allows that.
 * Note that this flag disables some debug features.
 */
#define ARCH_KMALLOC_MINALIGN 0
#endif

Since BYTES_PER_WORD is sizeof(void *) you are safe since Linux doesn't
run on 16 bit platforms.

-- 
Stephen Hemminger <[email-masked]>