Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5441 → Rev 5442

/kernel/trunk/network/tcp_output.inc
90,10 → 90,9
 
cmp ebx, [eax + STREAM_SOCKET.snd.size]
jae @f
 
and dl, not (TH_FIN)
@@:
 
@@:
inc ecx
jmp .no_force
 
113,7 → 112,6
@@:
sub esi, ebx
 
 
;------------------------
; check for window shrink (107)
 
146,7 → 144,6
 
cmp esi, [eax + TCP_SOCKET.t_maxseg]
jbe @f
 
mov esi, [eax + TCP_SOCKET.t_maxseg]
or [temp_bits], TCP_BIT_SENDALOT
@@:
160,7 → 157,6
cmp edi, [eax + STREAM_SOCKET.snd.size]
jae @f
and dl, not (TH_FIN)
 
@@:
 
;-------------------------------
403,6 → 399,50
or [temp_bits], TCP_BIT_SENDALOT
.no_overflow:
 
; Update stats
test esi, esi
jz .zero_data
 
cmp [eax + TCP_SOCKET.t_force], 1
jne @f
cmp esi, 1
jne @f
inc [TCPS_sndprobe]
jmp .eos
@@:
 
mov ebx, [eax + TCP_SOCKET.SND_NXT]
cmp ebx, [eax + TCP_SOCKET.SND_MAX]
jae @f
inc [TCPS_sndrexmitpack]
add [TCPS_sndrexmitbyte], esi
jmp .eos
@@:
inc [TCPS_sndpack]
add [TCPS_sndbyte], esi
jmp .eos
 
.zero_data:
test [eax + TCP_SOCKET.t_flags], TF_ACKNOW
jz @f
inc [TCPS_sndacks]
jmp .eos
@@:
test dl, TH_SYN + TH_FIN + TH_RST
jz @f
inc [TCPS_sndctrl]
jmp .eos
@@:
mov ebx, [eax + TCP_SOCKET.SND_UP]
cmp ebx, [eax + TCP_SOCKET.SND_UNA]
jb @f
inc [TCPS_sndurg]
jmp .eos
@@:
inc [TCPS_sndwinup]
 
.eos:
 
;----------------------------------------------------
; Calculate the receive window.
; Dont shrink window, but avoid silly window syndrome
469,8 → 509,8
call IPv4_output
jz .ip_error
 
;-----------------------------------------
; Move TCP header from stack to TCP packet
;------------------------------------------
; Move TCP header from stack to TCP segment
 
push ecx
mov ecx, [esp + 4]
504,7 → 544,7
test ecx, ecx
jz .nodata
mov edx, [eax + TCP_SOCKET.SND_NXT]
add [eax + TCP_SOCKET.SND_NXT], ecx ; update sequence number <<< CHECKME
add [eax + TCP_SOCKET.SND_NXT], ecx ; update sequence number
sub edx, [eax + TCP_SOCKET.SND_UNA] ; offset
add eax, STREAM_SOCKET.snd
call SOCKET_ring_read
536,7 → 576,7
je @f
mov [eax + TCP_SOCKET.t_rtt], 1 ; nope, start transmission timer
mov [eax + TCP_SOCKET.t_rtseq], edi
;TODO: update stats
inc [TCPS_segstimed]
@@:
 
; set retransmission timer if not already set, and not doing an ACK or keepalive probe
584,6 → 624,7
 
call NET_ptr_to_num4
inc [TCP_segments_tx + edi]
inc [TCPS_sndtotal]
 
; update advertised receive window
test ecx, ecx