All of lore.kernel.org
 help / color / mirror / Atom feed
* [Bridge] hw checksum problems
@ 2003-10-13 11:16 Gergely Madarasz
  2003-10-13 12:19 ` Gergely Madarasz
  0 siblings, 1 reply; 6+ messages in thread
From: Gergely Madarasz @ 2003-10-13 11:16 UTC (permalink / raw)
  To: bridge

Hello,

I'm trying to make a bridge between a Broadcom BCM5703 gigabit ethernet
and a sun happy meal fastethernet interface. The sunhme card supports hw
checksums (and cannot be turned off in the driver). I applied the patch
(to set CHECKSUM_NONE on forwarded packets), but I still get kernel oopses
(though it seems less often than before). I cannot tell exactly what
triggers it, sometimes it seems a large ping, sometimes a broadcast ping,
sometimes just normal network traffic. Any ideas?

kernel BUG at dev.c:984!
invalid operand: 0000
CPU:    0
EIP:    0060:[<c0201b97>]    Not tainted
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010202
eax: 0000002a   ebx: f72c4d80   ecx: f24b6700   edx: 0055401e
esi: f72c4d80   edi: f24b66a8   ebp: c02c1b94   esp: c02c1b88
ds: 0068   es: 0068   ss: 0068
Process swapper (pid: 0, stackpage=c02c1000)
Stack: f74b080c f72c4d80 f24b66a8 c02c1bac c0201ce1 f72c4d80 f72c4d80 f74b088a
       f24b66a8 c02c1bc8 c0230ef9 f72c4d80 f74b080c f735cd00 0eb4b8c3 f24b66a2
       c02c1c08 c02309c7 00000001 00000806 05b4b8c3 f74b080c 0eb4b8c3 f74b087c
Call Trace:    [<c0201ce1>] [<c0230ef9>] [<c02309c7>] [<c020593d>] [<c0206173>]
  [<c02146b0>] [<c0208c33>] [<c0213225>] [<c02145d4>] [<c02145cf>] [<c0208c33>]
  [<c0213e8d>] [<c02145c0>] [<c023221c>] [<c0232034>] [<c02328f1>] [<c01ff272>]
  [<c0232b9e>] [<c0232c57>] [<c0210921>] [<c0208c33>] [<c021049d>] [<c0210864>]
  [<c0210b31>] [<c0208c33>] [<c021081b>] [<c0210998>] [<c0202463>] [<c0202511>]
  [<c020264b>] [<c011cfad>] [<c010903e>] [<c01052c0>] [<c01052c0>] [<c01052c0>]
  [<c01052c0>] [<c01052ec>] [<c0105362>] [<c0105000>] [<c010504f>]
Code: 0f 0b d8 03 a3 cc 28 c0 6a 00 29 d0 50 52 53 e8 85 d6 ff ff


>>EIP; c0201b97 <skb_checksum_help+1b/84>   <=====

>>ebx; f72c4d80 <END_OF_CODE+36f47570/????>
>>ecx; f24b6700 <END_OF_CODE+32138ef0/????>
>>edx; 0055401e Before first symbol
>>esi; f72c4d80 <END_OF_CODE+36f47570/????>
>>edi; f24b66a8 <END_OF_CODE+32138e98/????>
>>ebp; c02c1b94 <init_task_union+1b94/2000>
>>esp; c02c1b88 <init_task_union+1b88/2000>

Trace; c0201ce1 <dev_queue_xmit+e1/318>
Trace; c0230ef9 <arp_send+1d9/21c>
Trace; c02309c7 <arp_solicit+c7/10c>
Trace; c020593d <__neigh_event_send+c1/280>
Trace; c0206173 <neigh_resolve_output+6f/238>
Trace; c02146b0 <ip_finish_output2+dc/124>
Trace; c0208c33 <nf_hook_slow+103/180>
Trace; c0213225 <ip_output+175/180>
Trace; c02145d4 <ip_finish_output2+0/124>
Trace; c02145cf <output_maybe_reroute+f/14>
Trace; c0208c33 <nf_hook_slow+103/180>
Trace; c0213e8d <ip_build_xmit+2b1/338>
Trace; c02145c0 <output_maybe_reroute+0/14>
Trace; c023221c <icmp_reply+160/180>
Trace; c0232034 <icmp_glue_bits+0/88>
Trace; c02328f1 <icmp_echo+45/4c>
Trace; c01ff272 <skb_checksum+42/2ac>
Trace; c0232b9e <icmp_rcv+6e/16a>
Trace; c0232c57 <icmp_rcv+127/16a>
Trace; c0210921 <ip_local_deliver_finish+bd/134>
Trace; c0208c33 <nf_hook_slow+103/180>
Trace; c021049d <ip_local_deliver+175/180>
Trace; c0210864 <ip_local_deliver_finish+0/134>
Trace; c0210b31 <ip_rcv_finish+199/1d6>
Trace; c0208c33 <nf_hook_slow+103/180>
Trace; c021081b <ip_rcv+373/3bc>
Trace; c0210998 <ip_rcv_finish+0/1d6>
Trace; c0202463 <netif_receive_skb+163/190>
Trace; c0202511 <process_backlog+81/12c>
Trace; c020264b <net_rx_action+8f/148>
Trace; c011cfad <do_softirq+7d/e0>
Trace; c010903e <do_IRQ+da/ec>
Trace; c01052c0 <default_idle+0/38>
Trace; c01052c0 <default_idle+0/38>
Trace; c01052c0 <default_idle+0/38>
Trace; c01052c0 <default_idle+0/38>
Trace; c01052ec <default_idle+2c/38>
Trace; c0105362 <cpu_idle+42/58>
Trace; c0105000 <_stext+0/0>
Trace; c010504f <rest_init+4f/54>

Code;  c0201b97 <skb_checksum_help+1b/84>
00000000 <_EIP>:
Code;  c0201b97 <skb_checksum_help+1b/84>   <=====
   0:   0f 0b                     ud2a      <=====
Code;  c0201b99 <skb_checksum_help+1d/84>
   2:   d8 03                     fadds  (%ebx)
Code;  c0201b9b <skb_checksum_help+1f/84>
   4:   a3 cc 28 c0 6a            mov    %eax,0x6ac028cc
Code;  c0201ba0 <skb_checksum_help+24/84>
   9:   00 29                     add    %ch,(%ecx)
Code;  c0201ba2 <skb_checksum_help+26/84>
   b:   d0 50 52                  rclb   0x52(%eax)
Code;  c0201ba5 <skb_checksum_help+29/84>
   e:   53                        push   %ebx
Code;  c0201ba6 <skb_checksum_help+2a/84>
   f:   e8 85 d6 ff ff            call   ffffd699 <_EIP+0xffffd699>

Kernel panic: Aiee, killing interrupt handler!


-- 
Madarasz Gergely   gorgo@thunderchild.debian.net   gorgo@linux.rulez.org
    It's practically impossible to look at a penguin and feel angry.
        Egy pingvinre gyakorlatilag lehetetlen haragosan nezni.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Bridge] hw checksum problems
  2003-10-13 11:16 [Bridge] hw checksum problems Gergely Madarasz
@ 2003-10-13 12:19 ` Gergely Madarasz
  2003-10-13 15:14   ` Gergely Madarasz
  2003-10-13 16:15   ` Stephen Hemminger
  0 siblings, 2 replies; 6+ messages in thread
