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

1995/0713/pc/devether.c (diff list | history)

1995/0711/sys/src/9/pc/devether.c:103,1171995/0713/sys/src/9/pc/devether.c:103,138 (short | long | prev | next)
1993/1120    
void 
1994/0702    
etherrloop(Ether *ctlr, Etherpkt *pkt, long len, int tome) 
1993/1120    
{ 
1995/0713    
	Block *bp; 
1993/1120    
	ushort type; 
1995/0713    
	int i; 
1993/1120    
	Netfile *f, **fp, **ep; 
 
	type = (pkt->type[0]<<8)|pkt->type[1]; 
	ep = &ctlr->f[Ntypes]; 
	for(fp = ctlr->f; fp < ep; fp++){ 
1994/0702    
		if((f = *fp) && ((tome && f->type==type) || f->type < 0)) 
1995/0711    
			if(qproduce(f->in, pkt->d, len) < 0) 
				ctlr->soverflows++; 
1995/0713    
		if((f = *fp) && ((tome && f->type==type) || f->type < 0)){ 
			if(f->type > -2){ 
				if(qproduce(f->in, pkt->d, len) < 0) 
					ctlr->soverflows++; 
			} else { 
				if(qwindow(f->in) <= 0) 
					continue; 
				if(len > 60) 
					len = 60; 
				bp = iallocb(len); 
				if(bp == 0) 
					continue; 
				memmove(bp->wp, pkt->d, len); 
				i = TK2MS(m->ticks); 
				bp->wp[60] = i>>24; 
				bp->wp[61] = i>>16; 
				bp->wp[62] = i>>8; 
				bp->wp[63] = i; 
				bp->wp += 64; 
				qpass(f->in, bp); 
			} 
		} 
1993/1120    
	} 
} 
 


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