File:  [XINU] / xinu / sys / ethstrt.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:39:04 2018 UTC (8 years, 2 months ago) by root
Branches: xinu, MAIN
CVS tags: xinu-19870308, HEAD
Xinu for VAX

/* ethstrt.c - ethstrt.c */

#include <conf.h>
#include <kernel.h>
#include <network.h>

/*------------------------------------------------------------------------
 *  ethstrt  -  reset DEQNA Ethernet hardware and leave it operating
 *------------------------------------------------------------------------
 */
ethstrt(etptr, setup)
struct	etblk	*etptr;
struct	dqsetup	*setup;
{
	struct	dqregs	*dqptr;
	struct	dcmd	*dcmptr;
	int	i, j;

	dqptr = etptr->eioaddr;

	/* initialize device */

	dqptr->d_csr |=  DQ_REST;
	dqptr->d_csr &= ~DQ_REST;
	dqptr->d_vect = (short) ( (etptr->etdev)->dvivec - 0x200 );

	/* build setup packet */

	for (i=0 ; i < (DQ_ROWS>>1) ; i++) {
		setup->dq_set[i+DQ_SETD][0] = setup->dq_set[i][0] = 0;
		setup->dq_set[i+DQ_SETD][1] = setup->dq_set[i][1] =
			i<EPADLEN ? DQ_BCST : 0;
		for (j=2 ; j<DQ_COLS ; j++)
			setup->dq_set[i+DQ_SETD][j] = setup->dq_set[i][j]=
				i<EPADLEN ? etptr->etpaddr[i] : 0;
	}
	ethrstrt(etptr, setup->dq_echo,
		sizeof(setup->dq_echo) + sizeof(setup->dq_crc) );
	ethwstrt(etptr, setup->dq_set, sizeof(setup->dq_set), DC_SETUP);

	/* poll device until setup processed */

	for (dcmptr=etptr->ercmd ; dcmptr->dc_st1 == DC_INIT ; )
		;

	/* reset device, leaving it online */

	dqptr->d_csr |=  DQ_REST;
	dqptr->d_csr &= ~DQ_REST;
	dqptr->d_csr &= ~DQ_ELOP;
	dqptr->d_csr |= (DQ_ENBL| DQ_IEN | DQ_ILOP);
	return(OK);
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.