Date: Sat, 25 May 1996 12:49:57 -0700 From: "Justin T. Gibbs" <gibbs@freefall.freebsd.org> To: mevans@candle.com (Michael T. Evans) Cc: gtc@aloft.att.com, bugs@freebsd.org Subject: Re: 3c509 transmit hang Message-ID: <199605251949.MAA11155@freefall.freebsd.org> In-Reply-To: Your message of "Fri, 24 May 1996 19:34:03 CDT." <199605250035.AA09802@phobos.Candle.Com>
next in thread | previous in thread | raw e-mail | index | archive | help
This seems to work on my 3c509, but I just realized that I'm getting terrible performance for incoming packets. Looking at the hub, I get a quick burst of activity followed by silence for a second, followed by another burst. I would guess this is the watchdog timer expiring and unwedging the card. Has anyone else seen this or begun to investigate it? I also noticed some portions of the code running at splbio(). Why would this be necessary? Also the ed driver assumes that ed_start is always called at splimp(). ep_start does its own splimp protection although it is only called from the interrupt handler and from the higher networking code. I assume I can kill the splimp() stuff in ep_start just as was done in the ed driver? I guess its time to hit the learning curve for network drivers. 8-) >Gary, > > To my horror, I just realized that I typed the wrong subject >line in the original post. The driver I modified was for the >3c590, not the 3c509. The good news is that the basic >operation appears to be similar, and yes the defect IS also in >the 3c509 driver i386/isa/if_ep.c. To prevent the hang, locate >the following line at or near line 702: > > outw(BASE + EP_W1_TX_PIO_WR_1, len); > > ... and change it to: > > outw(BASE + EP_W1_TX_PIO_WR_1, len | 0x8000); > >Mike -- Justin T. Gibbs =========================================== FreeBSD: Turning PCs into workstations ===========================================
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199605251949.MAA11155>