From tk@pars.sics.se  Fri Jun  7 14:48:46 1996
Received: from pars.sics.se (pars.sics.se [192.16.123.61])
          by freefall.freebsd.org (8.7.5/8.7.3) with SMTP id OAA25615
          for <FreeBSD-gnats-submit@freebsd.org>; Fri, 7 Jun 1996 14:48:44 -0700 (PDT)
Received: (from tk@localhost) by pars.sics.se (8.6.12/8.6.12) id XAA01592; Fri, 7 Jun 1996 23:49:08 +0200
Message-Id: <199606072149.XAA01592@pars.sics.se>
Date: Fri, 7 Jun 1996 23:49:08 +0200
From: Torsten Koehler <tk@pars.sics.se>
Reply-To: tk@pars.sics.se
To: FreeBSD-gnats-submit@freebsd.org
Subject: DEC FDDI/PCI Adapter: halt code = 6 (DMA Error)  
X-Send-Pr-Version: 3.2

>Number:         1301
>Category:       kern
>Synopsis:       DEC FDDI/PCI Adapter: halt code = 6 (DMA Error)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    davidg
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Jun  7 14:50:02 PDT 1996
>Closed-Date:    Mon Aug 28 11:05:23 PDT 2000
>Last-Modified:  Mon Aug 28 11:06:33 PDT 2000
>Originator:     Torsten Koehler
>Release:        FreeBSD 2.1-STABLE i386
>Organization:
SICS 
>Environment:

DEC FDDI/PCI adapter FW 2.46, HW 1,
both FreeBSD 2.1.0 or 2.2-960501-SNAP.

>Description:

Under high load conditions and with certain packet sizes,
the FDDI card reports an DMA error. The FDDI link goes down
and the computer is locked for a couple of seconds due to
ongoing adapter reinitialization.	

The DMA error occurres with ping packet sizes of 2040 and
4089 bytes (it looks like that all ping packet sizes greater
than 4088 create that error). Adding IP and FDDI headers,
those ping packet sizes correspond to DMA segments of size
41+2048+1 and 41+2048+2048+1. Segment sizes of 41+2048 
and 41+2048+2048 don't create an DMA error.

>How-To-Repeat:

ping 2.1.0. has been modified to create higher output (see below):

359c359
<                       timeout.tv_sec = 0;
---
>                       /* timeout.tv_sec = 0;
363c363
<                           (fd_set *)NULL, &timeout) < 1)
---
>                           (fd_set *)NULL, &timeout) < 1) */
448c448
<       if (i < 0 || i != cc)  {
---
>       if ((i < 0 || i != cc) && errno != 55)  {

Create an ARP entry for a non-existing host (might not be neccessary,
that's how I've tested it). 

./ping -q -f -s 4088 host		# no error 
./ping -q -f -s 4089 host		# dma error

/kernel.210_GEN_FDDI: fpa0: Halted: halt code = 6 (DMA Error)

>Fix:

Reduce mtu size and load.
>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->davidg 
Responsible-Changed-By: jkh 
Responsible-Changed-When: Fri Jun 7 17:23:59 PDT 1996 
Responsible-Changed-Why:  
Well, Matt's not one of the people I can point this at, so I guess you're 
next in line. :-) 
State-Changed-From-To: open->closed 
State-Changed-By: dg 
State-Changed-When: Mon Aug 28 11:05:23 PDT 2000 
State-Changed-Why:  
I was never the maintainer of the DEC FDDI driver and I believe 
this particular problem was solved years ago. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=1301 
>Unformatted:
Torsten Koehler
