From owner-freebsd-current Fri Sep 20 8:20:19 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 07C9937B401; Fri, 20 Sep 2002 08:20:18 -0700 (PDT) Received: from smtp0.adl1.internode.on.net (smtp0.adl1.internode.on.net [203.16.214.194]) by mx1.FreeBSD.org (Postfix) with ESMTP id CEA9A43E75; Fri, 20 Sep 2002 08:20:16 -0700 (PDT) (envelope-from smckay@internode.on.net) Received: from dungeon.home (ppp1471.qld.padsl.internode.on.net [150.101.178.190]) by smtp0.adl1.internode.on.net (8.12.4/8.12.4) with ESMTP id g8KFKEp5091201; Sat, 21 Sep 2002 00:50:15 +0930 (CST) Received: from dungeon.home (localhost [127.0.0.1]) by dungeon.home (8.11.6/8.11.6) with ESMTP id g8KFKD332411; Sat, 21 Sep 2002 01:20:14 +1000 (EST) (envelope-from mckay) Message-Id: <200209201520.g8KFKD332411@dungeon.home> To: John Baldwin Cc: Stephen McKay , current@FreeBSD.org Subject: Re: dc(4) patch References: In-Reply-To: from John Baldwin at "Fri, 20 Sep 2002 11:00:42 -0400" Date: Sat, 21 Sep 2002 01:20:13 +1000 From: Stephen McKay 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 Friday, 20th September 2002, John Baldwin wrote: >On 20-Sep-2002 Stephen McKay wrote: >> 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. Not quite. Davicom cards (and your card) fail to idle the receiver. PNIC cards fail to idle the transmitter. So it makes just as much sense as any other idea to check those bits only on cards that document that you have to check those bits. My documentation only covers Intel. :-) >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. Except that the documentation states you have to idle the TX and RX to change the full duplex bit, whereas you only have to idle the TX to change the transmit fifo threshold. And in dc_tx_underrun() only the genuine Intel chips are treated specially. Clones seem to work without idling the transmitter. Except the poor Davicom, which gets reset on every underrun (if anyone has one, and it gets underruns, you could try including it with the DC_IS_INTEL(sc) case and see what happens). Stephen. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message