Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Nov 2004 13:35:00 +0100 (CET)
From:      Sten Spans <sten@blinkenlights.nl>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        freebsd-alpha@FreeBSD.org
Subject:   Re: alpha and em mtu
Message-ID:  <Pine.SOC.4.61.0411211105060.10997@tea.blinkenlights.nl>
In-Reply-To: <200411191601.11773.jhb@FreeBSD.org>
References:  <Pine.SOC.4.61.0411142153430.26307@tea.blinkenlights.nl> <Pine.SOC.4.61.0411152236420.1148@tea.blinkenlights.nl> <200411191601.11773.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 19 Nov 2004, John Baldwin wrote:

> On Friday 19 November 2004 04:32 am, Sten Spans wrote:
>> On Mon, 15 Nov 2004, Sten Spans wrote:
>>> On Mon, 15 Nov 2004, John Baldwin wrote:
>>>> On Monday 15 November 2004 04:07 pm, Sten Spans wrote:
>>>>> On Mon, 15 Nov 2004, John Baldwin wrote:
>>>>>
>>>>> changed to ((off0 & 0x3) != 0), didn't seem to print anything.
>>>>
>>>> Ok, try this one then instead:
>>>>
>>>> Index: netinet/tcp_input.c
>>>> ===================================================================
>>>> RCS file: /usr/cvs/src/sys/netinet/tcp_input.c,v
>>>> retrieving revision 1.255
>>>> diff -u -r1.255 tcp_input.c
>>>> --- netinet/tcp_input.c	7 Nov 2004 19:19:35 -0000	1.255
>>>> +++ netinet/tcp_input.c	15 Nov 2004 21:19:50 -0000
>>>> @@ -504,6 +504,8 @@
>>>> 			}
>>>> 		}
>>>> 		ip = mtod(m, struct ip *);
>>>> +		if (((uintptr_t)ip & 0x3) != 0)
>>>> +			printf("%s: ip %p is misaligned\n", __func__, ip);
>>>> 		ipov = (struct ipovly *)ip;
>>>> 		th = (struct tcphdr *)((caddr_t)ip + off0);
>>>> 		tlen = ip->ip_len;
>>>
>>> This does print something:
>>> deepthought# ifconfig em0 mtu 1501
>>> deepthought# tcp_input: ip 0xfffffc001817f00e is misaligned
>>>
>>> fatal kernel trap:
>>>
>>>    trap entry     = 0x4 (unaligned access fault)
>>>    faulting va    = 0xfffffc001817f02e
>>>    opcode         = 0x28
>>>    register       = 0x1
>>>    pc             = 0xfffffc00004cd134
>>>    ra             = 0xfffffc00004ccf94
>>>    sp             = 0xfffffe00187a9af0
>>>    curthread      = 0xfffffc001f3a70e0
>>>        pid = 14, comm = swi1: net
>>>
>>> [thread 100006]
>>> Stopped at      tcp_input+0x3a4:        srl     t0,#0x2,t0      <t0=0x45>
>>>
>>>
>>> The ip's used are 192.168.1.3 and 192.168.1.4.
>>
>> Any luck or should I turn this into a pr ?
>
> Sorry, been busy recently.  A PR certainly wouldn't hurt.

Ok, I'll get that going.

> Does this panic go
> away if you use a different MTU btw?

I've tried running

i=1; while true; echo $i; ifconfig em0 mtu $i; let i++; sleep 2;

and on the client:
while true; do echo bla | telnet alpha 22; sleep 1; done

this caused no crashes with mtu 1-1500.

But:
deepthought# ifconfig em0 mtu 1666
deepthought# tcp_input: ip 0xfffffc0018cdb00e is misaligned
deepthought# ifconfig em0 mtu 1564
deepthought# tcp_input: ip 0xfffffc001857c80e is misaligned
deepthought# ifconfig em0 mtu 1532
deepthought# tcp_input: ip 0xfffffc001859300e is misaligned

If it has to be 8 bytes aligned then it's off by 4, doesn't
seem to be vlanmtu though.

-- 
Sten Spans

"There is a crack in everything, that's how the light gets in."
Leonard Cohen - Anthem



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.SOC.4.61.0411211105060.10997>