From: Gergely Madarasz @ 2003-10-13 12:19 UTC (permalink / raw)
  To: bridge

On Mon, Oct 13, 2003 at 01:16:47PM +0200, Gergely Madarasz wrote:
> Hello,
> 
> I'm trying to make a bridge between a Broadcom BCM5703 gigabit ethernet
> and a sun happy meal fastethernet interface. The sunhme card supports hw
> checksums (and cannot be turned off in the driver). I applied the patch
> (to set CHECKSUM_NONE on forwarded packets), but I still get kernel oopses
> (though it seems less often than before). I cannot tell exactly what
> triggers it, sometimes it seems a large ping, sometimes a broadcast ping,
> sometimes just normal network traffic. Any ideas?

Oh, I forgot :) The kernel is 2.4.22 with the execshield patch. The cards
work nicely when there is no bridge. One more specific info: when bridged,
under normal circumstances the hme port is in blocking state (it should
start forwarding only if the tg3 link is down). 

-- 
Madarasz Gergely   gorgo@thunderchild.debian.net   gorgo@linux.rulez.org
    It's practically impossible to look at a penguin and feel angry.
        Egy pingvinre gyakorlatilag lehetetlen haragosan nezni.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Bridge] hw checksum problems
  2003-10-13 12:19 ` Gergely Madarasz
@ 2003-10-13 15:14   ` Gergely Madarasz
       [not found]     ` <p05111b01bbb180787e47@[10.96.96.13]>
  2003-10-13 16:15   ` Stephen Hemminger
  1 sibling, 1 reply; 6+ messages in thread
