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; |
} |