Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Oct 2005 11:05:58 GMT
From:      Andreas Klemm <andreas@FreeBSD.org>
To:        bits_@web.de, andreas@FreeBSD.org, freebsd-bugs@FreeBSD.org, obrien@FreeBSD.org
Subject:   Re: kern/88045: [nve] [timeout] 6.0rc1: nve0: device timeout (51)
Message-ID:  <200510271105.j9RB5ww8096224@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
Synopsis: [nve] [timeout] 6.0rc1: nve0: device timeout (51)

State-Changed-From-To: open->analyzed
State-Changed-By: andreas
State-Changed-When: Thu Oct 27 11:00:01 GMT 2005
State-Changed-Why: 
Answer from Quinton Dolan q (at) OntheNet (dot) com (dot) au:
+---------------------
I am not currently tracking FreeBSD development, but I have a good
idea what may be contributing to the number of timeout errors you are
seeing.
Check around line 730 of if_nv.c (or whatever it's called in 6.0)
        sc->linkup = 0;
        sc->cur_rx = 0;
        sc->pending_rxs = 0;
+       sc->pending_txs = 0;
This should mostly eliminate the problem.
+---------------------

I added this fix which entirely solves the problem in FreeBSD 6.0rc1:
Index: if_nve.c
===================================================================
RCS file: /data/ncvs/src/sys/dev/nve/if_nve.c,v
retrieving revision 1.7.2.4
diff -u -r1.7.2.4 if_nve.c
--- if_nve.c    9 Oct 2005 04:18:17 -0000       1.7.2.4
+++ if_nve.c    27 Oct 2005 09:58:45 -0000
@@ -727,7 +727,7 @@

        DEBUGOUT(NVE_DEBUG_INIT, "nve: nve_init_rings - entry\n");

-       sc->cur_rx = sc->cur_tx = sc->pending_rxs = sc->pending_txs = 0;
+       sc->cur_rx = sc->cur_tx = sc->pending_rxs = 0;
        /* Initialise RX ring */
        for (i = 0; i < RX_RING_SIZE; i++) {
                struct nve_rx_desc *desc = sc->rx_desc + i;

This should could/should solve these PRs from 6.0 Beta 3 and Beta 1 as well:
- http://www.freebsd.org/cgi/query-pr.cgi?pr=amd64/84027
        if_nve gets stuck
- http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/85583
        [nve] [timeout] send errors ("device timeout")
        with nVidia Ethernet nve(4) in 6.0-BETA3


Responsible-Changed-From-To: freebsd-bugs->obrien
Responsible-Changed-By: andreas
Responsible-Changed-When: Thu Oct 27 11:00:01 GMT 2005
Responsible-Changed-Why: 
Answer from Quinton Dolan q (at) OntheNet (dot) com (dot) au:
+---------------------
I am not currently tracking FreeBSD development, but I have a good
idea what may be contributing to the number of timeout errors you are
seeing.
Check around line 730 of if_nv.c (or whatever it's called in 6.0)
        sc->linkup = 0;
        sc->cur_rx = 0;
        sc->pending_rxs = 0;
+       sc->pending_txs = 0;
This should mostly eliminate the problem.
+---------------------

I added this fix which entirely solves the problem in FreeBSD 6.0rc1:
Index: if_nve.c
===================================================================
RCS file: /data/ncvs/src/sys/dev/nve/if_nve.c,v
retrieving revision 1.7.2.4
diff -u -r1.7.2.4 if_nve.c
--- if_nve.c    9 Oct 2005 04:18:17 -0000       1.7.2.4
+++ if_nve.c    27 Oct 2005 09:58:45 -0000
@@ -727,7 +727,7 @@

        DEBUGOUT(NVE_DEBUG_INIT, "nve: nve_init_rings - entry\n");

-       sc->cur_rx = sc->cur_tx = sc->pending_rxs = sc->pending_txs = 0;
+       sc->cur_rx = sc->cur_tx = sc->pending_rxs = 0;
        /* Initialise RX ring */
        for (i = 0; i < RX_RING_SIZE; i++) {
                struct nve_rx_desc *desc = sc->rx_desc + i;

This should could/should solve these PRs from 6.0 Beta 3 and Beta 1 as well:
- http://www.freebsd.org/cgi/query-pr.cgi?pr=amd64/84027
        if_nve gets stuck
- http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/85583
        [nve] [timeout] send errors ("device timeout")
        with nVidia Ethernet nve(4) in 6.0-BETA3

http://www.freebsd.org/cgi/query-pr.cgi?pr=88045



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