Subversion Repositories Kolibri OS

Rev

Rev 1254 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1254 Rev 1257
Line 12... Line 12...
12
;;          GNU GENERAL PUBLIC LICENSE                             ;;
12
;;          GNU GENERAL PUBLIC LICENSE                             ;;
13
;;             Version 2, June 1991                                ;;
13
;;             Version 2, June 1991                                ;;
14
;;                                                                 ;;
14
;;                                                                 ;;
15
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
15
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 16... Line 16...
16
 
16
 
Line 17... Line 17...
17
$Revision: 1254 $
17
$Revision: 1257 $
18
 
18
 
Line 19... Line 19...
19
MAX_ETH_DEVICES 	equ MAX_NET_DEVICES
19
MAX_ETH_DEVICES 	equ MAX_NET_DEVICES
Line 59... Line 59...
59
	ETH_IN_QUEUE	rd  3*ETH_QUEUE_SIZE+3
59
	ETH_IN_QUEUE	rd  3*ETH_QUEUE_SIZE+3
60
	ETH_OUT_QUEUE	rd  3*ETH_QUEUE_SIZE+3
60
	ETH_OUT_QUEUE	rd  3*ETH_QUEUE_SIZE+3
61
endg
61
endg
Line 62... Line 62...
62
 
62
 
63
 
63
 
64
;-----------------------------------------------
64
;-----------------------------------------------------------------
65
;
65
;
66
; ETH_init
66
; ETH_init
67
;
67
;
68
;  This function resets all ethernet variables
68
;  This function resets all ethernet variables
69
;
69
;
70
;  IN:  /
70
;  IN:  /
71
;  OUT: /
71
;  OUT: /
72
;
-
 
73
;-----------------------------------------------
72
;
74
 
73
;-----------------------------------------------------------------
Line 75... Line 74...
75
align 4
74
align 4
76
ETH_init:
75
ETH_init:
Line 84... Line 83...
84
	init_queue ETH_OUT_QUEUE
83
	init_queue ETH_OUT_QUEUE
Line 85... Line 84...
85
 
84
 
Line 86... Line 85...
86
	ret
85
	ret
87
 
86
 
88
 
87
 
89
;---------------------------------------------------------
88
;-----------------------------------------------------------------
90
;
89
;
91
; ETH_Add_Device:
90
; ETH_Add_Device:
92
;
91
;
93
;  This function is called by ethernet drivers,
92
;  This function is called by ethernet drivers,
94
;  to register each running ethernet device to the kernel
93
;  to register each running ethernet device to the kernel
95
;
94
;
96
;  IN:  Pointer to device structure in ebx
95
;  IN:  Pointer to device structure in ebx
97
;  OUT: Device num in eax, -1 on error
-
 
98
;
96
;  OUT: Device num in eax, -1 on error
99
;---------------------------------------------------------
97
;
Line 100... Line 98...
100
 
98
;-----------------------------------------------------------------
Line 140... Line 138...
140
	ret
138
	ret
Line 141... Line 139...
141
 
139
 
142
       .error:
140
       .error:
143
	or	eax, -1
141
	or	eax, -1
144
	DEBUGF	1,"- fail\n"
-
 
145
 
142
	DEBUGF	1,"- fail\n"
Line 146... Line 143...
146
	ret
143
	ret
147
 
144
 
148
 
145
 
149
 
146
 
150
 
147
 
151
;--------------------------------
148
;-----------------------------------------------------------------
152
;
149
;
153
; ETH_Remove_Device:
150
; ETH_Remove_Device:
154
;
151
;
155
;  This function is called by ethernet drivers,
152
;  This function is called by ethernet drivers,
156
;  to unregister ethernet devices from the kernel
153
;  to unregister ethernet devices from the kernel
157
;
-
 
158
;  IN:  Pointer to device structure in ebx
154
;
159
;  OUT: eax: -1 on error
155
;  IN:  Pointer to device structure in ebx
Line 160... Line 156...
160
;
156
;  OUT: eax: -1 on error
161
;--------------------------------
157
;
Line 181... Line 177...
181
 
177
 
182
	mov	dword [ETH_IN_QUEUE], ETH_QUEUE_SIZE
