Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 4 Sep 2002 17:07:48 +0200 (CEST)
From:      Martin Blapp <mb@imp.ch>
To:        <current@freebsd.org>
Subject:   Uncommitted dc0 fixes ...
Message-ID:  <20020904165819.R31964-100000@levais.imp.ch>

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

Hi all,

Anybody who can, please commit these PR's.

1) dc driver uses wrong case to read MAC from eeprom.

http://www.FreeBSD.org/cgi/query-pr.cgi?pr=kern/35482


2) Tulip ether card EN2242 (if_dc.c) use wrong multicast table

http://www.FreeBSD.org/cgi/query-pr.cgi?pr=misc/32699


3) ADMtek AN98x, enable automatically TX underrun recovery

Patch No3 fixes some part of link problem on EN2242 cards.
I've tested this patch and it makes by laptop working again with
cvsup.

And this patch here together with patch III made the annoying messages (dc0:
failed to force tx and rx to idle mode) go away. And I can use now my card
without to replug the cable over again)

--- /usr/src/sys/pci/if_dc.c    Sun Jun 16 21:36:00 2002
+++ /usr/src/sys/pci/if_dc.c    Wed Sep  4 16:57:23 2002
@@ -1338,17 +1362,21 @@
                restart = 1;
                DC_CLRBIT(sc, DC_NETCFG, (DC_NETCFG_TX_ON|DC_NETCFG_RX_ON));

-               for (i = 0; i < DC_TIMEOUT; i++) {
-                       isr = CSR_READ_4(sc, DC_ISR);
-                       if (isr & DC_ISR_TX_IDLE &&
-                           (isr & DC_ISR_RX_STATE) == DC_RXSTATE_STOPPED)
-                               break;
-                       DELAY(10);
-               }
+               if (DC_IS_INTEL(sc)) {
+                       for (i = 0; i < DC_TIMEOUT; i++) {
+                               isr = CSR_READ_4(sc, DC_ISR);
+                               if (isr & DC_ISR_TX_IDLE &&
+                                   (isr & DC_ISR_RX_STATE)
+                                   == DC_RXSTATE_STOPPED)
+                                       break;
+                               DELAY(10);
+                       }

-               if (i == DC_TIMEOUT)
-                       printf("dc%d: failed to force tx and "
-                               "rx to idle state\n", sc->dc_unit);
+                       if (i == DC_TIMEOUT) {
+                               printf("dc%d: failed to force tx and "
+                                       "rx to idle state\n", sc->dc_unit);
+                       }
+               }
        }

Martin Blapp, <mb@imp.ch> <mbr@FreeBSD.org>
------------------------------------------------------------------
ImproWare AG, UNIXSP & ISP, Zurlindenstrasse 29, 4133 Pratteln, CH
Phone: +41 061 826 93 00: +41 61 826 93 01
PGP: <finger -l mbr@freebsd.org>
PGP Fingerprint: B434 53FC C87C FE7B 0A18 B84C 8686 EF22 D300 551E
------------------------------------------------------------------


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




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