From: Gergely Madarasz @ 2003-10-13 15:14 UTC (permalink / raw)
  To: bridge

On Mon, Oct 13, 2003 at 02:19:01PM +0200, Gergely Madarasz wrote:
> On Mon, Oct 13, 2003 at 01:16:47PM +0200, Gergely Madarasz wrote:
> > Hello,
> > 
> > I'm trying to make a bridge between a Broadcom BCM5703 gigabit ethernet
> > and a sun happy meal fastethernet interface. The sunhme card supports hw
> > checksums (and cannot be turned off in the driver). I applied the patch
> > (to set CHECKSUM_NONE on forwarded packets), but I still get kernel oopses
> > (though it seems less often than before). I cannot tell exactly what
> > triggers it, sometimes it seems a large ping, sometimes a broadcast ping,
> > sometimes just normal network traffic. Any ideas?
> 
> Oh, I forgot :) The kernel is 2.4.22 with the execshield patch. The cards
> work nicely when there is no bridge. One more specific info: when bridged,
> under normal circumstances the hme port is in blocking state (it should
> start forwarding only if the tg3 link is down). 

Further investigation shows that the oopses can happen at different places
for different reasons, with different codepaths. This shows locally
generated skb's which also fail at skb_checksum_help.

kernel BUG at dev.c:991!
...
>>EIP; c0201c80 <skb_checksum_help+104/140>   <=====
...
Trace; c0201da1 <dev_queue_xmit+e5/31c>
Trace; c024ac3c <br_send_bpdu+15c/180>
Trace; c024adc5 <br_send_config_bpdu+165/170>
Trace; c024a4ab <br_transmit_config+d7/f4>
Trace; c024a799 <br_config_bpdu_generation+29/3c>
Trace; c024aa2d <br_received_config_bpdu+bd/f4>
Trace; c024b002 <br_stp_handle_bpdu+1fa/221>
Trace; c0249826 <br_handle_frame+13a/184>
Trace; c02024a9 <netif_receive_skb+e9/190>
Trace; c02025d1 <process_backlog+81/12c>
Trace; c020270b <net_rx_action+8f/148>
Trace; c011cfad <do_softirq+7d/e0>
Trace; c010903e <do_IRQ+da/ec>
Trace; c01052c0 <default_idle+0/38>
Trace; c01052c0 <default_idle+0/38>
Trace; c01052c0 <default_idle+0/38>
Trace; c01052c0 <default_idle+0/38>
Trace; c01052ec <default_idle+2c/38>
Trace; c0105362 <cpu_idle+42/58>
Trace; c0105000 <_stext+0/0>
Trace; c010504f <rest_init+4f/54>