178
	mov	dword [ETH_IN_QUEUE], ETH_QUEUE_SIZE
Line 183... Line 179...
183
	mov	dword [ETH_OUT_QUEUE], ETH_QUEUE_SIZE
179
	mov	dword [ETH_OUT_QUEUE], ETH_QUEUE_SIZE
184
 
-
 
185
       .notlast:
180
 
Line 186... Line 181...
186
 
181
  .notlast:
187
	ret
182
	ret
188
 
-
 
189
       .error:
183
 
Line 190... Line 184...
190
	or	eax, -1
184
  .error:
191
 
185
	or	eax, -1
192
	ret
186
	ret
193
 
187
 
194
 
188
 
195
 
189
 
196
;-------------------------------------------------------------
190
;-----------------------------------------------------------------
-
 
191
;
-
 
192
; ETH_Receiver:
197
;
193
;
198
; ETH_Receiver:
194
;  This function is called by ethernet drivers,
199
;
195
;  It pushes the received ethernet packets onto the eth_in_queue
200
;  This function is called by ethernet drivers,
196
;
201
;  It pushes the received ethernet packets onto the eth_in_queue
-
 
202
;
197
;  IN:  [esp]   = Pointer to buffer
203
;  IN:  Pointer to buffer in [esp], size of buffer in [esp-4], pointer to eth_device in ebx
198
;       [esp-4] = size of buffer
204
;  OUT: /
-
 
Line -... Line 199...
-
 
199
;       ebx     = pointer to eth_device
205
;
200
;  OUT: /
206
;-------------------------------------------------------------
201
;
207
 
202
;-----------------------------------------------------------------
208
align 4
203
align 4
209
ETH_receiver:
204
ETH_receiver:
-
 
205
 
210
	DEBUGF	1,"ETH_Receiver: "
206
	DEBUGF	1,"ETH_Receiver: "
Line 211... Line 207...
211
 
207
	push	ebx
212
	push	ebx
208
	mov	esi, esp
213
	mov	esi, esp
209
	add_to_queue ETH_IN_QUEUE, ETH_QUEUE_SIZE, eth_queue_entry.size, .fail
214
	add_to_queue ETH_IN_QUEUE, ETH_QUEUE_SIZE, eth_queue_entry.size, .fail
210
	DEBUGF	1,"Queued packet successfully\n"
215
	DEBUGF	1,"Queued packet successfully\n"
211
	add	esp, 4*3
216
	add	esp, 4*3
-
 
217
	ret
-
 
Line -... Line 212...
-
 
212
 
Line 218... Line 213...
218
 
213
	ret
219
  .fail:
214
 
220
	DEBUGF	1,"ETH_IN_QUEUE is full!\n"
215
  .fail:
221
	add	esp, 4
216
	DEBUGF	1,"ETH_IN_QUEUE is full!\n"
222
	call	kernel_free
217
	add	esp, 4
223
	add	esp, 4
218
	call	kernel_free
224
	ret
219
	add	esp, 4
225
 
220
 
226
 
221
	ret
227
 
222
 
228
 
-
 
229
 
223
 
230
;-------------------------------------------------------------
224
 
Line 231... Line 225...
231
;
225
;-----------------------------------------------------------------
Line 290... Line 284...
290
;       size of buffer in [esp+4]
284
;       size of buffer in [esp+4]
291
;       pointer to device struct in ebx
285
;       pointer to device struct in ebx
292
;  OUT: /
286
;  OUT: /
293
;
287
;
294
;-----------------------------------------------------------------
288
;-----------------------------------------------------------------
295
 
-
 
296
align 4
289
align 4
297
ETH_sender:
290
ETH_sender:
-
 
291
 
298
	DEBUGF	1,"ETH_Sender: queuing for device: %x, %u bytes\n", [esp], [esp + 4]
292
	DEBUGF	1,"ETH_Sender: queuing for device: %x, %u bytes\n", [esp], [esp + 4]
Line 299... Line 293...
299
 
293
 
300
	push	ebx
294
	push	ebx
301
	mov	esi, esp
295
	mov	esi, esp
302
	add_to_queue ETH_OUT_QUEUE, ETH_QUEUE_SIZE, eth_queue_entry.size, .fail
