Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Apr 2008 12:20:45 +0900
From:      Sogabe Takashi <sogabe@iij.ad.jp>
To:        freebsd-drivers@freebsd.org
Subject:   Re: question: workaround for AX88190 (dev/ed/if_ed.c)
Message-ID:  <4808138D.2040408@iij.ad.jp>
In-Reply-To: <20080416.132024.1649777798.imp@bsdimp.com>
References:  <4805BBA7.60806@iij.ad.jp>	<20080416163938.GM95731@elvis.mu.org> <20080416.132024.1649777798.imp@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
I see buggy cards must be around here..
I think any other AX series(ax88796, etc.) may have similler
bugs, but I don't know how to confirm them.

Thanks,
--
sogabe@iij.ad.jp


> In message: <20080416163938.GM95731@elvis.mu.org>
>             Alfred Perlstein <alfred@freebsd.org> 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 <sogabe@iij.ad.jp> [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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4808138D.2040408>