163,27 → 163,20 |
|
device_ref device; |
size_t length; |
packet_t received; |
packet_t next; |
|
ERROR_PROPAGATE( find_device( device_id, & device )); |
if( device->state != NETIF_ACTIVE ) return EPERM; |
++ device->stats.tx_packets; |
++ device->stats.rx_packets; |
length = packet_get_data_length( packet ); |
device->stats.tx_bytes += length; |
device->stats.rx_bytes += length; |
received = packet_copy( netif_globals.networking_phone, SERVICE_LO, packet ); |
packet_release( netif_globals.networking_phone, packet_get_id( packet )); |
if( ! received ){ |
++ device->stats.rx_dropped; |
return EOK; |
} |
nil_message( device, NET_NIL_RECEIVED, packet_get_id( received ), NULL ); |
// message = async_send_1( device->nil_phone, NET_NIL_RECEIVED, ( device_id ), & answer ); |
// if( ERROR_OCCURRED( packet_send( received, device->nil_phone ))){ |
// ++ device->stats.rx_dropped; |
// } |
// if( result != EOK ) ++ device->stats.rx_dropped; |
do{ |
++ device->stats.tx_packets; |
++ device->stats.rx_packets; |
length = packet_get_data_length( packet ); |
device->stats.tx_bytes += length; |
device->stats.rx_bytes += length; |
next = pq_detach( packet ); |
nil_message( device, NET_NIL_RECEIVED, packet_get_id( packet ), PACKET_SELF ); |
packet = next; |
}while( packet ); |
return EOK; |
} |
|