Date: Tue, 6 Feb 1996 10:29:32 +0500 (GMT+0500) From: "Serge A. Babkin" <babkin@hq.icb.chel.su> To: davidg@Root.COM Cc: alexis@unicorn.ww.net, hackers@FreeBSD.org Subject: Re: ep driver Message-ID: <199602060529.KAA02691@hq.icb.chel.su> In-Reply-To: <199602051527.HAA02845@Root.COM> from "David Greenman" at Feb 5, 96 07:27:42 am
next in thread | previous in thread | raw e-mail | index | archive | help
>
> >working is to enable its epwatchdog() routine:
> >
> >add "ifp->if_timer = 1;" after " "ifp->if_watchdog = epwatchdog;"
> >
> >The reason why David Greenman has disabled it is that he throught that
> >epwarchdog() restes the card. But really it does not reset it.
>
> Actually, what I objected to was the general use of the watchdog routine
> to cover up what is clearly one or more serious bugs in the driver. The
> watchdog routine in this case is being used in a way that is entirely
> inappropriate and if removing the kludge causes the driver to occasionally
> hang, then someone should go find out why and fix it!
Okay, I think I understand you now. This patch must help. The card
looks to be working with it.
*** if_ep.c Fri Feb 2 08:42:17 1996
--- if_ep.c Tue Feb 6 10:20:23 1996
***************
*** 764,769 ****
--- 764,770 ----
}
#endif
+ ifp->if_timer=2;
sc->arpcom.ac_if.if_opackets++;
m_freem(top);
/*
***************
*** 819,830 ****
--- 820,833 ----
}
if (status & S_TX_AVAIL) {
/* we need ACK */
+ ifp->if_timer=0;
sc->arpcom.ac_if.if_flags &= ~IFF_OACTIVE;
GO_WINDOW(1);
inw(BASE + EP_W1_FREE_TX);
epstart(&sc->arpcom.ac_if);
}
if (status & S_CARD_FAILURE) {
+ ifp->if_timer=0;
#ifdef EP_LOCAL_STATS
printf("\nep%d:\n\tStatus: %x\n", unit, status);
GO_WINDOW(4);
***************
*** 849,854 ****
--- 852,858 ----
return;
}
if (status & S_TX_COMPLETE) {
+ ifp->if_timer=0;
/* we need ACK. we do it at the end */
/*
* We need to read TX_STATUS until we get a 0 status in order to
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199602060529.KAA02691>
