Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 12 Sep 2004 12:25:49 -0400 (EDT)
From:      Andre Guibert de Bruet <andy@siliconlandmark.com>
To:        Robert Watson <rwatson@FreeBSD.ORG>
Cc:        current@FreeBSD.ORG
Subject:   Re: 6-CURRENT Network stack issues w/SMP? (Was: Re: TreeListfailed: Network write failure: ChannelMux.ProtocolError)
Message-ID:  <20040912110720.D84468@alpha.siliconlandmark.com>
In-Reply-To: <Pine.NEB.3.96L.1040912105547.3683C-100000@fledge.watson.org>
References:  <Pine.NEB.3.96L.1040912105547.3683C-100000@fledge.watson.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On Sun, 12 Sep 2004, Robert Watson wrote:
> On Sun, 12 Sep 2004, Andre Guibert de Bruet wrote:
>> On Sun, 12 Sep 2004, Kris Kennaway wrote:
>>> On Sun, Sep 12, 2004 at 02:42:03AM -0400, Andre Guibert de Bruet wrote:
>>>
>>>>> I've also noticed data corruption in the form of failed CRCs (And hence
>>>>> dropped SSH connections) while transferring large amounts of data via SSH
>>>>> over gige to a machine on its subnet. These problems started occuring
>>>>> after the giant-less networking megacommit. Older kernels check out
>>>>> without any such issues.
>>>
>>> Does it go away if you turn off debug.mpsafenet?  If not, it's
>>> probably not related to that commit.
>>
>> Setting debug.mpsafenet to 0 allows the SSH transfers to complete. The
>> MD5 checksums and sizes match. Where do we go from here?
>
> I think I'd look at the following next:
>
> - Does your network interface driver support checksum offload?  If so,
>  what happens if you disable that?

It appears that it does, based on the options field reported by ifconfig:
nge0: flags=108843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
         options=13<RXCSUM,TXCSUM,VLAN_HWTAGGING>

I can still reproduce the problem after passing -rxcsum and -txcsum while 
bringing the interface up.

> - Is the network interface driver marked as INTR_MPSAFE and/or not
>  IFF_NEEDSGIANT.  If either, try setting the driver to run with Giant by
>  removing INTR_MPSAFE and adding IFF_NEEDSGIANT.

dev/nge/if_nge.c has the interface marked as IFF_NEEDSGIANT, with no 
trace of INTR_MPSAFE. My dmesg confirms this: "nge0: [GIANT-LOCKED]"

> After that I think we want to try and produce a non-SSH reproduction
> scenario using a very simple test program...

Attempting to bring a local FreeBSD repo up-to-date causes the issue to 
manifest itself. If portupgrade is run and execs a fetch for a large 
tarball from a fast mirror (100KB/s+), the problem manifests itself as 
well.

I cannot yet make any conclusive determination, but preliminary pattern 
analysis seems to indicate that large bursts of network traffic on this 
gige interface aid the reproduction of this condition. The machine in 
question acts as a dns resolver for my small home network and appears to 
handle light amounts of traffic without any issues.

Thanks for the help,
Andy

| Andre Guibert de Bruet | Enterprise Software Consultant >
| Silicon Landmark, LLC. | http://siliconlandmark.com/    >



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