Subversion Repositories HelenOS

Rev

Rev 3886 | Rev 3991 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3886 Rev 3901
Line 43... Line 43...
43
#include "../../err.h"
43
#include "../../err.h"
44
#include "../../messages.h"
44
#include "../../messages.h"
45
#include "../../modules.h"
45
#include "../../modules.h"
46
 
46
 
47
#include "../../structures/measured_strings.h"
47
#include "../../structures/measured_strings.h"
48
#include "../../structures/packet/packet.h"
48
#include "../../structures/packet/packet_client.h"
49
 
49
 
50
#include "../netif.h"
50
#include "../netif.h"
51
 
51
 
52
#define DEFAULT_MTU 1500
52
#define DEFAULT_MTU 1500
53
 
53
 
Line 161... Line 161...
161
int send_message( device_id_t device_id, packet_t packet ){
161
int send_message( device_id_t device_id, packet_t packet ){
162
    ERROR_DECLARE;
162
    ERROR_DECLARE;
163
 
163
 
164
    device_ref  device;
164
    device_ref  device;
165
    size_t      length;
165
    size_t      length;
166
    aid_t       message;
-
 
167
    ipc_call_t  answer;
-
 
168
    ipcarg_t    result;
-
 
169
    packet_t    received;
166
    packet_t    received;
170
 
167
 
171
    ERROR_PROPAGATE( find_device( device_id, & device ));
168
    ERROR_PROPAGATE( find_device( device_id, & device ));
172
    if( device->state != NETIF_ACTIVE ) return EPERM;
169
    if( device->state != NETIF_ACTIVE ) return EPERM;
173
    ++ device->stats.tx_packets;
170
    ++ device->stats.tx_packets;
174
    ++ device->stats.rx_packets;
171
    ++ device->stats.rx_packets;
175
    length = packet_get_data_length( packet );
172
    length = packet_get_data_length( packet );
176
    device->stats.tx_bytes += length;
173
    device->stats.tx_bytes += length;
177
    device->stats.rx_bytes += length;
174
    device->stats.rx_bytes += length;
178
    received = packet_copy( packet );
175
    received = packet_copy( netif_globals.networking_phone, SERVICE_LO, packet );
179
    packet_destroy( packet );
176
    packet_release( netif_globals.networking_phone, packet_get_id( packet ));
180
    if( ! received ){
177
    if( ! received ){
181
        ++ device->stats.rx_dropped;
178
        ++ device->stats.rx_dropped;
182
        return EOK;
179
        return EOK;
183
    }
180
    }
-
 
181
    async_msg_2( device->nil_phone, NET_NIL_RECEIVED, device_id, packet_get_id( received ));
184
    message = async_send_1( device->nil_phone, NET_NIL_RECEIVED, ( device_id ), & answer );
182
//  message = async_send_1( device->nil_phone, NET_NIL_RECEIVED, ( device_id ), & answer );
185
    if( ERROR_OCCURED( packet_send( received, device->nil_phone ))){
183
//  if( ERROR_OCCURED( packet_send( received, device->nil_phone ))){
186
        ++ device->stats.rx_dropped;
184
//      ++ device->stats.rx_dropped;
187
    }
185
//  }
188
    async_wait_for( message, & result );
-
 
189
    if( result != EOK ) ++ device->stats.rx_dropped;
186
//  if( result != EOK ) ++ device->stats.rx_dropped;
190
    return EOK;
187
    return EOK;
191
}
188
}
192
 
189
 
193
int start_message( device_id_t device_id ){
190
int start_message( device_id_t device_id ){
194
    return change_state_message( device_id, NETIF_ACTIVE );
191
    return change_state_message( device_id, NETIF_ACTIVE );