Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Apr 2008 09:39:38 -0700
From:      Alfred Perlstein <alfred@freebsd.org>
To:        Sogabe Takashi <sogabe@iij.ad.jp>
Cc:        freebsd-drivers@freebsd.org
Subject:   Re: question: workaround for AX88190 (dev/ed/if_ed.c)
Message-ID:  <20080416163938.GM95731@elvis.mu.org>
In-Reply-To: <4805BBA7.60806@iij.ad.jp>
References:  <4805BBA7.60806@iij.ad.jp>

next in thread | previous in thread | raw e-mail | index | archive | help
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.

* 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
> _______________________________________________
> 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



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