296
	add_to_queue ETH_OUT_QUEUE, ETH_QUEUE_SIZE, eth_queue_entry.size, .fail
303
	DEBUGF	1,"Queued packet successfully\n"
297
	DEBUGF	1,"Queued packet successfully\n"
-
 
298
	add	esp, 3*4
304
	add	esp, 3*4
299
 
Line 305... Line 300...
305
	ret
300
	ret
306
 
301
 
307
  .fail:
302
  .fail:
308
	DEBUGF	1,"ETH_OUT_QUEUE is full!\n"
303
	DEBUGF	1,"ETH_OUT_QUEUE is full!\n"
309
	add	esp, 4
304
	add	esp, 4
-
 
305
	call	kernel_free
310
	call	kernel_free
306
	add	esp, 4
Line 311... Line 307...
311
	add	esp, 4
307
 
Line 319... Line 315...
319
;
315
;
320
;  IN:  /
316
;  IN:  /
321
;  OUT: /
317
;  OUT: /
322
;
318
;
323
;-----------------------------------------------------------------
319
;-----------------------------------------------------------------
324
 
-
 
325
align 4
320
align 4
326
ETH_send_queued:
321
ETH_send_queued:
Line 327... Line 322...
327
 
322
 
Line 342... Line 337...
342
 
337
 
343
     .gohome:
338
  .gohome:
Line 344... Line 339...
344
	ret
339
	ret
345
 
340
 
346
 
341
 
347
;---------------------------------------------------------------------------
342
;-----------------------------------------------------------------
348
;
343
;
349
; ETH_struc2dev
344
; ETH_struc2dev
350
;
345
;
351
; IN: pointer to device struct in ebx
346
; IN: pointer to device struct in ebx
352
;
347
;
353
; OUT: edi is -1 on error, device number otherwise
-
 
354
;
348
; OUT: edi is -1 on error, device number otherwise
355
;---------------------------------------------------------------------------
349
;
356
 
350
;-----------------------------------------------------------------
Line 357... Line 351...
357
align 4
351
align 4
Line 375... Line 369...
375
	pop	ecx eax
369
	pop	ecx eax
Line 376... Line 370...
376
 
370
 
Line 377... Line 371...
377
	ret
371
	ret
378
 
372
 
379
 
373
 
380
;---------------------------------------------------------------------------
374
;-----------------------------------------------------------------
381
;
375
;
382
; ETH_create_Packet
376
; ETH_create_packet
383
;
377
;
384
; IN: pointer to source mac in eax
378
; IN: pointer to source mac in eax
Line 392... Line 386...
392
;      ebx is pointer to device structure
386
;      ebx is pointer to device structure
393
;      ecx is unchanged (packet size of embedded data)
387
;      ecx is unchanged (packet size of embedded data)
394
;      edx is size of complete buffer
388
;      edx is size of complete buffer
395
;      esi points to procedure wich needs to be called to send packet
389
;      esi points to procedure wich needs to be called to send packet
396
;
390
;
397
;---------------------------------------------------------------------------
391
;-----------------------------------------------------------------
398
 
-
 
399
align 4
392
align 4
400
ETH_create_packet:
393
ETH_create_packet:
Line 401... Line 394...
401
 
394
 
Line 453... Line 446...
453
	or	edi, -1
446
	or	edi, -1
454
	ret
447
	ret
Line 455... Line 448...
455
 
448
 
456
 
449
 
457
 
450
 
458
;---------------------------------------------------------------------------
451
;-----------------------------------------------------------------
459
;
452
;
460
; ETH_API
453
; ETH_API
Line 465... Line 458...
465
;      device number in bh
458
;      device number in bh
466
;      ecx, edx, .. depends on subfunction
459
;      ecx, edx, .. depends on subfunction
467
;
460
;
468
; OUT:
461
; OUT:
469
;
462
;
470
;---------------------------------------------------------------------------
463
;-----------------------------------------------------------------
471
 
-
 
472
align 4
464
align 4
473
ETH_API:
465
ETH_API:
Line 474... Line 466...
474
 
466
 
475
	movzx	eax, bh
467
	movzx	eax, bh