diff options
author | ps <ps@FreeBSD.org> | 2005-06-27 22:27:42 +0000 |
---|---|---|
committer | ps <ps@FreeBSD.org> | 2005-06-27 22:27:42 +0000 |
commit | 5dc6983c1de217ad36b70fde8b35a410d96b2dc2 (patch) | |
tree | 59028efed8605154623d895586bd0c855841c39b /sys/netinet/tcp_var.h | |
parent | 4df35786e2cf2d7ff569269ced581b360f767498 (diff) | |
download | FreeBSD-src-5dc6983c1de217ad36b70fde8b35a410d96b2dc2.zip FreeBSD-src-5dc6983c1de217ad36b70fde8b35a410d96b2dc2.tar.gz |
- Postpone SACK option processing until after PAWS checks. SACK option
processing is now done in the ACK processing case.
- Merge tcp_sack_option() and tcp_del_sackholes() into a new function
called tcp_sack_doack().
- Test (SEG.ACK < SND.MAX) before processing the ACK.
Submitted by: Noritoshi Demizu
Reveiewed by: Mohan Srinivasan, Raja Mukerji
Approved by: re
Diffstat (limited to 'sys/netinet/tcp_var.h')
-rw-r--r-- | sys/netinet/tcp_var.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/netinet/tcp_var.h b/sys/netinet/tcp_var.h index d2f34ea..b1515dd 100644 --- a/sys/netinet/tcp_var.h +++ b/sys/netinet/tcp_var.h @@ -238,7 +238,8 @@ struct tcpopt { u_int32_t to_tsecr; u_int16_t to_mss; u_int8_t to_requested_s_scale; - u_int8_t to_pad; + u_int8_t to_nsacks; /* number of SACK blocks */ + u_char *to_sacks; /* pointer to the first SACK blocks */ }; #ifdef _NETINET_IN_PCB_H_ @@ -578,9 +579,8 @@ extern u_long tcp_sendspace; extern u_long tcp_recvspace; tcp_seq tcp_new_isn(struct tcpcb *); -int tcp_sack_option(struct tcpcb *,struct tcphdr *,u_char *,int); +void tcp_sack_doack(struct tcpcb *, struct tcpopt *, tcp_seq); void tcp_update_sack_list(struct tcpcb *tp, tcp_seq rcv_laststart, tcp_seq rcv_lastend); -void tcp_del_sackholes(struct tcpcb *, struct tcphdr *); void tcp_clean_sackreport(struct tcpcb *tp); void tcp_sack_adjust(struct tcpcb *tp); struct sackhole *tcp_sack_output(struct tcpcb *tp, int *sack_bytes_rexmt); |