Subject: kern/10198: tulip driver with MX98715A makes tons of receive errors
To: None <gnats-bugs@gnats.netbsd.org>
From: None <tsutsui@ceres.dti.ne.jp>
List: netbsd-bugs
Date: 05/25/2000 09:00:12
>Number:         10198
>Category:       kern
>Synopsis:       tulip driver with MX98715A makes tons of receive errors
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu May 25 09:01:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Izumi Tsutsui
>Release:        NetBSD-current 20000521
>Organization:
Izumi Tsutsui	Himeji City, Japan
>Environment:
System: NetBSD/macppc 1.4Y + MX98715A PCI Ethernet

>Description:
Tulip driver with Micronix MX98715A makes tons of receive errors
like CRC error, MII error and dribbling bit etc.

>How-To-Repeat:
Get some large files by ftp via MX98715A:

---
ftp> get mozilla-19981008.tar.gz
local: mozilla-19981008.tar.gz remote: moziltlp0: receive error: MII error
tlp0: receive error: dribbling bit
tlp0: receive error: CRC error
la-199tlp0: receive error: MII error
tlp0: receive error: dribbling bit
tlp0: receive error: CRC error
81008.tar.gz
229 Entering Extended Passive Mode (|||65344|)
150 Opening BINARY mode data connection for 'mozilla-19981008.tar.gz' (19173998 bytes).
  0% |                                     |     0       0.00 KB/s    --:-- ETAtlp0: receive error: MII error
tlp0: receive error: CRC error
  0% |                                     | 34752      17.07 KB/s    18:14 ETAtlp0: receive error: MII error
tlp0: receive error: dribbling bit
tlp0: receive error: CRC error
tlp0: receive error: MII error
tlp0: receive error: CRC error
tlp0: receive error: MII error
tlp0: receive error: dribbling bit
tlp0: receive error: CRC error
  0% |                                     |   109 KB   36.48 KB/s    08:30 ETAtlp0: receive error: MII error
tlp0: receive error: CRC error
  0% |                                     |   134 KB   33.71 KB/s    09:11 ETAtlp0: receive error: MII error
tlp0: receive error: dribbling bit
tlp0: receive error: CRC error
^C
receive aborted. Waiting for remote to finish abort.
426 Transfer aborted. Data connection closed.
[...]
% netstat -i -I tlp0
Name  Mtu   Network       Address              Ipkts Ierrs    Opkts Oerrs Colls
tlp0  1500  <Link>        00:40:26:56:20:29     4279    54     1081     0     0
tlp0  1500  192.168.20    lancer                4279    54     1081     0     0
tlp0  1500  fe80::        fe80::240:26ff:fe     4279    54     1081     0     0
%

>Fix:

The attached patch seems to fix this problem.
(Buffer size should be word aligned?)

Index: tulipvar.h
===================================================================
RCS file: /cvs/cvsroot/syssrc/sys/dev/ic/tulipvar.h,v
retrieving revision 1.33
diff -u -r1.33 tulipvar.h
--- tulipvar.h	2000/04/04 19:22:52	1.33
+++ tulipvar.h	2000/05/25 15:56:16
@@ -506,7 +506,7 @@
 	__rxd->td_bufaddr2 =						\
 	    htole32(TULIP_CDRXADDR((sc), TULIP_NEXTRX((x))));		\
 	__rxd->td_ctl =							\
-	    htole32(((__m->m_ext.ext_size - 1) << TDCTL_SIZE1_SHIFT) |	\
+	    htole32(((__m->m_ext.ext_size - 2) << TDCTL_SIZE1_SHIFT) |	\
 	    (sc)->sc_tdctl_ch |						\
 	    ((x) == (TULIP_NRXDESC - 1) ? sc->sc_tdctl_er : 0));	\
 	__rxd->td_status = htole32(TDSTAT_OWN|TDSTAT_Rx_FS|TDSTAT_Rx_LS); \
>Release-Note:
>Audit-Trail:
>Unformatted: