From owner-freebsd-tokenring Thu Jun 3 10:48:58 1999 Delivered-To: freebsd-tokenring@freebsd.org Received: from heathers.stdio.com (heathers.stdio.com [199.89.192.5]) by hub.freebsd.org (Postfix) with ESMTP id 45D791556B for ; Thu, 3 Jun 1999 10:48:35 -0700 (PDT) (envelope-from lile@stdio.com) Received: from heathers.stdio.com (lile@heathers.stdio.com [199.89.192.5]) by heathers.stdio.com (8.8.8/8.8.8) with ESMTP id NAA17436; Thu, 3 Jun 1999 13:48:25 -0400 (EDT) (envelope-from lile@stdio.com) Date: Thu, 3 Jun 1999 13:48:25 -0400 (EDT) From: Larry Lile To: Phil Regnauld Cc: freebsd-tokenring@FreeBSD.ORG Subject: Re: Strange behavior with OC-3117, 4.0-C In-Reply-To: <19990603134535.55646@ns.int.ftf.net> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-tokenring@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG On Thu, 3 Jun 1999, Phil Regnauld wrote: > Wood, Richard writes: > > > -----Original Message----- > > > From: Phil Regnauld [mailto:regnauld@ftf.net] > > > Sent: Friday, May 28, 1999 8:57 AM > > > To: freebsd-tokering@freebsd.org > > > Subject: Strange behavior with OC-3117, 4.0-C > > > > > > to restart it, a powerdown was the only option. > > I solved this problem by reinstalling 19990421-CURRENT -- > something between 19990421 and 19990530 had broken the DMA or > something else. > > Larry Lile said it might be the new bus code. Sorry, I was being paranoid. It doesn't look like that had any effect. > My adapter works fine now, except for regular > receive error(3) > messages on the console (and corresponding errors in netstat -i) Maybe there was some other change to the IP stack? I don't see any obvious changes in the driver code that would have caused this to be any more broken than it already was. There is a problem that I need to address, and will. I still don't understand why things are happening the way they are. For example: ftp works fine, mostly 1 or 2 mbufs in each packet chain. Most telnet packets are the same 1 or 2 mbufs in each packet. However as a couple of people have noted if you do a "ls" that returns a lot of data it will hang and this is becuase I am getting roughly 1500 bytes of data (perfectly normal and acceptable) but it is being sent in a chain of 12 to 36 mbufs! I do not understand why this data has not been collapsed into a mbuf (and or a mbuf cluster) at some point further into the stack. I don't beleive that it has always been this way previously. Never the less, I have a bug and I will fix it. Could someone look into what might have changed in the IP stack? I am really pressed for time right now. Larry Lile lile@stdio.com [Changes to if_oltr.c between 19990421 and -current] *** if_oltr.c Wed Mar 10 12:45:26 1999 --- /sys/contrib/dev/oltr/if_oltr.c Tue May 18 21:57:52 1999 *************** *** 30,36 **** * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ! * $Id: if_oltr.c,v 1.2 1999/03/10 17:45:26 julian Exp $ */ --- 30,36 ---- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ! * $Id: if_oltr.c,v 1.5 1999/05/09 17:07:24 peter Exp $ */ *************** *** 259,265 **** NULL }; ! DATA_SET(pcidevice_set, oltr_device); int pci_cards = 0; #endif /* NPCI */ --- 259,265 ---- NULL }; ! COMPAT_PCI_DRIVER(oltr_pci, oltr_device); int pci_cards = 0; #endif /* NPCI */ *************** *** 355,361 **** if (!is->id_irq) is->id_irq = (1 << sc->config->interruptlevel); /* Claim our interrupt */ is->id_intr = (inthand2_t *)oltr_intr; - register_intr(ffs(is->id_irq) - 1, is->id_id, is->id_ri_flags, is->id_intr, &net_imask, is->id_unit); if ((is->id_drq == 0xffffffff) && (sc->config->dmalevel != TRLLD_DMA_PIO)) is->id_drq = sc->config->dmalevel; /* Claim our dma channel */ printf("oltr%d: <%s> [%6D]\n", is->id_unit, AdapterName[sc->config->type], sc->config->macaddress, ":"); --- 355,360 ---- *************** *** 374,380 **** if (is->id_irq == 0) is->id_irq = (1 << sc->config->interruptlevel); /* Claim our interrupt */ is->id_intr = (inthand2_t *)oltr_intr; - register_intr(ffs(is->id_irq) - 1, is->id_id, is->id_ri_flags, is->id_intr, &net_imask, is->id_unit); if ((is->id_drq == 0xffffffff) && (sc->config->dmalevel != TRLLD_DMA_PIO)) is->id_drq = sc->config->dmalevel; /* Claim our dma channel */ printf("oltr%d: <%s> [%6D]\n", is->id_unit, AdapterName[sc->config->type], sc->config->macaddress, ":"); --- 373,378 ---- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-tokenring" in the body of the message