Rev 1257 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1257 | Rev 1259 | ||
---|---|---|---|
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: 1257 $ |
17 | $Revision: 1259 $ |
18 | 18 | ||
Line 19... | Line 19... | ||
19 | MAX_ETH_DEVICES equ MAX_NET_DEVICES |
19 | MAX_ETH_DEVICES equ MAX_NET_DEVICES |
Line 55... | Line 55... | ||
55 | uglobal |
55 | uglobal |
Line 56... | Line 56... | ||
56 | 56 | ||
57 | ETH_RUNNING dd ? |
57 | ETH_RUNNING dd ? |
58 | ETH_DRV_LIST rd MAX_ETH_DEVICES |
58 | ETH_DRV_LIST rd MAX_ETH_DEVICES |
- | 59 | ETH_IN_QUEUE rd 3*ETH_QUEUE_SIZE+3 |
|
59 | ETH_IN_QUEUE rd 3*ETH_QUEUE_SIZE+3 |
60 | if QUEUE_BEFORE_SENDING |
- | 61 | ETH_OUT_QUEUE rd 3*ETH_QUEUE_SIZE+3 |
|
60 | ETH_OUT_QUEUE rd 3*ETH_QUEUE_SIZE+3 |
62 | end if |
Line 61... | Line 63... | ||
61 | endg |
63 | endg |
62 | 64 | ||
Line 78... | Line 80... | ||
78 | mov edi, ETH_RUNNING |
80 | mov edi, ETH_RUNNING |
79 | mov ecx, (1+MAX_ETH_DEVICES) |
81 | mov ecx, (1+MAX_ETH_DEVICES) |
80 | rep stosd |
82 | rep stosd |
Line 81... | Line 83... | ||
81 | 83 | ||
- | 84 | init_queue ETH_IN_QUEUE |
|
- | 85 | ||
82 | init_queue ETH_IN_QUEUE |
86 | if QUEUE_BEFORE_SENDING |
- | 87 | init_queue ETH_OUT_QUEUE |
|
Line 83... | Line 88... | ||
83 | init_queue ETH_OUT_QUEUE |
88 | end if |
Line 84... | Line 89... | ||
84 | 89 | ||
Line 106... | Line 111... | ||
106 | jge .error |
111 | jge .error |
Line 107... | Line 112... | ||
107 | 112 | ||
108 | test eax, eax |
113 | test eax, eax |
109 | jnz .notfirst |
114 | jnz .notfirst |
- | 115 | mov dword [ETH_IN_QUEUE], eax |
|
110 | mov dword [ETH_IN_QUEUE], eax |
116 | if QUEUE_BEFORE_SENDING |
- | 117 | mov dword [ETH_OUT_QUEUE], eax |
|
111 | mov dword [ETH_OUT_QUEUE], eax |
118 | end if |
Line 112... | Line 119... | ||
112 | .notfirst: |
119 | .notfirst: |
113 | 120 | ||
114 | mov eax, ebx |
121 | mov eax, ebx |
Line 174... | Line 181... | ||
174 | 181 | ||
175 | dec [ETH_RUNNING] |
182 | dec [ETH_RUNNING] |
Line 176... | Line 183... | ||
176 | jnz .notlast |
183 | jnz .notlast |
- | 184 | ||
177 | 185 | mov dword [ETH_IN_QUEUE], ETH_QUEUE_SIZE |
|
- | 186 | if QUEUE_BEFORE_SENDING |
|
Line 178... | Line 187... | ||
178 | mov dword [ETH_IN_QUEUE], ETH_QUEUE_SIZE |
187 | mov dword [ETH_OUT_QUEUE], ETH_QUEUE_SIZE |
179 | mov dword [ETH_OUT_QUEUE], ETH_QUEUE_SIZE |
188 | end if |
Line 180... | Line 189... | ||
180 | 189 | ||
Line 286... | Line 295... | ||
286 | ; OUT: / |
295 | ; OUT: / |
287 | ; |
296 | ; |
288 | ;----------------------------------------------------------------- |
297 | ;----------------------------------------------------------------- |
289 | align 4 |
298 | align 4 |
290 | ETH_sender: |
299 | ETH_sender: |
291 | - | ||
- | 300 | if QUEUE_BEFORE_SENDING |
|
292 | DEBUGF 1,"ETH_Sender: queuing for device: %x, %u bytes\n", [esp], [esp + 4] |
301 | DEBUGF 1,"ETH_Sender: queuing for device: %x, %u bytes\n", [esp], [esp + 4] |
Line 293... | Line 302... | ||
293 | 302 | ||
294 | push ebx |
303 | push ebx |
295 | mov esi, esp |
304 | mov esi, esp |
Line 328... | Line 337... | ||
328 | mov ebx, [esi] |
337 | mov ebx, [esi] |
329 | pushd [esi + 8] |
338 | pushd [esi + 8] |
330 | pushd [esi + 4] |
339 | pushd [esi + 4] |
Line 331... | Line 340... | ||
331 | 340 | ||
332 | DEBUGF 1,"dequeued packet for device %x\n", ebx |
341 | DEBUGF 1,"dequeued packet for device %x\n", ebx |
333 | 342 | end if |
|
334 | call [ebx+ETH_DEVICE.transmit] ; we will return to get_from_queue macro after transmitting packet |
343 | call [ebx+ETH_DEVICE.transmit] ; we will return to get_from_queue macro after transmitting packet |
335 | call kernel_free |
344 | call kernel_free |
Line 336... | Line 345... | ||
336 | add esp, 4 ; pop (balance stack) |
345 | add esp, 4 ; pop (balance stack) |
Line 542... | Line 551... | ||
542 | add eax, ETH_IN_QUEUE |
551 | add eax, ETH_IN_QUEUE |
543 | mov eax, [eax + queue.size] |
552 | mov eax, [eax + queue.size] |
544 | ret |
553 | ret |
Line 545... | Line 554... | ||
545 | 554 | ||
- | 555 | .out_queue: |
|
546 | .out_queue: |
556 | if QUEUE_BEFORE_SENDING |
547 | add eax, ETH_OUT_QUEUE |
557 | add eax, ETH_OUT_QUEUE |
- | 558 | mov eax, [eax + queue.size] |
|
- | 559 | else |
|
- | 560 | mov eax, -1 |
|
548 | mov eax, [eax + queue.size] |
561 | end if |
549 | ret |
562 | ret |