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:

committed by
David S. Miller

parent
145686baab
commit
60e2a77807
@@ -191,6 +191,7 @@ void tcp_time_wait(struct sock *sk, int state, int timeo);
|
||||
* experimental options. See draft-ietf-tcpm-experimental-options-00.txt
|
||||
*/
|
||||
#define TCPOPT_FASTOPEN_MAGIC 0xF989
|
||||
#define TCPOPT_SMC_MAGIC 0xE2D4C3D9
|
||||
|
||||
/*
|
||||
* TCP option lengths
|
||||
@@ -203,6 +204,7 @@ void tcp_time_wait(struct sock *sk, int state, int timeo);
|
||||
#define TCPOLEN_MD5SIG 18
|
||||
#define TCPOLEN_FASTOPEN_BASE 2
|
||||
#define TCPOLEN_EXP_FASTOPEN_BASE 4
|
||||
#define TCPOLEN_EXP_SMC_BASE 6
|
||||
|
||||
/* But this is what stacks really send out. */
|
||||
#define TCPOLEN_TSTAMP_ALIGNED 12
|
||||
@@ -213,6 +215,7 @@ void tcp_time_wait(struct sock *sk, int state, int timeo);
|
||||
#define TCPOLEN_SACK_PERBLOCK 8
|
||||
#define TCPOLEN_MD5SIG_ALIGNED 20
|
||||
#define TCPOLEN_MSS_ALIGNED 4
|
||||
#define TCPOLEN_EXP_SMC_BASE_ALIGNED 8
|
||||
|
||||
/* Flags in tp->nonagle */
|
||||
#define TCP_NAGLE_OFF 1 /* Nagle's algo is disabled */
|
||||
@@ -2108,4 +2111,8 @@ static inline bool tcp_bpf_ca_needs_ecn(struct sock *sk)
|
||||
{
|
||||
return (tcp_call_bpf(sk, BPF_SOCK_OPS_NEEDS_ECN) == 1);
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_SMC)
|
||||
extern struct static_key_false tcp_have_smc;
|
||||
#endif
|
||||
#endif /* _TCP_H */
|
||||
|
Reference in New Issue
Block a user