From owner-freebsd-current Fri Sep 20 8: 0:45 2002 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 ED7EA37B401 for ; Fri, 20 Sep 2002 08:00:43 -0700 (PDT) Received: from mail.speakeasy.net (mail13.speakeasy.net [216.254.0.213]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8953243E6A for ; Fri, 20 Sep 2002 08:00:43 -0700 (PDT) (envelope-from jhb@FreeBSD.org) Received: (qmail 7406 invoked from network); 20 Sep 2002 15:00:46 -0000 Received: from unknown (HELO server.baldwin.cx) ([216.27.160.63]) (envelope-sender ) by mail13.speakeasy.net (qmail-ldap-1.03) with DES-CBC3-SHA encrypted SMTP for ; 20 Sep 2002 15:00:46 -0000 Received: from laptop.baldwin.cx (gw1.twc.weather.com [216.133.140.1]) by server.baldwin.cx (8.12.5/8.12.5) with ESMTP id g8KF0eBv069435; Fri, 20 Sep 2002 11:00:40 -0400 (EDT) (envelope-from jhb@FreeBSD.org) Message-ID: X-Mailer: XFMail 1.5.2 on FreeBSD X-Priority: 3 (Normal) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 8bit MIME-Version: 1.0 In-Reply-To: <200209201448.g8KEmt330410@dungeon.home> Date: Fri, 20 Sep 2002 11:00:42 -0400 (EDT) From: John Baldwin To: Stephen McKay Subject: Re: dc(4) patch Cc: current@FreeBSD.org Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On 20-Sep-2002 Stephen McKay wrote: > On Thursday, 19th September 2002, John Baldwin wrote: > >>--- if_dc.c 4 Sep 2002 18:14:17 -0000 1.77 >>+++ if_dc.c 19 Sep 2002 20:57:03 -0000 >>@@ -1366,7 +1370,8 @@ >> 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) >>+ ((isr & DC_ISR_RX_STATE) == DC_RXSTATE_STOPPED || >>+ (isr & DC_ISR_RX_STATE) == DC_RXSTATE_WAIT)) >> break; >> DELAY(10); >> } > > Sadly this change is insufficient to satisfy all cards. Well. I think we can keep the check for TX going idle and just not do the check for RX going idle. The original code basically did this until you submitted a patch to wpaul@ that fixed a logic bug (used || above instead of &&) that effectively didn't do the RX idle check. Perhaps we should do the same here? This would be similar to what we do in dc_tx_underrun() where we only make sure the TX is idle. -- John Baldwin <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message