kernel BUG at dev.c:984
... 
>>EIP; c0201bcd <skb_checksum_help+51/140>   <=====
...
Trace; c0201da1 <dev_queue_xmit+e5/31c>
Trace; c024ac3c <br_send_bpdu+15c/180>
Trace; c024adc5 <br_send_config_bpdu+165/170>
Trace; c024a4ab <br_transmit_config+d7/f4>
Trace; c0248001 <Letext+11/20>
Trace; c024b6fa <br_hold_timer_expired+12/18>
Trace; c024b7b4 <br_check_port_timers+b4/c0>
Trace; c024b8fc <br_tick+0/39>
Trace; c024b8ec <br_check_timers+12c/13c>
Trace; c024b912 <br_tick+16/39>
Trace; c012074b <timer_bh+27f/3b4>
Trace; c011d366 <bh_action+4e/88>
Trace; c011d233 <tasklet_hi_action+63/a0>
Trace; c011cfad <do_softirq+7d/e0>
Trace; c010903e <do_IRQ+da/ec>
Trace; c01052c0 <default_idle+0/38>
Trace; c01052c0 <default_idle+0/38>
Trace; c01052c0 <default_idle+0/38>
Trace; c01052c0 <default_idle+0/38>
Trace; c01052ec <default_idle+2c/38>
Trace; c0105362 <cpu_idle+42/58>
Trace; c0105000 <_stext+0/0>
Trace; c010504f <rest_init+4f/54>

-- 
Madarasz Gergely   gorgo@thunderchild.debian.net   gorgo@linux.rulez.org
    It's practically impossible to look at a penguin and feel angry.
        Egy pingvinre gyakorlatilag lehetetlen haragosan nezni.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Bridge] hw checksum problems
  2003-10-13 12:19 ` Gergely Madarasz
  2003-10-13 15:14   ` Gergely Madarasz
@ 2003-10-13 16:15   ` Stephen Hemminger
  2003-10-13 17:00     ` Gergely Madarasz
  1 sibling, 1 reply; 6+ messages in thread
From: Stephen Hemminger @ 2003-10-13 16:15 UTC (permalink / raw)
  To: Gergely Madarasz; +Cc: bridge

On Mon, 13 Oct 2003 14:19:01 +0200
Gergely Madarasz <gorgo@thunderchild.debian.net> wrote:

> On Mon, Oct 13, 2003 at 01:16:47PM +0200, Gergely Madarasz wrote:
> > Hello,
> > 
> > I'm trying to make a bridge between a Broadcom BCM5703 gigabit ethernet
> > and a sun happy meal fastethernet interface. The sunhme card supports hw
> > checksums (and cannot be turned off in the driver). I applied the patch
> > (to set CHECKSUM_NONE on forwarded packets), but I still get kernel oopses
> > (though it seems less often than before). I cannot tell exactly what
> > triggers it, sometimes it seems a large ping, sometimes a broadcast ping,
> > sometimes just normal network traffic. Any ideas?
> 
> Oh, I forgot :) The kernel is 2.4.22 with the execshield patch. The cards
> work nicely when there is no bridge. One more specific info: when bridged,
> under normal circumstances the hme port is in blocking state (it should
> start forwarding only if the tg3 link is down). 

Fixed in 2.6.0-test6 or 2.4.23 or use this patch posted earlier to the list...
--------------

The hardware checksumming flags need to be cleared when forwarding packets.
Bridging just needs to forward what ever checksum is in the existing skbuff,
it doesn't want or need the packet to be resummed.

Without this fix, forwarding between smart/dumb interfaces causes an oops.

diff -Nru a/net/bridge/br_forward.c b/net/bridge/br_forward.c
--- a/net/bridge/br_forward.c	Mon Sep  8 09:29:44 2003
+++ b/net/bridge/br_forward.c	Mon Sep  8 09:29:44 2003
@@ -59,6 +59,7 @@
 
 	indev = skb->dev;
 	skb->dev = to->dev;
