Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 1 Sep 1999 11:28:17 -0400 (EDT)
From:      Larry Lile <lile@stdio.com>
To:        serces@mud.dk
Cc:        FreeBSD Tokenring Mailinglist <freebsd-tokenring@FreeBSD.ORG>
Subject:   Re: Strange Lockup Occurring
Message-ID:  <Pine.BSF.4.05.9909011042390.29689-100000@heathers.stdio.com>
In-Reply-To: <Pine.LNX.4.10.9909011053130.24445-100000@eowyn.zahle.dk>

next in thread | previous in thread | raw e-mail | index | archive | help


On Wed, 1 Sep 1999 serces@mud.dk wrote:

> Hi all
> 
> Sorry if this has been asked before or answered somewhere else, but I
> seemed unable to find anything about it in the Archives :).
> 
> System is running 3.2-STABLE on a NetFinity 5000, with an Olicom 3117 ISA
> card. I have had the same NIC running in another machine, though only at
> 4Mbit, whereas in production it has to run 16Mbit not that I could see
> that being any problem.

I never managed to get ifmedia working correctly before I ran into 
other bigger problems.  I can show you where in the code to force
16Mbit.

> Though something goes haywire somewhere, and to me it's veryveryvery
> strange.. :) Here's what's going down:
> 
> Machine boots, I login on the console no problem, then I start a
> connection to another machine, woohoo, no problem, happy I am :), then I
> try to connect from a remote station to the server, still no problem,
> everything should be happy in tokenland (or so I thought). 
> 
> I then decide to start configuring the machine, installing the things I
> need, so I switch to the apachedir in the ports-collection, and exclaim
> make install on command line, it fires up, and then stops responding,
> nothing happens, no transfer, nothing, and at the same time I start losing
> my connection to the machine (Connection closed by remote host). 
> 
> First time around, I go to the machine, login on the console, and reboot
> the machine. Everything starts working again, so I think, ah, I must have
> made a blunder somewhere. While still at the console I do the exact same
> manouver as before to install apache (or anything really :), same thing
> happens, NIC stops responding, and nothing happens. 

Okay, this might fix you - no promises though.  Try this patch to
if_ether.c.  It was written for 4.x-current but it will probably 
work for 3.2. [appended]

> For some obscure reason I try to do an "ifconfig oltr0 down", that one
> gives:
> Aug 31 13:39:30 urd /kernel: oltr0: otlr_stop
> Aug 31 13:39:31 urd /kernel: oltr0: DriverTransmitFrameCompleted (frame 12
> status 1)
> Aug 31 13:39:31 urd /kernel: oltr0: DriverTransmitFrameCompleted (frame 13
> status 1)
> Aug 31 13:39:31 urd /kernel: oltr0: DriverTransmitFrameCompleted (frame 14
> status 1)
> Aug 31 13:39:31 urd /kernel: oltr0: DriverTransmitFrameCompleted (frame 15
> status 1)
> Aug 31 13:39:31 urd /kernel: oltr0: DriverTransmitFrameCompleted (frame 0
> status 1)
> ... etc .. a ton of these followed by
> Aug 31 13:39:36 urd /kernel: oltr0: DriverCloseCompleted
> 
> And then an "ifconfig oltr0 up", everything works perfectly again.

You can safely ignore those messages - they are only debug for my sanity.
The adapter returns incompleted buffers on close 16 buffers, status 1 -
not transmitted.

> Someone suggested setting the MAX_USERS to 256, which was tried, and even
> though I couldn't see any immediate result, it might have helped since I
> think it performed a bit better (But that again might simply be because of
> the increased buffer sizes :).
> 
> Currently the machine is not in production, so every 15 minutes I reset
> the NIC by a small shellscript that takes it down and then up again, it
> works, At least if I then try to do something that will lockup the NIC I
> only have to wait max 15 mins to get it running again, and is thereby
> saved the trouble of running back and forth.. :)
> 
> Any ideas of what might be wrong? I mean, connectivity to/from the machine
> seems to be no problem using ssh or telnet, but scp/rcp/ftp/http anything
> really that fetches more data, will stop the NIC from responding.
> 
> hope someone can help.. :)

