From: Eric Dumazet <dada1@cosmosbay.com>
To: Ron Yorgason <yorgasor@gmail.com>
Cc: netdev@vger.kernel.org
Subject: Re: Kernel Oops in UDP w/ ARM architecture
Date: Mon, 09 Mar 2009 21:24:10 +0100 [thread overview]
Message-ID: <49B57AEA.6000704@cosmosbay.com> (raw)
In-Reply-To: <93d1fdd10903091218g17d65ea2r89a9b2a50fae7f11@mail.gmail.com>
Ron Yorgason a écrit :
> On Mon, Mar 9, 2009 at 1:21 PM, Eric Dumazet <dada1@cosmosbay.com> wrote:
>> Please dont top post on this mailing list
>>
>> Ron Yorgason a écrit :
>>> We're using the fec driver, found in drivers/net/fec.c. I modified
>>> this driver slightly to get the MAC address from the redboot
>>> configuration stored in flash memory, but it's otherwise untouched. I
>>> can send my version of the file if that would help.
>>>
>>> --Ron
>>>
>>>
>> Given that ARM seems to be picky about non aligned accesses, you might
>> try this patch. This should force IP header to be aligned.
>>
>> diff -u linux-2.6.19/drivers/net/fec.c.old linux-2.6.19/drivers/net/fec.c
>> --- linux-2.6.19/drivers/net/fec.c.old
>> +++ linux-2.6.19/drivers/net/fec.c
>> @@ -641,13 +641,14 @@
>> * include that when passing upstream as it messes up
>> * bridging applications.
>> */
>> - skb = dev_alloc_skb(pkt_len-4);
>> + skb = dev_alloc_skb((pkt_len - 4) + 2);
>>
>> if (skb == NULL) {
>> printk("%s: Memory squeeze, dropping packet.\n", dev->name);
>> fep->stats.rx_dropped++;
>> } else {
>> skb->dev = dev;
>> + skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */
>> skb_put(skb,pkt_len-4); /* Make room */
>> eth_copy_and_sum(skb, data, pkt_len-4, 0);
>> skb->protocol=eth_type_trans(skb,dev);
>>
>>
>
> Thanks for the patch. It looks like Freescale modified this section
> of the code in our BSP, so I'm looking at how to best merge things in.
> Also, since we're allocating an extra 2 bytes in dev_alloc_skb(), do
> we need to account for those bytes in skb_put() and
> eth_copy_and_sum(), or does the skb_reserve() call handle that?
We allocate 2 extra bytes, because skb_reserve() will advance skb->data pointer
by two bytes. Those two bytes plus 14 bytes ethernet header : total 16 bytes,
so that IP header is aligned on 16 byte boundaries.
No other changes are necessary.
Then, maybe this patch is not necessary at all on your platform, since crash happens
a *long* time after boot. It may be a shoot in the dark...
next prev parent reply other threads:[~2009-03-09 20:24 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-09 15:52 Kernel Oops in UDP w/ ARM architecture Ron Yorgason
2009-03-09 17:16 ` Eric Dumazet
2009-03-09 17:46 ` Ron Yorgason
2009-03-09 18:21 ` Eric Dumazet
2009-03-09 19:18 ` Ron Yorgason
2009-03-09 20:24 ` Eric Dumazet [this message]
2009-03-09 20:57 ` Ron Yorgason
2009-03-09 21:19 ` Eric Dumazet
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=49B57AEA.6000704@cosmosbay.com \
--to=dada1@cosmosbay.com \
--cc=netdev@vger.kernel.org \
--cc=yorgasor@gmail.com \
/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).