|
|
1.1 ! root 1: /* ethinit.c - ethinit */ ! 2: ! 3: #include <conf.h> ! 4: #include <kernel.h> ! 5: #include <network.h> ! 6: #include <qbus.h> ! 7: ! 8: /*------------------------------------------------------------------------ ! 9: * ethinit - initialize ethernet I/O device and buffers ! 10: *------------------------------------------------------------------------ ! 11: */ ! 12: ethinit(devptr) ! 13: struct devsw *devptr; ! 14: { ! 15: struct etblk *etptr; ! 16: struct dqregs *dqptr; ! 17: struct dcmd *dcmptr; ! 18: short *iptr; ! 19: int i; ! 20: struct dqsetup setup; ! 21: ! 22: etptr = ð[devptr->dvminor]; ! 23: devptr->dvioblk = (char *) etptr; ! 24: iosetvec(devptr->dvnum, etptr, etptr); ! 25: etptr->eioaddr = dqptr = (struct dqregs *) devptr->dvcsr; ! 26: etptr->etdev = devptr; ! 27: etptr->etrsem = screate(1); ! 28: etptr->etwsem = screate(1); ! 29: etptr->etrpid = 0; ! 30: ! 31: /* establish read and write buffer descriptor lists */ ! 32: ! 33: dcmptr = &etptr->ercmd[1]; ! 34: dcmptr->dc_flag = DC_NUSED; ! 35: dcmptr->dc_bufh = DC_ENDL; ! 36: dcmptr->dc_buf = (short) NULL; ! 37: ! 38: dcmptr = &etptr->ewcmd[1]; ! 39: dcmptr->dc_flag = DC_NUSED; ! 40: dcmptr->dc_bufh = DC_ENDL; ! 41: dcmptr->dc_buf = (short) NULL; ! 42: dcmptr->dc_st1 = dcmptr->dc_st2 = DC_INIT; ! 43: ! 44: /* extract physical ethernet address */ ! 45: ! 46: for (iptr=(short *)dqptr ,i=0 ; i<EPADLEN ; i++) ! 47: etptr->etpaddr[i] = LOWBYTE & *iptr++; ! 48: ! 49: ethstrt(etptr, &setup); ! 50: return(OK); ! 51: } ! 52: ! 53: #ifdef Neth ! 54: struct etblk eth[Neth]; ! 55: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.