Subject: Re: 3c900 PCI ethernet card
To: None <current-users@NetBSD.ORG>
From: Jonathan Stone <jonathan@DSG.Stanford.EDU>
List: current-users
Date: 09/29/1996 00:36:53
I have several 3c595s running at 100Mbit (100-Tx)  with 100Mbit
repeaters and Cisco Catalyst 100Mbit ports.  The 3c595s are Rev B
(marked in pencil on the board.)  I'm using NetBSD 1.2.


I just sent quarter of a million packets with ping -f from one 
board to another, on both the hub and the repeater. Works fine for me.
and has done since install

I am, however, running the  fix in pr #2661, which  I append below.
I don't know if it makes a difference for whatever your're seeing;
but it's remotely possible it will.


Index: src/sys/dev/ic/elink3reg.h
*** elink3reg.h.DIST	Fri May 10 04:28:39 1996
--- elink3reg.h	Sun Jul 28 16:25:10 1996
***************
*** 87,92 ****
--- 87,93 ----
   * Window 2 registers. Station Address Setup/Read
   */
  	/* Read/Write */
+ #define EP_W2_RECVMASK_0	0x06
  #define EP_W2_ADDR_5		0x05
  #define EP_W2_ADDR_4		0x04
  #define EP_W2_ADDR_3		0x03
***************
*** 138,143 ****
--- 139,156 ----
  #define TX_AFTER_X_COLLISIONS	0x02
  #define TX_NO_SQE		0x01
  #define TX_CD_LOST		0x00
+ 
+ /*
+  * Window 7 registers.
+  * Address and length for a single bus-master DMA transfer.
+  */
+ #define EP_W7_MASTER_ADDDRES	0x00
+ #define EP_W7_RX_ERROR		0x04
+ #define EP_W7_MASTER_LEN	0x06
+ #define EP_W7_RX_STATUS		0x08
+ #define EP_W7_TIMER		0x0a
+ #define EP_W7_TX_STATUS		0x0b
+ #define EP_W7_MASTER_STATUS	0x0c
  
  /*
   * Register definitions.
Index: src/sys/dev/ic/elink3.c
*** elink3.c.orig	Wed May 15 04:33:01 1996
--- elink3.c	Sun Jul 28 16:22:38 1996
***************
*** 200,205 ****
--- 200,210 ----
  		bus_io_write_1(bc, ioh, EP_W2_ADDR_0 + i,
  		    sc->sc_arpcom.ac_enaddr[i]);
  
+ 	if (sc->bustype == EP_BUS_PCI || sc->bustype == EP_BUS_EISA)
+ 		/* Reset the station-address receive filter */
+ 		for (i = 0; i < 6; i++)
+ 			bus_io_write_1(bc, ioh,EP_W2_RECVMASK_0 + i, 0);
+ 
  	bus_io_write_2(bc, ioh, EP_COMMAND, RX_RESET);
  	bus_io_write_2(bc, ioh, EP_COMMAND, TX_RESET);