[comp.sources.wanted] Does anyone have a DELUA driver for 4.2BSD?

dhb@rayssd.RAY.COM (David H. Brierley) (10/09/87)

The title pretty much says it all.  Does anyone have a working TCP/IP
networking device driver for the DEC DELUA board for 4.2BSD?  Up to
this point we have been using a home-grown driver for an Ungermann-Bass
NIU150 hooked up via a dr11-w but due to the magic of accidental
over-ordering I suddenly am in possesion of a spare DELUA board.  I
want to use the DELUA because we are going to be upgrading to 4.3
(actually 4.3+NFS from mtxinu) "real soon now" and this way I won't
have to go thru the pain of porting the driver for the UB interface to
4.3.  The only problem is that I now have no way of testing the board
until we convert to 4.3 and I really dont want to bring up 4.3 with an
untested network interface.

In the event that nobody has a DELUA driver for 4.2, can anyone provide
useful hints for back-porting the 4.3 driver?  (Yes, I realize that this
is probably as much work as porting the UB driver to 4.3 but I think the
end result will be worth it.)

Thanks in advance for any help you can provide.
-- 
	David H. Brierley
	Raytheon Submarine Signal Division
	1847 West Main Road
	Portsmouth, RI 02871

Phone:		(401)-847-8000 x4073
Internet:	dhb@rayssd.ray.com
Uucp:		{cbosgd, gatech, linus, mirror, necntc, uiucdcs} !rayssd!dhb

ldg@necssd.NEC.COM (Doug Gibbons) (10/18/87)

In article <1618@rayssd.RAY.COM>, dhb@rayssd.RAY.COM (David H. Brierley) writes:
> The title pretty much says it all.  Does anyone have a working TCP/IP
> networking device driver for the DEC DELUA board for 4.2BSD?  Up to

I am in the process of installing a VAX 8650 in Dallas which will be
running 4.3 BSD. In this system we will be using a 4.3 BSD DELUA driver
which was first developed by DEC for NEC corporate in Japan. We are getting
a license for this same driver for our new site in the states. Since the
driver already exists, you may be able to license it from DEC. I've
talked to my local DEC sales rep, and he suggests you call your local DEC
sales rep, and get him to call mine (Gil Jones, (214) 888-2528). If this
fails, you may be able to convert an existing DEUNA driver (assuming you have 
one) using the info below that I've gleaned from the net:

--------------------------------------------------------------------------------

Path: necssd!necntc!husc6!rutgers!ucla-cs!zen!ucbvax!LANL.GOV!cpw%sneezy
From: cpw%sneezy@LANL.GOV (C. Philip Wood)
Newsgroups: comp.protocols.tcp-ip
Subject: DELUA interface driver needed
Message-ID: <8708201947.AA11834@sneezy.lanl.gov>
Date: 20 Aug 87 19:47:14 GMT
Sender: daemon@ucbvax.BERKELEY.EDU
Distribution: world
Organization: The ARPA Internet
Lines: 5

I need a 4.3BSD DELUA driver.  The DEUNA we use currently wedges.
As I understand it, there is no software in the world which will make
it work any better.  So its time to trade up.

-Phil Wood, (cpw@lanl.gov)
--------------------------------------------------------------------------------


Path: necssd!necntc!husc6!sri-unix!rutgers!ames!ucbcad!ucbvax!DECVAX.DEC.COM!templin
From: templin@DECVAX.DEC.COM (Fred Templin)
Newsgroups: comp.protocols.tcp-ip
Subject: Re:  DELUA interface driver needed
Message-ID: <8708211505.AA13694@decvax.dec.com>
Date: 21 Aug 87 15:05:32 GMT
Sender: daemon@ucbvax.BERKELEY.EDU
Distribution: world
Organization: The ARPA Internet
Lines: 13

Hi!

