mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-22 14:41:27 +00:00
tcp: TCP experimental option for SMC
The SMC protocol [1] relies on the use of a new TCP experimental option [2, 3]. With this option, SMC capabilities are exchanged between peers during the TCP three way handshake. This patch adds support for this experimental option to TCP. References: [1] SMC-R Informational RFC: http://www.rfc-editor.org/info/rfc7609 [2] Shared Use of TCP Experimental Options RFC 6994: https://tools.ietf.org/rfc/rfc6994.txt [3] IANA ExID SMCR: http://www.iana.org/assignments/tcp-parameters/tcp-parameters.xhtml#tcp-exids Signed-off-by: Ursula Braun <ubraun@linux.vnet.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
145686baab
commit
60e2a77807
7 changed files with 136 additions and 6 deletions
|
@ -98,7 +98,8 @@ struct tcp_options_received {
|
|||
tstamp_ok : 1, /* TIMESTAMP seen on SYN packet */
|
||||
dsack : 1, /* D-SACK is scheduled */
|
||||
wscale_ok : 1, /* Wscale seen on SYN packet */
|
||||
sack_ok : 4, /* SACK seen on SYN packet */
|
||||
sack_ok : 3, /* SACK seen on SYN packet */
|
||||
smc_ok : 1, /* SMC seen on SYN packet */
|
||||
snd_wscale : 4, /* Window scaling received from sender */
|
||||
rcv_wscale : 4; /* Window scaling to send to receiver */
|
||||
u8 num_sacks; /* Number of SACK blocks */
|
||||
|
@ -110,6 +111,9 @@ static inline void tcp_clear_options(struct tcp_options_received *rx_opt)
|
|||
{
|
||||
rx_opt->tstamp_ok = rx_opt->sack_ok = 0;
|
||||
rx_opt->wscale_ok = rx_opt->snd_wscale = 0;
|
||||
#if IS_ENABLED(CONFIG_SMC)
|
||||
rx_opt->smc_ok = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* This is the max number of SACKS that we'll generate and process. It's safe
|
||||
|
@ -229,7 +233,8 @@ struct tcp_sock {
|
|||
syn_fastopen_ch:1, /* Active TFO re-enabling probe */
|
||||
syn_data_acked:1,/* data in SYN is acked by SYN-ACK */
|
||||
save_syn:1, /* Save headers of SYN packet */
|
||||
is_cwnd_limited:1;/* forward progress limited by snd_cwnd? */
|
||||
is_cwnd_limited:1,/* forward progress limited by snd_cwnd? */
|
||||
syn_smc:1; /* SYN includes SMC */
|
||||
u32 tlp_high_seq; /* snd_nxt at the time of TLP retransmit. */
|
||||
|
||||
/* RTT measurement */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue