Subversion Repositories HelenOS

Rev

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

Rev 4197 Rev 4243
Line 46... Line 46...
46
#include "../../modules.h"
46
#include "../../modules.h"
47
 
47
 
48
#include "../../structures/packet/packet_client.h"
48
#include "../../structures/packet/packet_client.h"
49
#include "../../structures/measured_strings.h"
49
#include "../../structures/measured_strings.h"
50
 
50
 
51
#include "../device.h"
51
#include "../../include/device.h"
-
 
52
 
52
#include "../netif.h"
53
#include "../netif.h"
53
#include "../netif_interface.h"
54
#include "../netif_interface.h"
54
 
55
 
55
#include "dp8390.h"
56
#include "dp8390.h"
56
#include "dp8390_drv.h"
57
#include "dp8390_drv.h"
Line 91... Line 92...
91
void    netif_print_name( void );
92
void    netif_print_name( void );
92
 
93
 
93
void    irq_handler( ipc_callid_t iid, ipc_call_t * call );
94
void    irq_handler( ipc_callid_t iid, ipc_call_t * call );
94
void    change_state( device_ref device, device_state_t state );
95
void    change_state( device_ref device, device_state_t state );
95
 
96
 
96
int specific_message( ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count ){
97
int netif_specific_message( ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count ){
97
    return ENOTSUP;
98
    return ENOTSUP;
98
}
99
}
99
 
100
 
100
int get_device_stats( device_id_t device_id, device_stats_ref stats ){
101
int netif_get_device_stats( device_id_t device_id, device_stats_ref stats ){
101
    ERROR_DECLARE;
102
    ERROR_DECLARE;
102
 
103
 
103
    device_ref      device;
104
    device_ref      device;
104
    eth_stat_t *    de_stat;
105
    eth_stat_t *    de_stat;
105
 
106
 
Line 124... Line 125...
124
 
125
 
125
void netif_print_name( void ){
126
void netif_print_name( void ){
126
    printf( "%s", NAME );
127
    printf( "%s", NAME );
127
}
128
}
128
 
129
 
129
int get_addr_message( device_id_t device_id, measured_string_ref address ){
130
int netif_get_addr_message( device_id_t device_id, measured_string_ref address ){
130
    ERROR_DECLARE;
131
    ERROR_DECLARE;
131
 
132
 
132
    device_ref  device;
133
    device_ref  device;
133
 
134
 
134
    if( ! address ) return EBADMEM;
135
    if( ! address ) return EBADMEM;
Line 164... Line 165...
164
        {
165
        {
165
            panic("DP8390",
166
            panic("DP8390",
166
            "unable enable interrupts", r);
167
            "unable enable interrupts", r);
167
        }
168
        }
168
*///    }
169
*///    }
-
 
170
    ipc_answer_0( iid, EOK );
169
}
171
}
170
 
172
 
171
int probe_auto_message( void ){
173
int netif_probe_auto_message( void ){
172
    return ENOTSUP;
174
    return ENOTSUP;
173
}
175
}
174
 
176
 
175
int probe_message( device_id_t device_id, int irq, int io ){
177
int netif_probe_message( device_id_t device_id, int irq, int io ){
176
    ERROR_DECLARE;
178
    ERROR_DECLARE;
177
 
179
 
178
    device_ref  device;
180
    device_ref  device;
179
    dpeth_t *   dep;
181
    dpeth_t *   dep;
180
 
182
 
Line 208... Line 210...
208
        return ERROR_CODE;
210
        return ERROR_CODE;
209
    }
211
    }
210
    return EOK;
212
    return EOK;
211
}
213
}
212
 
214
 
