74,11 → 74,11 |
mov ecx, (1+MAX_ETH_DEVICES) |
rep stosd |
|
mov dword [ETH_IN_QUEUE], eax |
mov dword [ETH_IN_QUEUE], ETH_QUEUE_SIZE |
mov dword [ETH_IN_QUEUE+4], ETH_IN_QUEUE + queue.data |
mov dword [ETH_IN_QUEUE+8], ETH_IN_QUEUE + queue.data |
|
mov dword [ETH_OUT_QUEUE], eax |
mov dword [ETH_OUT_QUEUE], ETH_QUEUE_SIZE |
mov dword [ETH_OUT_QUEUE+4], ETH_OUT_QUEUE + queue.data |
mov dword [ETH_OUT_QUEUE+8], ETH_OUT_QUEUE + queue.data |
|
85,7 → 85,6 |
ret |
|
|
|
;--------------------------------------------------------- |
; |
; ETH_Add_Device: |
102,9 → 101,17 |
ETH_Add_Device: |
|
DEBUGF 1,"ETH_Add_Device: %x\n", ebx |
cmp [ETH_RUNNING], MAX_ETH_DEVICES |
|
mov eax, [ETH_RUNNING] |
cmp eax, MAX_ETH_DEVICES |
jge .error |
|
test eax, eax |
jnz .notfirst |
mov dword [ETH_IN_QUEUE], eax |
mov dword [ETH_OUT_QUEUE], eax |
.notfirst: |
|
mov eax, ebx |
mov ecx, MAX_ETH_DEVICES ; We need to check whole list because a device may be removed without re-organizing list |
mov edi, ETH_DRV_LIST |
142,6 → 149,7 |
; stosw ; |
|
inc [ETH_RUNNING] ; Indicate that one more ethernet device is up and running |
|
; pop eax ; Output device num in eax |
DEBUGF 1,"- succes: %u\n",eax |
ret |
184,7 → 192,13 |
mov dword [edi-4], eax |
|
dec [ETH_RUNNING] |
jnz .notlast |
|
mov dword [ETH_IN_QUEUE], ETH_QUEUE_SIZE |
mov dword [ETH_OUT_QUEUE], ETH_QUEUE_SIZE |
|
.notlast: |
|
ret |
|
.error: |
470,14 → 484,19 |
add eax, ETH_DRV_LIST |
mov eax, dword [eax] |
mov eax, dword [eax + ETH_DEVICE.bytes_tx + 4] |
mov eax, dword [eax + ETH_DEVICE.bytes_tx] |
mov [esp+20+4], ebx ; TODO: fix this ugly code |
ret |
|
.bytes_rx: |
add eax, ETH_DRV_LIST |
mov eax, dword [eax] |
mov eax, dword [eax + ETH_DEVICE.bytes_rx + 4] |
mov ebx, dword [eax + ETH_DEVICE.bytes_rx + 4] |
mov eax, dword [eax + ETH_DEVICE.bytes_rx] |
mov [esp+20+4], ebx ; TODO: fix this ugly code |
ret |
|
|
.read_mac: |
add eax, ETH_DRV_LIST |
mov eax, [eax] |