List Info

Thread: question: workaround for AX88190 (dev/ed/if_ed.c)




question: workaround for AX88190 (dev/ed/if_ed.c)
user name
2008-04-16 03:41:11
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;
		}
...
}

--
sogabeiij.ad.jp
_______________________________________________
freebsd-driversfreebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-drive
rs
To unsubscribe, send any mail to
"freebsd-drivers-unsubscribefreebsd.org"

Re: question: workaround for AX88190 (dev/ed/if_ed.c)
country flaguser name
United States
2008-04-16 11:39:38
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 <sogabeiij.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;
> 		}
> ...
> }
> 
> --
> sogabeiij.ad.jp
> _______________________________________________
> freebsd-driversfreebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-drive
rs
> To unsubscribe, send any mail to
"freebsd-drivers-unsubscribefreebsd.org"

-- 
- Alfred Perlstein
_______________________________________________
freebsd-driversfreebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-drive
rs
To unsubscribe, send any mail to
"freebsd-drivers-unsubscribefreebsd.org"

Re: question: workaround for AX88190 (dev/ed/if_ed.c)
country flaguser name
United States
2008-04-16 14:20:24
In message: <20080416163938.GM95731elvis.mu.org>
            Alfred Perlstein <alfredfreebsd.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 <sogabeiij.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;
: > 		}
: > ...
: > }
: > 
: > --
: > sogabeiij.ad.jp
: > _______________________________________________
: > freebsd-driversfreebsd.org mailing list
: > http://lists.freebsd.org/mailman/listinfo/freebsd-drive
rs
: > To unsubscribe, send any mail to
"freebsd-drivers-unsubscribefreebsd.org"
: 
: -- 
: - Alfred Perlstein
: _______________________________________________
: freebsd-driversfreebsd.org mailing list
: http://lists.freebsd.org/mailman/listinfo/freebsd-drive
rs
: To unsubscribe, send any mail to
"freebsd-drivers-unsubscribefreebsd.org"
: 
: 
_______________________________________________
freebsd-driversfreebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-drive
rs
To unsubscribe, send any mail to
"freebsd-drivers-unsubscribefreebsd.org"

[1-3]

about | contact  Other archives ( Real Estate discussion Medical topics )