If the arp patch doesn't help then you are likely being hit by the
"dma" bug that we have never been able to pin down or even prove it is
a "dma" bug.

I have a new version of the driver but it is for PCI cards only so you
will have to wait until I get the ISA code written.

Larry Lile
lile@stdio.com

*** if_ether.c.orig	Thu Aug 26 20:48:21 1999
--- if_ether.c	Fri Aug 27 14:05:17 1999
***************
*** 566,588 ****
  		 * a token-ring nic then try to save the source
  		 * routing info.
  		 */
  		if (ac->ac_if.if_type == IFT_ISO88025) {
  			th = (struct iso88025_header *)m->m_pkthdr.header;
                  	if ((th->iso88025_shost[0] & 0x80) &&
! 			    (((ntohs(th->rcf) & 0x1f00) >> 8) > 2)) {
! 				sdl->sdl_rcf = ntohs(th->rcf) & 0x0080 ? 
! 				    htons(ntohs(th->rcf) & 0xff7f) :
! 				    htons(ntohs(th->rcf) | 0x0080);
! 				memcpy(sdl->sdl_route, th->rseg, ((ntohs(th->rcf) & 0x1f00) >> 8)  - 2);
! 				sdl->sdl_rcf = htons(ntohs(sdl->sdl_rcf) & 0x1fff);
  				/* Set up source routing information for reply packet (XXX)*/
! 				m->m_data -= (((ntohs(th->rcf) & 0x1f00) >> 8) + 8); 
! 				m->m_len  += (((ntohs(th->rcf) & 0x1f00) >> 8) + 8); 
  			} else {
  				th->iso88025_shost[0] &= 0x7f;
- 				m->m_data -= 8;
- 				m->m_len  += 8;
  			}
  			th->rcf = sdl->sdl_rcf;
  			
  		} else {
--- 566,593 ----
  		 * a token-ring nic then try to save the source
  		 * routing info.
  		 */
+ 		printf("arp: m_len %d\n", m->m_len);
  		if (ac->ac_if.if_type == IFT_ISO88025) {
  			th = (struct iso88025_header *)m->m_pkthdr.header;
                  	if ((th->iso88025_shost[0] & 0x80) &&
! 			    ((th->rcf & 0x001f) > 2)) {
! 				sdl->sdl_rcf = (th->rcf & 0x8000) ? (th->rcf & 0x7fff) :
! 				    (th->rcf | 0x8000);
! 				memcpy(sdl->sdl_route, th->rseg, (th->rcf & 0x001f)  - 2);
! 				sdl->sdl_rcf = sdl->sdl_rcf & 0xff1f;
  				/* Set up source routing information for reply packet (XXX)*/
! 				m->m_data -= (th->rcf & 0x001f); 
! 				m->m_len  += (th->rcf & 0x001f); 
! 				m->m_pkthdr.len += (th->rcf & 0x001f);
! 				printf("arp: m_len %d\n", m->m_len);
! 				printf("arp: sr len %d\n", th->rcf & 0x001f);
  			} else {
  				th->iso88025_shost[0] &= 0x7f;
  			}
+ 			m->m_data -= 8;
+ 			m->m_len  += 8;
+ 			m->m_pkthdr.len += 8;
+ 			printf("arp: m_len %d\n", m->m_len);
  			th->rcf = sdl->sdl_rcf;
  			
  		} else {
***************
*** 664,670 ****
  		/* Set the source routing bit if neccesary */
  		if (th->iso88025_dhost[0] & 0x80) {
  			th->iso88025_dhost[0] &= 0x7f;
! 			if (((ntohs(th->rcf) & 0x1f00) >> 8) - 2)
  				th->iso88025_shost[0] |= 0x80;
  		}
  		/* Copy the addresses, ac and fc into sa_data */
--- 669,675 ----
  		/* Set the source routing bit if neccesary */
  		if (th->iso88025_dhost[0] & 0x80) {
  			th->iso88025_dhost[0] &= 0x7f;
! 			if ((th->rcf & 0x001f) - 2)
  				th->iso88025_shost[0] |= 0x80;
  		}
  		/* Copy the addresses, ac and fc into sa_data */



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-tokenring" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.05.9909011042390.29689-100000>