+	skb->ip_summed = CHECKSUM_NONE;
 
 	NF_HOOK(PF_BRIDGE, NF_BR_FORWARD, skb, indev, skb->dev,
 			__br_forward_finish);

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Bridge] hw checksum problems
  2003-10-13 16:15   ` Stephen Hemminger
@ 2003-10-13 17:00     ` Gergely Madarasz
  0 siblings, 0 replies; 6+ messages in thread
From: Gergely Madarasz @ 2003-10-13 17:00 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: bridge

On Mon, Oct 13, 2003 at 09:15:33AM -0700, Stephen Hemminger wrote:
> On Mon, 13 Oct 2003 14:19:01 +0200
> Gergely Madarasz <gorgo@thunderchild.debian.net> wrote:
> 
> > On Mon, Oct 13, 2003 at 01:16:47PM +0200, Gergely Madarasz wrote:
> > > checksums (and cannot be turned off in the driver). I applied the patch
                                                          ^^^^^^^^^^^^^^^^^^^
> > > (to set CHECKSUM_NONE on forwarded packets), but I still get kernel oopses
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> Fixed in 2.6.0-test6 or 2.4.23 or use this patch posted earlier to the list...
> --------------

So my problem is actually not fixed. And in my third mail I sent in some
oopses that were caused by locally generated packets.

-- 
Madarasz Gergely   gorgo@thunderchild.debian.net   gorgo@linux.rulez.org
    It's practically impossible to look at a penguin and feel angry.
        Egy pingvinre gyakorlatilag lehetetlen haragosan nezni.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Bridge] hw checksum problems
       [not found]     ` <p05111b01bbb180787e47@[10.96.96.13]>
@ 2003-10-14 11:23       ` Gergely Madarasz
  0 siblings, 0 replies; 6+ messages in thread
From: Gergely Madarasz @ 2003-10-14 11:23 UTC (permalink / raw)
  To: Hannes Schulz; +Cc: bridge

On Tue, Oct 14, 2003 at 12:35:48PM +0200, Hannes Schulz wrote:
> >> Oh, I forgot :) The kernel is 2.4.22 with the execshield patch. The cards
> >> work nicely when there is no bridge. One more specific info: when 
> >> bridged,
> >> under normal circumstances the hme port is in blocking state (it should
> >> start forwarding only if the tg3 link is down).
> 
> 
> There are 2 patches regarding bridging:
> 
> shemminger	1.1109.2.4 
> 	[BRIDGE]: Clear hw checksum flags when bridging.
> karlis	1.1063.40.5	[BRIDGE]: kfree --> kfree_skb.
> [these are messages from the bitkeeper log]
> 
> Both of them are in 2.4.23pre4. Either retry with 2.4.23pre4 or apply 
> those patches manually. I think you mentioned that you have applied 
> the first patch. The second patch fixed a memory corruption problem. 
> I have a bridged environment and *no* problems with it.

Thanks, so far it seems my problem has been fixed (2.4.23pre7 installed
now). My machine survived a ping -s 2000 -f <broadcastaddr> ;). 2.4.22
crashed instantly from this command :).

-- 
Madarasz Gergely   gorgo@thunderchild.debian.net   gorgo@linux.rulez.org
    It's practically impossible to look at a penguin and feel angry.
        Egy pingvinre gyakorlatilag lehetetlen haragosan nezni.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2003-10-14 11:23 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-10-13 11:16 [Bridge] hw checksum problems Gergely Madarasz
2003-10-13 12:19 ` Gergely Madarasz
2003-10-13 15:14   ` Gergely Madarasz
     [not found]     ` <p05111b01bbb180787e47@[10.96.96.13]>
2003-10-14 11:23       ` Gergely Madarasz
2003-10-13 16:15   ` Stephen Hemminger
2003-10-13 17:00     ` Gergely Madarasz

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.