The DELUA should be plug-compatible with the 4.3BSD if_de.c driver. I work
with the ULTRIX network drivers, and the only change we've made for DELUA's
is a check in the "deprobe" routine to make sure the board has passed power-
up self test before forcing an interrupt. I don't believe this is done in the
4.3BSD driver, but I really don't see this as being a problem. I'd suggest
just having field service install the DELUA and reboot (but, of course, I
can't be held responsible!) 

Fred L. Templin

( templin@decvax.dec.com )
--------------------------------------------------------------------------------

Path: necssd!necntc!husc6!uwvax!rutgers!ames!ucbcad!ucbvax!UCBVAX.BERKELEY.EDU!karels%okeeffe
From: karels%okeeffe@UCBVAX.BERKELEY.EDU (Mike Karels)
Newsgroups: comp.protocols.tcp-ip
Subject: Re: DELUA interface driver needed
Message-ID: <8708211920.AA05016@okeeffe.Berkeley.EDU>
Date: 21 Aug 87 19:20:17 GMT
Sender: daemon@ucbvax.BERKELEY.EDU
Distribution: world
Organization: The ARPA Internet
Lines: 97

Here are the changes Donn Seeley put into the 4.3 driver to wait
for self test to complete on DELUA's.  As Fred Templin says, there
really shouldn't be any change required to the DEUNA driver for
use with the DELUA, but the self-test may take longer than the 4.3
driver will wait.

		Mike

*** /nbsd/sys/vaxif/if_de.c	Thu Jun  5 17:02:59 1986
--- if_de.c	Fri Jul 18 17:48:29 1986
***************
*** 5,7 ****
   *
!  *	@(#)if_de.c	7.1 (Berkeley) 6/5/86
   */
--- 5,7 ----
   *
!  *	@(#)if_de.c	7.2 (Berkeley) 7/18/86
   */
***************
*** 125,126 ****
--- 125,142 ----
  
+ 	/*
+ 	 * Make sure self-test is finished before we screw with the board.
+ 	 * Self-test on a DELUA can take 15 seconds (argh).
+ 	 */
+ 	for (i = 0;
+ 	     i < 160 &&
+ 	     (addr->pcsr0 & PCSR0_FATI) == 0 &&
+ 	     (addr->pcsr1 & PCSR1_STMASK) == STAT_RESET;
+ 	     ++i)
+ 		DELAY(100000);
+ 	if ((addr->pcsr0 & PCSR0_FATI) != 0 ||
+ 	    (addr->pcsr1 & PCSR1_STMASK) != STAT_READY)
+ 		return(0);
+ 
+ 	addr->pcsr0 = 0;
+ 	DELAY(100);
  	addr->pcsr0 = PCSR0_RSET;
***************
*** 148,149 ****
--- 164,166 ----
  	register struct dedevice *addr = (struct dedevice *)ui->ui_addr;
+ 	int csr1;
  
***************
*** 155,156 ****
--- 172,186 ----
  	/*
+ 	 * What kind of a board is this?
+ 	 * The error bits 4-6 in pcsr1 are a device id as long as
+ 	 * the high byte is zero.
+ 	 */
+ 	csr1 = addr->pcsr1;
+ 	if (csr1 & 0xff60)
+ 		printf("de%d: broken\n", ui->ui_unit);
+ 	else if (csr1 & 0x10)
+ 		printf("de%d: delua\n", ui->ui_unit);
+ 	else
+ 		printf("de%d: deuna\n", ui->ui_unit);
+ 
+ 	/*
  	 * Reset the board and temporarily map
***************
*** 158,159 ****
--- 188,191 ----
  	 */
+ 	addr->pcsr0 = 0;		/* reset INTE */
+ 	DELAY(100);
  	addr->pcsr0 = PCSR0_RSET;
***************
*** 247,248 ****
--- 279,282 ----
  	addr->pcsr3 = (incaddr >> 16) & 0x3;
+ 	addr->pclow = 0;	/* reset INTE */
+ 	DELAY(100);
  	addr->pclow = CMD_GETPCBB;
***************
*** 298,301 ****
  	ds->ds_if.if_flags |= IFF_RUNNING;
- 	destart(unit);				/* queue output packets */
  	addr->pclow = PCSR0_INTE;		/* avoid interlock */
  	ds->ds_flags |= DSF_RUNNING;		/* need before de_setaddr */
--- 332,335 ----
  	ds->ds_if.if_flags |= IFF_RUNNING;
  	addr->pclow = PCSR0_INTE;		/* avoid interlock */
+ 	destart(unit);				/* queue output packets */
  	ds->ds_flags |= DSF_RUNNING;		/* need before de_setaddr */
***************
*** 741,742 ****
--- 775,779 ----
  		    ds->ds_flags & DSF_RUNNING) {
+ 			((struct dedevice *)
+ 			   (deinfo[ifp->if_unit]->ui_addr))->pclow = 0;
+ 			DELAY(100);
  			((struct dedevice *)
--------------------------------------------------------------------------------

Path: necssd!necntc!husc6!rutgers!ames!hc!tomlin
From: tomlin@hc.DSPO.GOV (Bob Tomlinson)
Newsgroups: comp.protocols.tcp-ip
Subject: Re:  DELUA interface driver needed
Message-ID: <7793@hc.DSPO.GOV>
Date: 1 Jan 88 01:46:18 GMT
References: <8708211505.AA13694@decvax.dec.com>
Distribution: world
Organization: Los Alamos National Laboratory
Lines: 28

in article <8708211505.AA13694@decvax.dec.com>, templin@DECVAX.DEC.COM (Fred Templin) says:
> The DELUA should be plug-compatible with the 4.3BSD if_de.c driver.

It isn't (*exactly*).

>I work
> with the ULTRIX network drivers, and the only change we've made for DELUA's
> is a check in the "deprobe" routine to make sure the board has passed power-
> up self test before forcing an interrupt. I don't believe this is done in the
> 4.3BSD driver, but I really don't see this as being a problem.

It is a problem.  The DELUA takes a LONG time to run its self-check.
On Unibus reset it runs its self-check.  So there are two ways to get it up:
	1) Fix the probe routine to wait until the device is back from self
	   test (or at least DELAY a long time so you're sure it's done with
	   the self check) before trying to get it to interrupt.
or
	2) Boot the kernel by (on a 780)
		B ANY
	   and by the time you can type in the name of your kernel
	   and hit return the DELUA's self check will be done.
	   Of course this isn't convient in a long term, but you can
	   at least get the machine up to go in and fix the source.

bob
-- 
Bob Tomlinson -- tomlin@hc.dspo.gov  --  (505) 667-8495
Los Alamos National Laboratory  --  MEE-10/Data Systems
--------------------------------------------------------------------------------
-- 

				Doug Gibbons @ NEC America, Inc.
				necntc!necssd!gibbons
				(214) 580-9334