From owner-freebsd-drivers@FreeBSD.ORG Wed Apr 16 19:20:16 2008 Return-Path: Delivered-To: freebsd-drivers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 787B6106564A; Wed, 16 Apr 2008 19:20:16 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id 356E58FC1D; Wed, 16 Apr 2008 19:20:16 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from localhost (localhost [127.0.0.1]) by harmony.bsdimp.com (8.14.2/8.14.1) with ESMTP id m3GJJPQb024027; Wed, 16 Apr 2008 13:19:25 -0600 (MDT) (envelope-from imp@bsdimp.com) Date: Wed, 16 Apr 2008 13:20:24 -0600 (MDT) Message-Id: <20080416.132024.1649777798.imp@bsdimp.com> To: alfred@freebsd.org From: "M. Warner Losh" In-Reply-To: <20080416163938.GM95731@elvis.mu.org> References: <4805BBA7.60806@iij.ad.jp> <20080416163938.GM95731@elvis.mu.org> X-Mailer: Mew version 5.2 on Emacs 21.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: freebsd-drivers@freebsd.org Subject: Re: question: workaround for AX88190 (dev/ed/if_ed.c) X-BeenThere: freebsd-drivers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Writing device drivers for FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Apr 2008 19:20:17 -0000 In message: <20080416163938.GM95731@elvis.mu.org> Alfred Perlstein writes: : I think the driver developer found the card buggy and wanted : to give it a longer try to clear the status bits, but if it : just flat out refuses to clear status, then it just aborts. Some versions of silicon seem to be better than others at this as well. Some cards need it, but most don't. Warner : * Sogabe Takashi [080416 02:00] wrote: : > Hi all, : > : > Does anyone know what kind of problems about following : > workaround-code? : > : > I read asix datasheets, but corresponding problem is not : > described. : > : > (in sys/dev/ed/if_ed.c) : > /* : > * Ethernet interface interrupt processor : > */ : > void : > edintr(void *arg) : > { : > ... : > /* : > * XXX workaround for AX88190 : > * We limit this to 5000 iterations. At 1us per inb/outb, : > * this translates to about 15ms, which should be plenty : > * of time, and also gives protection in the card eject : > * case. : > */ : > if (sc->chip_type == ED_CHIP_TYPE_AX88190) { : > count = 5000; /* 15ms */ : > while (count-- && (ed_nic_inb(sc, ED_P0_ISR) & isr)) { : > ed_nic_outb(sc, ED_P0_ISR,0); : > ed_nic_outb(sc, ED_P0_ISR,isr); : > } : > if (count == 0) : > break; : > } : > ... : > } : > : > -- : > sogabe@iij.ad.jp : > _______________________________________________ : > freebsd-drivers@freebsd.org mailing list : > http://lists.freebsd.org/mailman/listinfo/freebsd-drivers : > To unsubscribe, send any mail to "freebsd-drivers-unsubscribe@freebsd.org" : : -- : - Alfred Perlstein : _______________________________________________ : freebsd-drivers@freebsd.org mailing list : http://lists.freebsd.org/mailman/listinfo/freebsd-drivers : To unsubscribe, send any mail to "freebsd-drivers-unsubscribe@freebsd.org" : :