plan 9 kernel history: overview | file list | diff list

1992/0505/pc/devether.c (diff list | history)

1992/0503/sys/src/9/pc/devether.c:83,941992/0505/sys/src/9/pc/devether.c:83,93 (short | long | prev | next)
1992/0424    
	uchar	ba[6];		/* broadcast address */ 
1992/0403    
 
1992/0424    
	Rendez	rr;		/* rendezvous for a receive buffer */ 
	QLock	rlock;		/* semaphore on rc */ 
	ushort	rh;		/* first receive buffer belonging to host */ 
	ushort	ri;		/* first receive buffer belonging to interface */	 
1992/0403    
 
1992/0424    
	Rendez	tr;		/* rendezvous for a transmit buffer */ 
	QLock	tlock;		/* semaphore on tc */ 
1992/0505    
	QLock	tlock;		/* semaphore on th */ 
1992/0424    
	ushort	th;		/* first transmit buffer belonging to host */	 
	ushort	ti;		/* first transmit buffer belonging to interface */	 
 
1992/0503/sys/src/9/pc/devether.c:333,3381992/0505/sys/src/9/pc/devether.c:332,338
1992/0410    
	tp->prom = 0; 
	tp->inuse = 0; 
	netdisown(&tp->ctlr->net, tp - tp->ctlr->type); 
1992/0505    
	tp->ctlr = 0; 
1992/0410    
	qunlock(tp); 
1992/0403    
} 
 
1992/0503/sys/src/9/pc/devether.c:456,4621992/0505/sys/src/9/pc/devether.c:456,462
1992/0403    
	} 
1992/0404    
	cp->kproc = 1; 
1992/0403    
	for(;;){ 
1992/0424    
		qlock(&cp->rlock); 
1992/0505    
		sleep(&cp->rr, isinput, cp); 
1992/0424    
 
1992/0406    
		/* 
		 * process any internal loopback packets 
1992/0503/sys/src/9/pc/devether.c:477,4851992/0505/sys/src/9/pc/devether.c:477,482
1992/0424    
			rb->owner = Interface; 
1992/0502    
			cp->rh = NEXT(cp->rh, cp->nrb); 
1992/0424    
		} 
1992/0410    
                 
1992/0424    
		qunlock(&cp->rlock); 
		sleep(&cp->rr, isinput, cp); 
	} 
} 
1992/0410    
 
1992/0503/sys/src/9/pc/devether.c:629,6341992/0505/sys/src/9/pc/devether.c:626,643
1992/0424    
	setvec(Ethervec, hw->intr); 
} 
1992/0403    
 
1992/0505    
static void 
dp8390rinit(Ctlr *cp) 
{ 
	Hw *hw = cp->hw; 
 
	OUT(hw, w.cr, 0x21);			/* Page0|RD2|STP */ 
	OUT(hw, w.bnry, hw->pstart); 
	OUT(hw, w.cr, 0x61);			/* Page1|RD2|STP */ 
	OUT(hw, curr, hw->pstart+1); 
	OUT(hw, w.cr, 0x22);			/* Page0|RD2|STA */ 
} 
 
1992/0424    
/* 
 * we leave the chip idling on internal loopback 
 * and pointing to Page0. 
1992/0503/sys/src/9/pc/devether.c:705,7111992/0505/sys/src/9/pc/devether.c:714,726
1992/0424    
			break; 
		cp->inpackets++; 
		p = &((Ring*)hw->ram)[next]; 
1992/0501    
		len = (p->len1<<8)|p->len0-4; 
1992/0505    
		len = ((p->len1<<8)|p->len0)-4; 
		if(p->next < hw->pstart || p->next >= hw->pstop || len < 60){ 
			print("%d: #%2.2ux #%2.2ux  #%2.2ux #%2.2ux\n", next, 
				p->status, p->next, p->len0, p->len1); 
			dp8390rinit(cp); 
			return; 
		} 
1992/0424    
 
		rb = &cp->rb[cp->ri]; 
		if(rb->owner == Interface){ 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)