Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/ic If using ring-mode, don't update the receive desc...



details:   https://anonhg.NetBSD.org/src/rev/bca67b5524f1
branches:  trunk
changeset: 486069:bca67b5524f1
user:      thorpej <thorpej%NetBSD.org@localhost>
date:      Fri May 12 17:09:27 2000 +0000

description:
If using ring-mode, don't update the receive descriptor list base address
when a receive overrun occurs.  From Castor Fu <castor%geocast.com@localhost>.

diffstat:

 sys/dev/ic/tulip.c |  13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

diffs (27 lines):

diff -r c39db63355e0 -r bca67b5524f1 sys/dev/ic/tulip.c
--- a/sys/dev/ic/tulip.c        Fri May 12 16:57:30 2000 +0000
+++ b/sys/dev/ic/tulip.c        Fri May 12 17:09:27 2000 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: tulip.c,v 1.62 2000/05/12 16:45:43 thorpej Exp $       */
+/*     $NetBSD: tulip.c,v 1.63 2000/05/12 17:09:27 thorpej Exp $       */
 
 /*-
  * Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -1086,10 +1086,13 @@
                                printf("%s: receive ring overrun\n",
                                    sc->sc_dev.dv_xname);
                                /* Get the receive process going again. */
-                               tlp_idle(sc, OPMODE_SR);
-                               TULIP_WRITE(sc, CSR_RXLIST,
-                                   TULIP_CDRXADDR(sc, sc->sc_rxptr));
-                               TULIP_WRITE(sc, CSR_OPMODE, sc->sc_opmode);
+                               if (sc->sc_tdctl_er != TDCTL_ER) {
+                                       tlp_idle(sc, OPMODE_SR);
+                                       TULIP_WRITE(sc, CSR_RXLIST,
+                                           TULIP_CDRXADDR(sc, sc->sc_rxptr));
+                                       TULIP_WRITE(sc, CSR_OPMODE,
+                                           sc->sc_opmode);
+                               }
                                TULIP_WRITE(sc, CSR_RXPOLL, RXPOLL_RPD);
                                break;
                        }



Home | Main Index | Thread Index | Old Index