forked from KolibriOS/kolibrios
More timer bugfixes for TCP_output.
git-svn-id: svn://kolibrios.org@3603 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
7ce53df3a1
commit
52893d0ce3
@ -618,13 +618,13 @@ IPv4_output:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.eth_error:
|
.eth_error:
|
||||||
DEBUGF DEBUG_NETWORK_VERBOSE, "IPv4_output: ethernet error\n"
|
DEBUGF DEBUG_NETWORK_ERROR, "IPv4_output: ethernet error\n"
|
||||||
add esp, 3*4+2+6
|
add esp, 3*4+2+6
|
||||||
xor edi, edi
|
xor edi, edi
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.arp_error:
|
.arp_error:
|
||||||
DEBUGF DEBUG_NETWORK_VERBOSE, "IPv4_output: ARP error=%x\n", eax
|
DEBUGF DEBUG_NETWORK_ERROR, "IPv4_output: ARP error=%x\n", eax
|
||||||
add esp, 3*4+2
|
add esp, 3*4+2
|
||||||
xor edi, edi
|
xor edi, edi
|
||||||
ret
|
ret
|
||||||
|
@ -93,7 +93,7 @@ TCP_output:
|
|||||||
jmp .no_force
|
jmp .no_force
|
||||||
|
|
||||||
.no_zero_window:
|
.no_zero_window:
|
||||||
and [ebx + TCP_SOCKET.timer_flags], not timer_flag_persist
|
and [eax + TCP_SOCKET.timer_flags], not timer_flag_persist
|
||||||
mov [eax + TCP_SOCKET.t_rxtshift], 0
|
mov [eax + TCP_SOCKET.t_rxtshift], 0
|
||||||
|
|
||||||
.no_force:
|
.no_force:
|
||||||
@ -125,7 +125,7 @@ TCP_output:
|
|||||||
jnz @f
|
jnz @f
|
||||||
|
|
||||||
; cancel pending retransmit
|
; cancel pending retransmit
|
||||||
and [ebx + TCP_SOCKET.timer_flags], not timer_flag_retransmission
|
and [eax + TCP_SOCKET.timer_flags], not timer_flag_retransmission
|
||||||
|
|
||||||
; pull SND_NXT back to (closed) window, We will enter persist state below.
|
; pull SND_NXT back to (closed) window, We will enter persist state below.
|
||||||
push [eax + TCP_SOCKET.SND_UNA]
|
push [eax + TCP_SOCKET.SND_UNA]
|
||||||
@ -268,10 +268,10 @@ TCP_output:
|
|||||||
|
|
||||||
cmp [eax + STREAM_SOCKET.snd.size], 0 ; Data ready to send?
|
cmp [eax + STREAM_SOCKET.snd.size], 0 ; Data ready to send?
|
||||||
jne @f
|
jne @f
|
||||||
and [ebx + TCP_SOCKET.timer_flags], not timer_flag_retransmission
|
and [eax + TCP_SOCKET.timer_flags], not timer_flag_retransmission
|
||||||
jne @f
|
jne @f
|
||||||
|
|
||||||
test [ebx + TCP_SOCKET.timer_flags], timer_flag_persist ; Persist timer already expired?
|
test [eax + TCP_SOCKET.timer_flags], timer_flag_persist ; Persist timer already expired?
|
||||||
jnz @f
|
jnz @f
|
||||||
|
|
||||||
DEBUGF DEBUG_NETWORK_VERBOSE, "TCP_output: Entering persist state\n"
|
DEBUGF DEBUG_NETWORK_VERBOSE, "TCP_output: Entering persist state\n"
|
||||||
@ -521,11 +521,11 @@ TCP_send:
|
|||||||
|
|
||||||
mov edx, [eax + TCP_SOCKET.t_rxtcur]
|
mov edx, [eax + TCP_SOCKET.t_rxtcur]
|
||||||
mov [eax + TCP_SOCKET.timer_retransmission], edx
|
mov [eax + TCP_SOCKET.timer_retransmission], edx
|
||||||
or [ebx + TCP_SOCKET.timer_flags], timer_flag_retransmission
|
or [eax + TCP_SOCKET.timer_flags], timer_flag_retransmission
|
||||||
|
|
||||||
test [eax + TCP_SOCKET.timer_flags], timer_flag_persist
|
test [eax + TCP_SOCKET.timer_flags], timer_flag_persist
|
||||||
jz .retransmit_set
|
jz .retransmit_set
|
||||||
and [ebx + TCP_SOCKET.timer_flags], not timer_flag_persist
|
and [eax + TCP_SOCKET.timer_flags], not timer_flag_persist
|
||||||
mov [eax + TCP_SOCKET.t_rxtshift], 0
|
mov [eax + TCP_SOCKET.t_rxtshift], 0
|
||||||
|
|
||||||
.retransmit_set:
|
.retransmit_set:
|
||||||
|
Loading…
Reference in New Issue
Block a user