Messages in this thread | | | Date | Tue, 08 Apr 2008 17:41:03 +0200 | From | Stefan Richter <> | Subject | Re: [PATCH] introduce HAVE_EFFICIENT_UNALIGNED_ACCESS Kconfig symbol |
| |
Johannes Berg wrote: > --- everything.orig/Documentation/unaligned-memory-access.txt 2008-04-04 23:42:50.000000000 +0200 > +++ everything/Documentation/unaligned-memory-access.txt 2008-04-04 23:52:15.000000000 +0200 > @@ -218,9 +218,35 @@ If use of such macros is not convenient, > where the source or destination (or both) are of type u8* or unsigned char*. > Due to the byte-wise nature of this operation, unaligned accesses are avoided. > > + > +Alignment vs. Networking > +======================== > + > +On architectures that require aligned loads, networking requires that the IP > +header is aligned on a four-byte boundary to optimise the IP stack. For > +regular ethernet hardware, the constant NET_IP_ALIGN is used, on most
. On
> +architectures this constant has the value 2 because the normal ethernet > +header is 14 bytes long, so in order to get proper alignment one needs to
. So
> +DMA to an address that is can be expressed as 4*n + 2. One notable exception
which can
> +here is powerpc which defines NET_IP_ALIGN to 0 because DMA to unaligned > +addresses can be very expensive and dwarf the cost of unaligned loads. > + > +For some ethernet hardware that cannot DMA to unaligned addresses like > +4*n+2 or non-ethernet hardware, this can be a problem, and it is then > +required to copy the incoming frame into an aligned buffer. Because this is > +unnecessary on architectures that can do unaligned accesses, the code can be > +made depend on CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS like so:
made dependent on
> + > +#ifdef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS > + skb = original skb > +#else > + skb = copy skb > +#endif > + > -- > -Author: Daniel Drake <dsd@gentoo.org> > +Authors: Daniel Drake <dsd@gentoo.org>, > + Johannes Berg <johannes@sipsolutions.net> > With help from: Alan Cox, Avuton Olrich, Heikki Orsila, Jan Engelhardt, > -Johannes Berg, Kyle McMartin, Kyle Moffett, Randy Dunlap, Robert Hancock, > -Uli Kunitz, Vadim Lobanov > +Kyle McMartin, Kyle Moffett, Randy Dunlap, Robert Hancock, Uli Kunitz, > +Vadim Lobanov > > --- everything.orig/arch/powerpc/Kconfig 2008-04-04 23:42:53.000000000 +0200 > +++ everything/arch/powerpc/Kconfig 2008-04-04 23:52:15.000000000 +0200 > @@ -103,6 +103,7 @@ config PPC > select HAVE_OPROFILE > select HAVE_KPROBES > select HAVE_KRETPROBES > + select HAVE_EFFICIENT_UNALIGNED_ACCESS > > config EARLY_PRINTK > bool > --- everything.orig/arch/x86/Kconfig 2008-04-04 23:42:50.000000000 +0200 > +++ everything/arch/x86/Kconfig 2008-04-04 23:52:15.000000000 +0200 > @@ -23,6 +23,7 @@ config X86 > select HAVE_KPROBES > select HAVE_KRETPROBES > select HAVE_KVM if ((X86_32 && !X86_VOYAGER && !X86_VISWS && !X86_NUMAQ) || X86_64) > + select HAVE_EFFICIENT_UNALIGNED_ACCESS > > > config GENERIC_LOCKBREAK > --- everything.orig/arch/Kconfig 2008-04-04 23:42:50.000000000 +0200 > +++ everything/arch/Kconfig 2008-04-04 23:52:15.000000000 +0200 > @@ -36,3 +36,22 @@ config HAVE_KPROBES > > config HAVE_KRETPROBES > def_bool n > + > +config HAVE_EFFICIENT_UNALIGNED_ACCESS > + def_bool n > + help > + Some architectures are unable to perform unaligned accesses > + without the use of get_unaligned/put_unaligned. Others are > + unable to perform such accesses efficiently (e.g. trap on
Wouldn't a comment be more appropriate instead of a help text? This option shouldn't be a visible make XYZconfig prompt.
I have no comment on the option itself; it's not my domain. -- Stefan Richter -=====-==--- -=-- -=--- http://arcgraph.de/sr/
| |