Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Jan 2019 04:36:48 +1100 (EST)
From:      Bruce Evans <brde@optusnet.com.au>
To:        Martin Birgmeier <d8zNeCFG@aon.at>
Cc:        Eugene Grosbein <eugen@grosbein.net>, net@freebsd.org
Subject:   Re: [Bug 235031] [em] em0: poor NFS performance, strange behavior
Message-ID:  <20190121042331.S2018@besplex.bde.org>
In-Reply-To: <20190121014017.W945@besplex.bde.org>
References:  <bug-235031-7501@https.bugs.freebsd.org/bugzilla/> <bug-235031-7501-goXNmp3zVl@https.bugs.freebsd.org/bugzilla/> <20190119204156.D929@besplex.bde.org> <3e407ee7-54e3-a6ac-5535-d11aceca9558@grosbein.net> <20190120061258.X3312@besplex.bde.org> <16ce1832-13da-d7bb-cce2-6682e058b5a6@aon.at> <20190120145627.X1077@besplex.bde.org> <fd67eca6-7c1d-687d-91ae-e09138732ed1@aon.at> <20190120231915.M2326@besplex.bde.org> <50a63079-4c2d-fc5c-47c5-1070b8fcd20c@aon.at> <20190121014017.W945@besplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 21 Jan 2019, Bruce Evans wrote:

> ...  For the em0
> NIC on my client, even the null change from autoselect to 1000baseT
> full-duplex often corrupts the NIC state so that even ping doesn't
> work.  I got tired of that and fixed the missing stopping:
>
> XX Index: iflib.c
> XX ===================================================================
> XX --- iflib.c	(revision 332488)
> XX +++ iflib.c	(working copy)
> XX @@ -2232,7 +2234,7 @@
> XX XX  	CTX_LOCK(ctx);
> XX  	if ((err = IFDI_MEDIA_CHANGE(ctx)) == 0)
> XX -		iflib_init_locked(ctx);
> XX +		iflib_if_init_locked(ctx);
> XX  	CTX_UNLOCK(ctx);
> XX  	return (err);
> XX  }
>
> The fix works perfectly.  Now it is safe to change the media on the.  The

On the client.

> null change from autoselect to 1000baseT full-duplex on the client now
> doesn't corrupt the state or change the nfs or ping speeds.  Changing
> the media to 100baseTX full-duplex on the client gives much the same
> misbehaviour as changing the media on the server similarly (not quite
> so bad).  But changing the mediat to 100baseTX full-duplex on both gives
> much worse behaviour.  Sometimes it causes the frame error reported
> by my previous patch.  Clearly there is a protocol mismatch.

This patch fixes the severe corruption of the state reported by the
"desc avail = 1024, pidx = 0" message for the case where the corruption
is from missing stopping for media changes.  I see that you reported
this corruption in this PR for rxcsum toggling and in another PR for
lro toggling.  These operations work right for me, at least with the
above patch, but the patch doesn't affect flags changes and stopping
seems to be done correctly for flags changes.

Bruce



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