linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Garzik <jeff@garzik.org>
To: Linus Torvalds <torvalds@linux-foundation.org>,
	Michael Buesch <mb@bu3sch.de>
Cc: Dan Williams <dcbw@redhat.com>,
	Johannes Berg <johannes@sipsolutions.net>,
	"John W. Linville" <linville@tuxdriver.com>,
	linux-wireless@vger.kernel.org
Subject: Re: Linux 2.6.24-rc7
Date: Fri, 25 Jan 2008 18:22:12 -0500	[thread overview]
Message-ID: <479A6F24.9030306@garzik.org> (raw)
In-Reply-To: <alpine.LFD.1.00.0801251045430.2979@hp.linux-foundation.org>

Linus Torvalds wrote:
> 
> On Fri, 25 Jan 2008, Michael Buesch wrote:
>> The problem is _not_ the wireless header access, but the alignment of the embedded
>> protocol stack, if the header does not have a size aligned to 4.
>> Do we want to clutter the whole networking stack below wireless with
>> get_unaligned() or attribute(packed) or something like that?
> 
> That's what all the other protocols do, isn't it?
> 
> For example, on PowerPC, NET_IP_ALIGN is 0 - explicitly so that the *dma* 
> from the card should be aligned, even if that in turn means that the IP 
> payload itself is then just two-byte aligned rather than word-aligned 
> (14-byte ethernet headers and all that).
> 
> [ Side note - I _used_ to know the networking code. That was about eight 
>   to ten years ago. I'm really happy having a maintainer for it and not 
>   having to know all the details any more, so maybe things have changed. ]
> 
> I do think that we generally should try to make the drivers do as little 
> complex stuff as humanly possible, and expect as little from hardware (and 
> firmware counts in that group) as we can. If some higher-level thing 
> really needs things aligned in order to not have to have lots of ugly 
> code, it should generally extract that alignment itself.

Actually...  grep for rx_copybreak in networking drivers.

For certain ethernet NIC hardware, given standard packet headers, your 
data will always be unaligned, which -does- have a cost, even on Intel. 
  On such hardware, this is required because the RX packet must start on 
a 32-bit (sometimes 64-bit) DMA boundary.

Since RX SKBs are pre-allocated, we use the driver-wide 'rx_copybreak' 
variable to determine the point at which an unaligned packet is painful 
enough that we should copy into a newly allocated, properly aligned skb 
(NET_IP_ALIGN, etc.)

Sane architectures can set rx_copybreak to MTU size.  Other 
architectures (at compile time) set the rx_copybreak default to 
something smaller.

	Jeff




  parent reply	other threads:[~2008-01-25 23:22 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <alpine.LFD.1.00.0801061410290.3148@woody.linux-foundation.org>
2008-01-07 16:14 ` Linux 2.6.24-rc7 Alejandro Riveira Fernández
2008-01-07 16:24   ` Michael Buesch
2008-01-07 16:52     ` Alejandro Riveira Fernández
2008-01-07 17:30       ` Michael Buesch
2008-01-07 20:23         ` Alejandro Riveira Fernández
2008-01-08 15:30           ` Michael Buesch
2008-01-08 15:55             ` Alejandro Riveira Fernández
2008-01-24 20:27             ` Linus Torvalds
2008-01-24 21:07               ` John W. Linville
2008-01-24 21:34                 ` Linus Torvalds
2008-01-25 12:29                   ` Johannes Berg
2008-01-25 16:08                     ` Linus Torvalds
2008-01-25 16:23                       ` Michael Buesch
2008-01-25 16:43                         ` Linus Torvalds
2008-01-25 17:27                           ` Dan Williams
2008-01-25 17:38                             ` Linus Torvalds
2008-01-25 17:42                               ` Dan Williams
2008-02-05 20:55                                 ` Russell S. Senior
2008-01-25 18:22                               ` Linus Torvalds
2008-01-25 18:30                                 ` Michael Buesch
2008-01-25 19:07                                   ` Linus Torvalds
2008-01-25 19:34                                     ` Michael Buesch
2008-01-25 19:48                                     ` John W. Linville
2008-01-25 19:50                                       ` John W. Linville
2008-01-25 21:18                                         ` John W. Linville
2008-01-25 21:56                                           ` Linus Torvalds
2008-01-25 22:46                                             ` John W. Linville
2008-01-25 23:20                                               ` Guy Cohen
2008-01-26 13:53                                               ` David Miller
2008-01-26 13:47                                             ` David Miller
2008-01-25 22:02                                           ` Guy Cohen
2008-01-26 13:40                                           ` David Miller
2008-01-25 20:28                                       ` Linus Torvalds
2008-01-26 13:37                                         ` David Miller
2008-01-27  6:32                                           ` Linus Torvalds
2008-01-27  7:16                                             ` Jeff Garzik
2008-01-27  7:24                                               ` David Miller
2008-01-27  7:54                                                 ` Linus Torvalds
2008-01-28  3:15                                                   ` David Miller
2008-01-25 23:22                                     ` Jeff Garzik [this message]
2008-01-26 13:27                                     ` David Miller
2008-01-27  6:25                                       ` Linus Torvalds
2008-01-26 13:22                                 ` David Miller
2008-01-25 18:21                           ` Michael Buesch
2008-01-25 18:34                             ` Linus Torvalds
2008-01-25 18:41                               ` Michael Buesch
2008-01-25 21:11                                 ` Inaky Perez-Gonzalez
2008-01-25 21:21                                   ` Michael Buesch
2008-01-25 21:28                                     ` Inaky Perez-Gonzalez
2008-01-26 13:42                                       ` David Miller
2008-01-27  2:26                                         ` Luis R. Rodriguez
2008-01-29 19:07                                         ` Inaky Perez-Gonzalez
2008-01-25 21:46                                     ` John W. Linville
2008-01-25 22:15                                       ` Michael Buesch
2008-01-25 22:34                                       ` Tomas Winkler
2008-01-26 13:49                                       ` David Miller
2008-01-25 21:46                                     ` Guy Cohen
2008-01-25 21:54                                     ` Linus Torvalds
2008-01-26 13:46                                       ` David Miller
2008-01-25 18:34                             ` John W. Linville
2008-01-24 22:17               ` Michael Buesch
2008-01-24 22:26                 ` Linus Torvalds
2008-01-24 22:33                   ` Michael Buesch

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=479A6F24.9030306@garzik.org \
    --to=jeff@garzik.org \
    --cc=dcbw@redhat.com \
    --cc=johannes@sipsolutions.net \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    --cc=mb@bu3sch.de \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).