213
int send_message( device_id_t device_id, packet_t packet ){
215
int netif_send_message( device_id_t device_id, packet_t packet ){
214
    ERROR_DECLARE;
216
    ERROR_DECLARE;
215
 
217
 
216
    device_ref  device;
218
    device_ref  device;
217
    dpeth_t *   dep;
219
    dpeth_t *   dep;
218
    packet_t    next;
220
    packet_t    next;
219
 
221
 
-
 
222
    uint8_t *   data;
-
 
223
    data = packet_get_data( packet );
-
 
224
    printf( "\nSending packet:\n\tid\t= %d\n\tlength\t= %d\n\tdata\t= %.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX\n\t\t%.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX:%.2hhX %.2hhX %.2hhX %.2hhX", packet_get_id( packet ), packet_get_data_length( packet ), data[ 0 ], data[ 1 ], data[ 2 ], data[ 3 ], data[ 4 ], data[ 5 ], data[ 6 ], data[ 7 ], data[ 8 ], data[ 9 ], data[ 10 ], data[ 11 ], data[ 12 ], data[ 13 ], data[ 14 ], data[ 15 ], data[ 16 ], data[ 17 ], data[ 18 ], data[ 19 ], data[ 20 ], data[ 21 ], data[ 22 ], data[ 23 ], data[ 24 ], data[ 25 ], data[ 26 ], data[ 27 ], data[ 28 ], data[ 29 ], data[ 30 ], data[ 31 ], data[ 32 ], data[ 33 ], data[ 34 ], data[ 35 ], data[ 36 ], data[ 37 ], data[ 38 ], data[ 39 ], data[ 40 ], data[ 41 ], data[ 42 ], data[ 43 ], data[ 44 ], data[ 45 ], data[ 46 ], data[ 47 ], data[ 48 ], data[ 49 ], data[ 50 ], data[ 51 ], data[ 52 ], data[ 53 ], data[ 54 ], data[ 55 ], data[ 56 ], data[ 57 ], data[ 58 ], data[ 59 ] );
-
 
225
 
220
    ERROR_PROPAGATE( find_device( device_id, & device ));
226
    ERROR_PROPAGATE( find_device( device_id, & device ));
221
    dep = ( dpeth_t * ) device->specific;
227
    dep = ( dpeth_t * ) device->specific;
222
    // process packet queue
228
    // process packet queue
223
    do{
229
    do{
224
        next = pq_detach( packet );
230
        next = pq_detach( packet );
Line 228... Line 234...
228
        packet = next;
234
        packet = next;
229
    }while( packet );
235
    }while( packet );
230
    return EOK;
236
    return EOK;
231
}
237
}
232
 
238
 
233
int start_message( device_id_t device_id ){
239
int netif_start_message( device_id_t device_id ){
234
    ERROR_DECLARE;
240
    ERROR_DECLARE;
235
 
241
 
236
    device_ref  device;
242
    device_ref  device;
237
    dpeth_t *   dep;
243
    dpeth_t *   dep;
238
 
244
 
Line 249... Line 255...
249
        change_state( device, NETIF_ACTIVE );
255
        change_state( device, NETIF_ACTIVE );
250
    }
256
    }
251
    return EOK;
257
    return EOK;
252
}
258
}
253
 
259
 
254
int stop_message( device_id_t device_id ){
260
int netif_stop_message( device_id_t device_id ){
255
    ERROR_DECLARE;
261
    ERROR_DECLARE;
256
 
262
 
257
    device_ref  device;
263
    device_ref  device;
258
    dpeth_t *   dep;
264
    dpeth_t *   dep;
259
 
265
 
Line 271... Line 277...
271
    device->state = state;
277
    device->state = state;
272
    nil_message( device, NET_NIL_DEVICE_STATE, device->state, NULL );
278
    nil_message( device, NET_NIL_DEVICE_STATE, device->state, NULL );
273
    printf( "\nState changed to %s", ( state == NETIF_ACTIVE ) ? "ACTIVE" : "STOPPED" );
279
    printf( "\nState changed to %s", ( state == NETIF_ACTIVE ) ? "ACTIVE" : "STOPPED" );
274
}
280
}
275
 
281
 
276
int initialize( void ){
282
int netif_initialize( void ){
277
    ipcarg_t    phonehash;
283
    ipcarg_t    phonehash;
278
 
284
 
279
    async_set_interrupt_received( irq_handler );
285
    async_set_interrupt_received( irq_handler );
280
 
286
 
281
    return REGISTER_ME( SERVICE_DP8390, & phonehash );
287
    return REGISTER_ME( SERVICE_DP8390, & phonehash );