question: workaround for AX88190 (dev/ed/if_ed.c)
Alfred Perlstein
alfred at freebsd.org
Wed Apr 16 16:55:52 UTC 2008
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 at 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 at iij.ad.jp
> _______________________________________________
> freebsd-drivers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-drivers
> To unsubscribe, send any mail to "freebsd-drivers-unsubscribe at freebsd.org"
--
- Alfred Perlstein
More information about the freebsd-drivers
mailing list