netdev
[Top] [All Lists]

Re: [Bridge] Bridging on broken Broadcom hardware.

To: Paul Schulz <pschulz@xxxxxxxxxxxxxx>
Subject: Re: [Bridge] Bridging on broken Broadcom hardware.
From: Stephen Hemminger <shemminger@xxxxxxxx>
Date: Wed, 18 Feb 2004 16:16:11 -0800
Cc: netdev@xxxxxxxxxxx, sjolly@xxxxxxxxxxxxxx
In-reply-to: <1077146945.3779.17.camel@localhost>
Organization: Open Source Development Lab
References: <1077146945.3779.17.camel@localhost>
Sender: netdev-bounce@xxxxxxxxxxx
This looks like a network driver not bridging problem, so forwarding to
the netdev list.

On Thu, 19 Feb 2004 09:59:05 +1030
Paul Schulz <pschulz@xxxxxxxxxxxxxx> wrote:

> Greetings (first post to the list, with patch)...
> 
> The following patch is required to allow bridging to occur on an
> IBM x305 (1RU server) - with the tg3 module.  
> (This has been posted to the kernel-developers mailing list.)
> 
> Background:
>   - The Dual Broadcom NICs in the IBM x305 have a broken checksum
>     routine which wants to calculate the checksum the ethernet
>     packet where the 'source' IP address is the IP address 
>     of the sending interface.
>     This breaks bridging! (Upstream hosts see an invalid checksum 
>     and drop the packet.)
> 
>   - I have heard of other issues with Broadcom NICs not
>     working with IPv6 and broadcast/multicast which could be 
>     related.
>     
> I would like to get these results and the fix verified, as it will
> effect any hosts using this chipset. Does anyone have any pointers?
> 
> Paul Schulz <pschulz@xxxxxxxxxxxxxx>
> 
> --------------------------------------------------------------------
> diff -Naur linux-2.4.20/drivers/net/tg3.c linux-2.4.20-np/drivers/net/tg3.c
> --- linux-2.4.20/drivers/net/tg3.c    Fri Nov 29 10:23:14 2002
> +++ linux-2.4.20-np/drivers/net/tg3.c Thu Jan 23 14:46:54 2003
> @@ -6161,6 +6161,11 @@
>       if (tp->pci_chip_rev_id == CHIPREV_ID_5700_B0)
>               tp->tg3_flags |= TG3_FLAG_BROKEN_CHECKSUMS;
>  
> +     /* 5703 A2 have issues with checksumming too. (sarah) */
> +     if (tp->pci_chip_rev_id == CHIPREV_ID_5703_A2)
> +             tp->tg3_flags |= TG3_FLAG_BROKEN_CHECKSUMS;
> +
>       /* Regardless of whether checksums work or not, we configure
>        * the StrongARM chips to not compute the pseudo header checksums
>        * in either direction.  Because of the way Linux checksum support
> 
> 
> 
> 


-- 
Stephen Hemminger               mailto:shemminger@xxxxxxxx
Open Source Development Lab     http://developer.osdl.org/shemminger

<Prev in Thread] Current Thread [Next in Thread>