Subversion Repositories Kolibri OS

Rev

Rev 2947 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2947 Rev 2948
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: 2947 $
17
$Revision: 2948 $
18
 
18
 
19
;-----------------------------------------------------------------
19
;-----------------------------------------------------------------
20
;
20
;
Line 588... Line 588...
588
        sub     ecx, eax
588
        sub     ecx, eax
589
        and     [ebx + TCP_SOCKET.t_flags], not (TH_PUSH or TH_FIN)
589
        and     [ebx + TCP_SOCKET.t_flags], not (TH_PUSH or TH_FIN)
590
  .no_excess_data:
590
  .no_excess_data:
Line 591... Line 591...
591
 
591
 
592
;-----------------
592
;-----------------
Line 593... Line 593...
593
; Record timestamp (737-746) TODO
593
; Record timestamp (737-746)
594
 
594
 
595
; If last ACK falls within this segments sequence numbers, record its timestamp
595
; If last ACK falls within this segments sequence numbers, record its timestamp
596
        test    [ebx + TCP_SOCKET.temp_bits], TCP_BIT_TIMESTAMP
596
        test    [ebx + TCP_SOCKET.temp_bits], TCP_BIT_TIMESTAMP
Line 603... Line 603...
603
        dec     eax
603
        dec     eax
604
       @@:
604
       @@:
605
        sub     eax, ecx
605
        sub     eax, ecx
606
        jae     .no_timestamp
606
        jae     .no_timestamp
Line -... Line 607...
-
 
607
 
-
 
608
        DEBUGF  1,"Recording timestamp\n"
607
 
609
 
608
        mov     eax, [esp + 4+4]                                  ; tcp_now
610
        mov     eax, [esp + 4+4]                                ; tcp_now
609
        mov     [ebx + TCP_SOCKET.ts_recent_age], eax
611
        mov     [ebx + TCP_SOCKET.ts_recent_age], eax
610
        mov     eax, [ebx + TCP_SOCKET.ts_val]
612
        mov     eax, [ebx + TCP_SOCKET.ts_val]
611
        mov     [ebx + TCP_SOCKET.ts_recent], eax
613
        mov     [ebx + TCP_SOCKET.ts_recent], eax
Line 734... Line 736...
734
        cmp     eax, [ebx + TCP_SOCKET.SND_WND]
736
        cmp     eax, [ebx + TCP_SOCKET.SND_WND]
735
        jne     .reset_dupacks
737
        jne     .reset_dupacks
Line 736... Line 738...
736
 
738
 
Line 737... Line 739...
737
        DEBUGF  1,"TCP_input: Processing duplicate ACK\n"
739
        DEBUGF  1,"TCP_input: Processing duplicate ACK\n"
738
 
740
 
739
; If we have outstanidn data, other than a window probe, this is a completely duplicate ACK
741
; If we have outstanding data, other than a window probe, this is a completely duplicate ACK
Line 740... Line 742...
740
; (window info didnt change) The ACK is the biggest we've seen and we've seen exactly our rexmt threshold of them,
742
; (window info didnt change) The ACK is the biggest we've seen and we've seen exactly our rexmt threshold of them,
741
; assume a packet has been dropped and retransmit it. Kludge snd_nxt & the congestion window so we send only this one packet.
743
; assume a packet has been dropped and retransmit it. Kludge snd_nxt & the congestion window so we send only this one packet.
Line 851... Line 853...
851
; RTT measurements and retransmission timer  (912-926)
853
; RTT measurements and retransmission timer  (912-926)
Line 852... Line 854...
852
 
854
 
Line 853... Line 855...
853
; If we have a timestamp, update smoothed RTT
855
; If we have a timestamp, update smoothed RTT
854
 
856
 
855
        test    [ebx + TCP_SOCKET.temp_bits], TCP_BIT_TIMESTAMP
857
        test    [ebx + TCP_SOCKET.temp_bits], TCP_BIT_TIMESTAMP
856
        jne     .timestamp_not_present
858
        jz      .timestamp_not_present
857
        mov     eax, [esp+4+4]
859
        mov     eax, [esp+4+4]
858
        sub     eax, [ebx + TCP_SOCKET.ts_ecr]
860
        sub     eax, [ebx + TCP_SOCKET.ts_ecr]
859
        inc     eax
861
        inc     eax