Subject: Re: TG3 network data corruption regression 2.6.24/2.6.23.4

From: Tony Battersby <[email-masked]>
Date: Wed, 16 Apr 2008 17:00:41 -0400

Matt Carlson wrote:
> On Wed, Apr 16, 2008 at 08:40:25AM -0700, Michael Chan wrote:
>   
>> David Miller wrote:
>>
>>     
>>> Matt, skb->mac_header is either a pointer or an integer offset
>>> depending upon whether we are building 32-bit or 64-bit.
>>>
>>> Testing skb->mac_header is therefore wrong, because it's an
>>> offset from a pointer in the 64-bit case and therefore it's
>>> alignment does not indicate correctly the actual final alignment
>>> of skb->head + skb->max_header.
>>>
>>> Therefore you should test skb_mac_header(skb) and cast it with
>>> (unsigned long).
>>>       
>> Isn't it better to test for skb->data?  That's where we tell
>> the hardware to start transmitting.
>>
>>     
>>> Please respin this fix with that correction so I can apply it
>>> and get this bug fixed, thanks!
>>>
>>>
>>>       
>> We think that this problem is unique in Tony's environment because
>> of the PCIE-to-PCI bridge that he is using.  We therefore want to
>> test for that bridge and apply the workaround only when it's present.
>> We've never seen this problem in the last 6 or 7 years during the
>> lifetime of the 5701.
>>
>> We'll try to get this done ASAP.
>>
>> Thanks.
>>     
>
> Tony,
>
> Below is a patch that attempts to limit the workaround to the bridge you
> have on your system.  Can you test it and verify that the workaround is
> still enabled?
>
>
>   

This new patch also passes the test. Thumbs up!

Tested-by: Tony Battersby <[email-masked]>

Tony