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 |