Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 4742 → Rev 4743

/branches/network/uspace/srv/net/netif/dp8390/dp8390.c
322,15 → 322,21
int queue_packet( dpeth_t * dep, packet_t packet ){
packet_t tmp;
 
if( dep->packet_count > 1 ){
if( ! pq_add( pq_previous( dep->packet_queue ), packet, 0, 0 )){
return EINVAL;
}
}else{
tmp = pq_add( dep->packet_queue, packet, 0, 0 );
if( ! tmp ) return EINVAL;
dep->packet_queue = tmp;
if( dep->packet_count >= MAX_PACKETS ){
netif_pq_release( packet_get_id( packet ));
return ELIMIT;
}
 
tmp = dep->packet_queue;
while( pq_next( tmp )){
tmp = pq_next( tmp );
}
if( ! pq_add( tmp, packet, 0, 0 )){
return EINVAL;
}
if( ! dep->packet_count ){
dep->packet_queue = packet;
}
++ dep->packet_count;
return EBUSY;
}
1015,11 → 1021,17
dep->de_flags |= DEF_PACK_RECV;
// dep->de_flags &= ~DEF_READING;
 
queue = pq_add( dep->received_queue, packet, 0, 0 );
if( queue ){
dep->received_queue = queue;
if( dep->received_count >= MAX_PACKETS ){
netif_pq_release( packet_get_id( packet ));
return ELIMIT;
}else{
netif_pq_release( packet_get_id( packet ));
queue = pq_add( dep->received_queue, packet, 0, 0 );
if( queue ){
dep->received_queue = queue;
++ dep->received_count;
}else{
netif_pq_release( packet_get_id( packet ));
}
}
return OK;
}