From owner-freebsd-current@FreeBSD.ORG Sun Jan 4 13:51:16 2004 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C6EBE16A4CE; Sun, 4 Jan 2004 13:51:16 -0800 (PST) Received: from gw.catspoiler.org (217-ip-163.nccn.net [209.79.217.163]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5884943D4C; Sun, 4 Jan 2004 13:51:15 -0800 (PST) (envelope-from truckman@FreeBSD.org) Received: from FreeBSD.org (mousie.catspoiler.org [192.168.101.2]) by gw.catspoiler.org (8.12.9p2/8.12.9) with ESMTP id i04Lp27E009737; Sun, 4 Jan 2004 13:51:07 -0800 (PST) (envelope-from truckman@FreeBSD.org) Message-Id: <200401042151.i04Lp27E009737@gw.catspoiler.org> Date: Sun, 4 Jan 2004 13:51:02 -0800 (PST) From: Don Lewis To: dejan.lesjak@ijs.si In-Reply-To: <200401041115.29188.dejan.lesjak@ijs.si> MIME-Version: 1.0 Content-Type: TEXT/plain; charset=us-ascii cc: ryans@gamersimpact.com cc: silby@silby.com cc: freebsd-current@FreeBSD.org cc: wpaul@FreeBSD.org Subject: Re: 5.2-RC oerrs and collisions on dc0 X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Jan 2004 21:51:16 -0000 I just took a closer look at the busdma diff, and this change to dc_txeof() looks very suspicious: @@ -2663,7 +2809,7 @@ if (txstat & DC_TXSTAT_OWN) break; - if (!(cur_tx->dc_ctl & DC_TXCTL_LASTFRAG) || + if (!(cur_tx->dc_ctl & DC_TXCTL_FIRSTFRAG) || cur_tx->dc_ctl & DC_TXCTL_SETUP) { if (cur_tx->dc_ctl & DC_TXCTL_SETUP) { /* The code in the "if" block ends with a "continue" which will cause the error handling code to be skipped if the "if" condition is true. I'm pretty sure that the error status bits are only set in the last descriptor for the frame, so we want to execute the "continue" unless the DC_TXCTL_LASTFRAG bit is set. Try reverting this part of the busdma change.