diff options
Diffstat (limited to 'include/linux/tcp.h')
| -rw-r--r-- | include/linux/tcp.h | 35 | 
1 files changed, 35 insertions, 0 deletions
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index ca6f01531e64..3dc964010fef 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h @@ -78,6 +78,27 @@ struct tcp_sack_block {  #define TCP_SACK_SEEN     (1 << 0)   /*1 = peer is SACK capable, */  #define TCP_DSACK_SEEN    (1 << 2)   /*1 = DSACK was received from peer*/ +#if IS_ENABLED(CONFIG_MPTCP) +struct mptcp_options_received { +	u64	sndr_key; +	u64	rcvr_key; +	u64	data_ack; +	u64	data_seq; +	u32	subflow_seq; +	u16	data_len; +	u8	mp_capable : 1, +		mp_join : 1, +		dss : 1; +	u8	use_map:1, +		dsn64:1, +		data_fin:1, +		use_ack:1, +		ack64:1, +		mpc_map:1, +		__unused:2; +}; +#endif +  struct tcp_options_received {  /*	PAWS/RTTM data	*/  	int	ts_recent_stamp;/* Time we stored ts_recent (for aging) */ @@ -95,6 +116,9 @@ struct tcp_options_received {  	u8	num_sacks;	/* Number of SACK blocks		*/  	u16	user_mss;	/* mss requested by user in ioctl	*/  	u16	mss_clamp;	/* Maximal mss, negotiated at connection setup */ +#if IS_ENABLED(CONFIG_MPTCP) +	struct mptcp_options_received	mptcp; +#endif  };  static inline void tcp_clear_options(struct tcp_options_received *rx_opt) @@ -104,6 +128,11 @@ static inline void tcp_clear_options(struct tcp_options_received *rx_opt)  #if IS_ENABLED(CONFIG_SMC)  	rx_opt->smc_ok = 0;  #endif +#if IS_ENABLED(CONFIG_MPTCP) +	rx_opt->mptcp.mp_capable = 0; +	rx_opt->mptcp.mp_join = 0; +	rx_opt->mptcp.dss = 0; +#endif  }  /* This is the max number of SACKS that we'll generate and process. It's safe @@ -119,6 +148,7 @@ struct tcp_request_sock {  	const struct tcp_request_sock_ops *af_specific;  	u64				snt_synack; /* first SYNACK sent time */  	bool				tfo_listener; +	bool				is_mptcp;  	u32				txhash;  	u32				rcv_isn;  	u32				snt_isn; @@ -354,6 +384,8 @@ struct tcp_sock {  #define BPF_SOCK_OPS_TEST_FLAG(TP, ARG) 0  #endif +	u16 timeout_rehash;	/* Timeout-triggered rehash attempts */ +  	u32 rcv_ooopack; /* Received out-of-order packets, for tcpinfo */  /* Receiver side RTT estimation */ @@ -379,6 +411,9 @@ struct tcp_sock {  	u32	mtu_info; /* We received an ICMP_FRAG_NEEDED / ICMPV6_PKT_TOOBIG  			   * while socket was owned by user.  			   */ +#if IS_ENABLED(CONFIG_MPTCP) +	bool	is_mptcp; +#endif  #ifdef CONFIG_TCP_MD5SIG  /* TCP AF-Specific parts; only used by MD5 Signature support so far */  |