Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1518 → Rev 1519

/kernel/branches/net/network/stack.inc
37,6 → 37,8
; Ethernet protocol numbers
ETHER_ARP equ 0x0608
ETHER_IPv4 equ 0x0008 ; Reversed from 0800 for intel
ETHER_PPP_DISCOVERY equ 0x6388
ETHER_PPP_SESSION equ 0x6488
 
;Protocol family
AF_UNSPEC equ 0
76,7 → 78,20
virtual at 0
 
NET_DEVICE:
.type dd ?
 
.type dd ? ; Type field
.mtu dd ? ; Maximal Transmission Unit
.name dd ? ; Ptr to 0 terminated string
 
.unload dd ? ; Ptrs to driver functions
.reset dd ? ;
.transmit dd ? ;
 
.bytes_tx dq ? ; Statistics, updated by the driver
.bytes_rx dq ? ;
.packets_tx dd ? ;
.packets_rx dd ? ;
 
.end:
 
end virtual
193,27 → 208,18
je .exit
mov [net_10ms], eax
 
if ETH_QUEUE
call ETH_handler
call ETH_send_queued
end if
call TCP_10ms
test [net_10ms], 0x0f ; 160ms
jnz .exit
 
inc [net_tmr_count]
cmp [net_tmr_count], 50
je .500ms
cmp [net_tmr_count], 100
jne .exit
; call TCP_timer_160ms
 
test [net_10ms], 0x3f ; 640ms
jnz .exit
 
; call TCP_timer_640ms
call ARP_decrease_entry_ttls
call IPv4_decrease_fragment_ttls
call TCP_timer_1000ms
 
mov [net_tmr_count], 0
 
.500ms:
call TCP_500ms
 
.exit:
ret
 
380,34 → 386,6
pop ecx
ret
 
 
 
 
;--------------------------
;
; NET_send
;
; IN: ebx = ptr to device struct
; [esp] = data ptr
; [esp + 4] = data size
;
; OUT: /
;
;--------------------------
align 4
NET_send:
 
call [ebx + ETH_DEVICE.transmit] ;;;;
 
;;; TODO:check if packet was sent ok
 
call kernel_free
add esp, 4
ret
 
 
 
 
;-----------------------------------------------------------------
;
; checksum_1
563,7 → 541,7
jnz @f
 
mov esi, [esi + NET_DRV_LIST]
mov esi, [esi + ETH_DEVICE.name]
mov esi, [esi + NET_DEVICE.name]
mov edi, ecx
 
mov ecx, 64 ; max length
578,7 → 556,7
jnz @f
 
mov esi, [esi + NET_DRV_LIST]
call [esi + ETH_DEVICE.reset]
call [esi + NET_DEVICE.reset]
jmp .return
 
@@:
587,7 → 565,7
jnz @f
 
mov esi, [esi + NET_DRV_LIST]
call [esi + ETH_DEVICE.unload]
call [esi + NET_DEVICE.unload]
jmp .return
 
@@:
645,7 → 623,7
cmp ax , ETHER_ARP
je ARP_API
 
cmp ax , 1337
cmp ax , 1337 ;;;;;
je ETH_API
 
add esp, 4 ; if we reached here, no function was called, so we need to balance stack