All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [MPTCP] [PATCH] mptcp: Remove all traces of checksum support
@ 2019-09-17 21:20 Peter Krystad
  0 siblings, 0 replies; 5+ messages in thread
From: Peter Krystad @ 2019-09-17 21:20 UTC (permalink / raw)
  To: mptcp

[-- Attachment #1: Type: text/plain, Size: 2972 bytes --]

On Tue, 2019-09-17 at 11:24 +0200, Paolo Abeni wrote:
> Hi,
> 
> On Mon, 2019-09-16 at 15:10 -0700, Peter Krystad wrote:
> > @@ -152,10 +151,27 @@ void mptcp_parse_option(const unsigned char *ptr, int opsize,
> >  				expected_opsize += TCPOLEN_MPTCP_DSS_ACK64;
> >  			else
> >  				expected_opsize += TCPOLEN_MPTCP_DSS_ACK32;
> > +		}
> > +
> > +		if (mp_opt->use_map) {
> > +			if (mp_opt->dsn64)
> > +				expected_opsize += TCPOLEN_MPTCP_DSS_MAP64;
> > +			else
> > +				expected_opsize += TCPOLEN_MPTCP_DSS_MAP32;
> > +		}
> >  
> > -			if (opsize < expected_opsize)
> > -				break;
> > +		/* RFC 6824, Section 3.3:
> > +		 * If a checksum is present, but its use had
> > +		 * not been negotiated in the MP_CAPABLE handshake,
> > +		 * the checksum field MUST be ignored.
> > +		 */
> > +		if (opsize != expected_opsize &&
> > +		    opsize != expected_opsize + TCPOLEN_MPTCP_DSS_CHECKSUM)
> > +			break;
> 
> My understanding is that we should look for RFC 6824 bis compliance -
> is that correct? 

That's the feedback we got.

> If so, than we should reset the subflow connection if opsize ==
> expected_opsize + TCPOLEN_MPTCP_DSS_CHECKSUM, and just ignore other bad
> len. Is that correct? (looks a bit weird to me)
> 
And that's my reading of the 6824bis too. But the code base is v0 right now,
so I think this is OK going in like this, the purpose of this patch is just to
make it clear we don't support checksum. Maybe add a comment here that it will
need revision for v1? I think it will make sense to move to v1 in one (or
more) coordinated patchsets instead of trickling support in over time. 

> I'm unsure we can reset the stream from mptcp_parse_option() even
> providing it the relevant sock variable (and that would be a quite
> invasive change).
> 
> Perhaps we can mark the pkts/DSS/MPTCP ext as 'bad' using an additional
> flag and send the reset later? (even at rcvmsg time) 

It is going to have to be something like that, but out-of-scope for this
patch.

Peter.


> > @@ -701,18 +691,11 @@ void mptcp_write_options(__be32 *ptr, struct mptcp_out_options *opts)
> >  		}
> >  
> >  		if (mpext->use_map) {
> > -			__sum16 checksum;
> > -
> > -			pr_debug("Writing map values");
> >  			put_unaligned_be64(mpext->data_seq, ptr);
> >  			ptr += 2;
> > -			*ptr++ = htonl(mpext->subflow_seq);
> > -
> > -			if (mpext->use_checksum)
> > -				checksum = mpext->checksum;
> > -			else
> > -				checksum = TCPOPT_NOP << 8 | TCPOPT_NOP;
> > -			*ptr = htonl(mpext->data_len << 16 | checksum);
> > +			put_unaligned_be32(mpext->subflow_seq, ptr);
> > +			ptr += 1;
> > +			put_unaligned_be16(mpext->data_len, ptr);
> 
> I think we should still set 4 bytes here:
> 
> 	put_unaligned_be32(mpext->subflow_seq << 16 | TCPOPT_NOP << 8 |
> TCPOPT_NOP, ptr);
> 	
> or we can hit some 'uninit value used' error triggered by syzbot or the
> like.
> 
> Cheers,
> 
> Paolo
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [MPTCP] [PATCH] mptcp: Remove all traces of checksum support
@ 2019-09-24 18:44 Peter Krystad
  0 siblings, 0 replies; 5+ messages in thread
From: Peter Krystad @ 2019-09-24 18:44 UTC (permalink / raw)
  To: mptcp

[-- Attachment #1: Type: text/plain, Size: 1280 bytes --]

On Tue, 2019-09-17 at 11:24 +0200, Paolo Abeni wrote:
> Hi,
> 
> On Mon, 2019-09-16 at 15:10 -0700, Peter Krystad wrote:
> > @@ -152,10 +151,27 @@ void mptcp_parse_option(const unsigned char *ptr, int opsize,
> >  				expected_opsize += TCPOLEN_MPTCP_DSS_ACK64;
> > 

...

> 
> > @@ -701,18 +691,11 @@ void mptcp_write_options(__be32 *ptr, struct mptcp_out_options *opts)
> >  		}
> >  
> >  		if (mpext->use_map) {
> > -			__sum16 checksum;
> > -
> > -			pr_debug("Writing map values");
> >  			put_unaligned_be64(mpext->data_seq, ptr);
> >  			ptr += 2;
> > -			*ptr++ = htonl(mpext->subflow_seq);
> > -
> > -			if (mpext->use_checksum)
> > -				checksum = mpext->checksum;
> > -			else
> > -				checksum = TCPOPT_NOP << 8 | TCPOPT_NOP;
> > -			*ptr = htonl(mpext->data_len << 16 | checksum);
> > +			put_unaligned_be32(mpext->subflow_seq, ptr);
> > +			ptr += 1;
> > +			put_unaligned_be16(mpext->data_len, ptr);
> 
> I think we should still set 4 bytes here:
> 
> 	put_unaligned_be32(mpext->subflow_seq << 16 | TCPOPT_NOP << 8 |
> TCPOPT_NOP, ptr);
> 	
> or we can hit some 'uninit value used' error triggered by syzbot or the
> like.

Sorry Paolo I missed this comment before. I'll send a v2.

Peter.

> Cheers,
> 
> Paolo
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [MPTCP] [PATCH] mptcp: Remove all traces of checksum support
@ 2019-09-17 21:35 Mat Martineau
  0 siblings, 0 replies; 5+ messages in thread
From: Mat Martineau @ 2019-09-17 21:35 UTC (permalink / raw)
  To: mptcp

[-- Attachment #1: Type: text/plain, Size: 3558 bytes --]


On Tue, 17 Sep 2019, Peter Krystad wrote:

> On Tue, 2019-09-17 at 11:24 +0200, Paolo Abeni wrote:
>> Hi,
>>
>> On Mon, 2019-09-16 at 15:10 -0700, Peter Krystad wrote:
>>> @@ -152,10 +151,27 @@ void mptcp_parse_option(const unsigned char *ptr, int opsize,
>>>  				expected_opsize += TCPOLEN_MPTCP_DSS_ACK64;
>>>  			else
>>>  				expected_opsize += TCPOLEN_MPTCP_DSS_ACK32;
>>> +		}
>>> +
>>> +		if (mp_opt->use_map) {
>>> +			if (mp_opt->dsn64)
>>> +				expected_opsize += TCPOLEN_MPTCP_DSS_MAP64;
>>> +			else
>>> +				expected_opsize += TCPOLEN_MPTCP_DSS_MAP32;
>>> +		}
>>>
>>> -			if (opsize < expected_opsize)
>>> -				break;
>>> +		/* RFC 6824, Section 3.3:
>>> +		 * If a checksum is present, but its use had
>>> +		 * not been negotiated in the MP_CAPABLE handshake,
>>> +		 * the checksum field MUST be ignored.
>>> +		 */
>>> +		if (opsize != expected_opsize &&
>>> +		    opsize != expected_opsize + TCPOLEN_MPTCP_DSS_CHECKSUM)
>>> +			break;
>>
>> My understanding is that we should look for RFC 6824 bis compliance -
>> is that correct?
>
> That's the feedback we got.
>
>> If so, than we should reset the subflow connection if opsize ==
>> expected_opsize + TCPOLEN_MPTCP_DSS_CHECKSUM, and just ignore other bad
>> len. Is that correct? (looks a bit weird to me)
>>
> And that's my reading of the 6824bis too. But the code base is v0 right now,
> so I think this is OK going in like this, the purpose of this patch is just to
> make it clear we don't support checksum. Maybe add a comment here that it will
> need revision for v1? I think it will make sense to move to v1 in one (or
> more) coordinated patchsets instead of trickling support in over time.

I agree that we should switch from v0 to v1 all at once - preferably when 
we have something to test against! I think we would benefit from 
interoperating with the v0.95 (protocol v0) kernel with the 
multiple-subflow transmission and reassembly changes and DATA_FIN before 
jumping in to v1 compliance.


Mat


>
>> I'm unsure we can reset the stream from mptcp_parse_option() even
>> providing it the relevant sock variable (and that would be a quite
>> invasive change).
>>
>> Perhaps we can mark the pkts/DSS/MPTCP ext as 'bad' using an additional
>> flag and send the reset later? (even at rcvmsg time)
>
> It is going to have to be something like that, but out-of-scope for this
> patch.
>
> Peter.
>
>
>>> @@ -701,18 +691,11 @@ void mptcp_write_options(__be32 *ptr, struct mptcp_out_options *opts)
>>>  		}
>>>
>>>  		if (mpext->use_map) {
>>> -			__sum16 checksum;
>>> -
>>> -			pr_debug("Writing map values");
>>>  			put_unaligned_be64(mpext->data_seq, ptr);
>>>  			ptr += 2;
>>> -			*ptr++ = htonl(mpext->subflow_seq);
>>> -
>>> -			if (mpext->use_checksum)
>>> -				checksum = mpext->checksum;
>>> -			else
>>> -				checksum = TCPOPT_NOP << 8 | TCPOPT_NOP;
>>> -			*ptr = htonl(mpext->data_len << 16 | checksum);
>>> +			put_unaligned_be32(mpext->subflow_seq, ptr);
>>> +			ptr += 1;
>>> +			put_unaligned_be16(mpext->data_len, ptr);
>>
>> I think we should still set 4 bytes here:
>>
>> 	put_unaligned_be32(mpext->subflow_seq << 16 | TCPOPT_NOP << 8 |
>> TCPOPT_NOP, ptr);
>>
>> or we can hit some 'uninit value used' error triggered by syzbot or the
>> like.
>>
>> Cheers,
>>
>> Paolo
>>
>
> _______________________________________________
> mptcp mailing list
> mptcp(a)lists.01.org
> https://lists.01.org/mailman/listinfo/mptcp
>

--
Mat Martineau
Intel

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [MPTCP] [PATCH] mptcp: Remove all traces of checksum support
@ 2019-09-17  9:24 Paolo Abeni
  0 siblings, 0 replies; 5+ messages in thread
From: Paolo Abeni @ 2019-09-17  9:24 UTC (permalink / raw)
  To: mptcp

[-- Attachment #1: Type: text/plain, Size: 2258 bytes --]

Hi,

On Mon, 2019-09-16 at 15:10 -0700, Peter Krystad wrote:
> @@ -152,10 +151,27 @@ void mptcp_parse_option(const unsigned char *ptr, int opsize,
>  				expected_opsize += TCPOLEN_MPTCP_DSS_ACK64;
>  			else
>  				expected_opsize += TCPOLEN_MPTCP_DSS_ACK32;
> +		}
> +
> +		if (mp_opt->use_map) {
> +			if (mp_opt->dsn64)
> +				expected_opsize += TCPOLEN_MPTCP_DSS_MAP64;
> +			else
> +				expected_opsize += TCPOLEN_MPTCP_DSS_MAP32;
> +		}
>  
> -			if (opsize < expected_opsize)
> -				break;
> +		/* RFC 6824, Section 3.3:
> +		 * If a checksum is present, but its use had
> +		 * not been negotiated in the MP_CAPABLE handshake,
> +		 * the checksum field MUST be ignored.
> +		 */
> +		if (opsize != expected_opsize &&
> +		    opsize != expected_opsize + TCPOLEN_MPTCP_DSS_CHECKSUM)
> +			break;

My understanding is that we should look for RFC 6824 bis compliance -
is that correct? 

If so, than we should reset the subflow connection if opsize ==
expected_opsize + TCPOLEN_MPTCP_DSS_CHECKSUM, and just ignore other bad
len. Is that correct? (looks a bit weird to me)

I'm unsure we can reset the stream from mptcp_parse_option() even
providing it the relevant sock variable (and that would be a quite
invasive change).

Perhaps we can mark the pkts/DSS/MPTCP ext as 'bad' using an additional
flag and send the reset later? (even at rcvmsg time) 

> @@ -701,18 +691,11 @@ void mptcp_write_options(__be32 *ptr, struct mptcp_out_options *opts)
>  		}
>  
>  		if (mpext->use_map) {
> -			__sum16 checksum;
> -
> -			pr_debug("Writing map values");
>  			put_unaligned_be64(mpext->data_seq, ptr);
>  			ptr += 2;
> -			*ptr++ = htonl(mpext->subflow_seq);
> -
> -			if (mpext->use_checksum)
> -				checksum = mpext->checksum;
> -			else
> -				checksum = TCPOPT_NOP << 8 | TCPOPT_NOP;
> -			*ptr = htonl(mpext->data_len << 16 | checksum);
> +			put_unaligned_be32(mpext->subflow_seq, ptr);
> +			ptr += 1;
> +			put_unaligned_be16(mpext->data_len, ptr);

I think we should still set 4 bytes here:

	put_unaligned_be32(mpext->subflow_seq << 16 | TCPOPT_NOP << 8 |
TCPOPT_NOP, ptr);
	
or we can hit some 'uninit value used' error triggered by syzbot or the
like.

Cheers,

Paolo


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [MPTCP] [PATCH] mptcp: Remove all traces of checksum support
@ 2019-09-16 22:10 Peter Krystad
  0 siblings, 0 replies; 5+ messages in thread
From: Peter Krystad @ 2019-09-16 22:10 UTC (permalink / raw)
  To: mptcp

[-- Attachment #1: Type: text/plain, Size: 9307 bytes --]

Since checksum support is not planned remove any references
that look it may be supported.

Also re-factor DSS option size calculation and make
DSS option size check for exactly correct lengths.

Signed-off-by: Peter Krystad <peter.krystad(a)linux.intel.com>
---
 net/mptcp/options.c  | 69 +++++++++++++++++---------------------------
 net/mptcp/protocol.c | 13 ++++-----
 net/mptcp/protocol.h |  4 +--
 net/mptcp/subflow.c  |  5 ----
 4 files changed, 32 insertions(+), 59 deletions(-)

diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index b82557af3fae..ec56a25e6948 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -130,7 +130,6 @@ void mptcp_parse_option(const unsigned char *ptr, int opsize,
 	 */
 	case MPTCPOPT_DSS:
 		pr_debug("DSS");
-		mp_opt->dss = 1;
 		ptr++;
 
 		mp_opt->dss_flags = (*ptr++) & MPTCP_DSS_FLAG_MASK;
@@ -152,10 +151,27 @@ void mptcp_parse_option(const unsigned char *ptr, int opsize,
 				expected_opsize += TCPOLEN_MPTCP_DSS_ACK64;
 			else
 				expected_opsize += TCPOLEN_MPTCP_DSS_ACK32;
+		}
+
+		if (mp_opt->use_map) {
+			if (mp_opt->dsn64)
+				expected_opsize += TCPOLEN_MPTCP_DSS_MAP64;
+			else
+				expected_opsize += TCPOLEN_MPTCP_DSS_MAP32;
+		}
 
-			if (opsize < expected_opsize)
-				break;
+		/* RFC 6824, Section 3.3:
+		 * If a checksum is present, but its use had
+		 * not been negotiated in the MP_CAPABLE handshake,
+		 * the checksum field MUST be ignored.
+		 */
+		if (opsize != expected_opsize &&
+		    opsize != expected_opsize + TCPOLEN_MPTCP_DSS_CHECKSUM)
+			break;
 
+		mp_opt->dss = 1;
+
+		if (mp_opt->use_ack) {
 			if (mp_opt->ack64) {
 				mp_opt->data_ack = get_unaligned_be64(ptr);
 				ptr += 8;
@@ -163,19 +179,10 @@ void mptcp_parse_option(const unsigned char *ptr, int opsize,
 				mp_opt->data_ack = get_unaligned_be32(ptr);
 				ptr += 4;
 			}
-
 			pr_debug("data_ack=%llu", mp_opt->data_ack);
 		}
 
 		if (mp_opt->use_map) {
-			if (mp_opt->dsn64)
-				expected_opsize += TCPOLEN_MPTCP_DSS_MAP64;
-			else
-				expected_opsize += TCPOLEN_MPTCP_DSS_MAP32;
-
-			if (opsize < expected_opsize)
-				break;
-
 			if (mp_opt->dsn64) {
 				mp_opt->data_seq = get_unaligned_be64(ptr);
 				ptr += 8;
@@ -190,13 +197,11 @@ void mptcp_parse_option(const unsigned char *ptr, int opsize,
 			mp_opt->data_len = get_unaligned_be16(ptr);
 			ptr += 2;
 
-			/* Checksum not currently supported */
-			mp_opt->checksum = 0;
-
-			pr_debug("data_seq=%llu subflow_seq=%u data_len=%u ck=%u",
+			pr_debug("data_seq=%llu subflow_seq=%u data_len=%u",
 				 mp_opt->data_seq, mp_opt->subflow_seq,
-				 mp_opt->data_len, mp_opt->checksum);
+				 mp_opt->data_len);
 		}
+
 		break;
 
 	/* MPTCPOPT_ADD_ADDR
@@ -390,12 +395,8 @@ static bool mptcp_established_options_dss(struct sock *sk, struct sk_buff *skb,
 
 	if (!skb || (mpext && mpext->use_map)) {
 		unsigned int map_size;
-		bool use_csum;
 
 		map_size = TCPOLEN_MPTCP_DSS_BASE + TCPOLEN_MPTCP_DSS_MAP64;
-		use_csum = subflow_ctx(sk)->use_checksum;
-		if (use_csum)
-			map_size += TCPOLEN_MPTCP_DSS_CHECKSUM;
 
 		if (map_size <= remaining) {
 			remaining -= map_size;
@@ -404,10 +405,8 @@ static bool mptcp_established_options_dss(struct sock *sk, struct sk_buff *skb,
 				opts->ext_copy.data_seq = mpext->data_seq;
 				opts->ext_copy.subflow_seq = mpext->subflow_seq;
 				opts->ext_copy.data_len = mpext->data_len;
-				opts->ext_copy.checksum = mpext->checksum;
 				opts->ext_copy.use_map = 1;
 				opts->ext_copy.dsn64 = mpext->dsn64;
-				opts->ext_copy.use_checksum = use_csum;
 			}
 		} else {
 			opts->ext_copy.use_map = 0;
@@ -573,10 +572,8 @@ void mptcp_incoming_options(struct sock *sk, struct sk_buff *skb,
 		mpext->data_seq = mp_opt->data_seq;
 		mpext->subflow_seq = mp_opt->subflow_seq;
 		mpext->data_len = mp_opt->data_len;
-		mpext->checksum = mp_opt->checksum;
 		mpext->use_map = 1;
 		mpext->dsn64 = mp_opt->dsn64;
-		mpext->use_checksum = mp_opt->use_checksum;
 	}
 
 	if (mp_opt->use_ack) {
@@ -676,12 +673,8 @@ void mptcp_write_options(__be32 *ptr, struct mptcp_out_options *opts)
 		}
 
 		if (mpext->use_map) {
-			pr_debug("Updating DSS length and flags for map");
 			len += TCPOLEN_MPTCP_DSS_MAP64;
 
-			if (mpext->use_checksum)
-				len += TCPOLEN_MPTCP_DSS_CHECKSUM;
-
 			/* Use only 64-bit mapping flags for now, add
 			 * support for optional 32-bit mappings later.
 			 */
@@ -690,10 +683,7 @@ void mptcp_write_options(__be32 *ptr, struct mptcp_out_options *opts)
 				flags |= MPTCP_DSS_DATA_FIN;
 		}
 
-		*ptr++ = htonl((TCPOPT_MPTCP << 24) |
-			       (len  << 16) |
-			       (MPTCPOPT_DSS << 12) |
-			       (flags));
+		*ptr++ = mptcp_option(MPTCPOPT_DSS, len, 0, flags);
 
 		if (mpext->use_ack) {
 			put_unaligned_be64(mpext->data_ack, ptr);
@@ -701,18 +691,11 @@ void mptcp_write_options(__be32 *ptr, struct mptcp_out_options *opts)
 		}
 
 		if (mpext->use_map) {
-			__sum16 checksum;
-
-			pr_debug("Writing map values");
 			put_unaligned_be64(mpext->data_seq, ptr);
 			ptr += 2;
-			*ptr++ = htonl(mpext->subflow_seq);
-
-			if (mpext->use_checksum)
-				checksum = mpext->checksum;
-			else
-				checksum = TCPOPT_NOP << 8 | TCPOPT_NOP;
-			*ptr = htonl(mpext->data_len << 16 | checksum);
+			put_unaligned_be32(mpext->subflow_seq, ptr);
+			ptr += 1;
+			put_unaligned_be16(mpext->data_len, ptr);
 		}
 	}
 }
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 9c019e696fc7..5c6295611d2d 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -156,13 +156,12 @@ static int mptcp_sendmsg_frag(struct sock *sk, struct sock *ssk,
 		mpext->data_seq = msk->write_seq;
 		mpext->subflow_seq = subflow_ctx(ssk)->rel_write_seq;
 		mpext->data_len = ret;
-		mpext->checksum = 0xbeef;
 		mpext->use_map = 1;
 		mpext->dsn64 = 1;
 
-		pr_debug("data_seq=%llu subflow_seq=%u data_len=%u checksum=%u, dsn64=%d",
+		pr_debug("data_seq=%llu subflow_seq=%u data_len=%u dsn64=%d",
 			 mpext->data_seq, mpext->subflow_seq, mpext->data_len,
-			 mpext->checksum, mpext->dsn64);
+			 mpext->dsn64);
 	}
 	/* TODO: else fallback; allocation can fail, but we can't easily retire
 	 * skbs from the write_queue, as we need to roll-back TCP status
@@ -337,9 +336,8 @@ static enum mapping_status mptcp_get_mapping(struct sock *ssk)
 		goto del_out;
 	}
 
-	pr_debug("seq=%llu is64=%d ssn=%u data_len=%u ck=%u",
-		 mpext->data_seq, mpext->dsn64, mpext->subflow_seq,
-		 mpext->data_len, mpext->checksum);
+	pr_debug("seq=%llu is64=%d ssn=%u data_len=%u", mpext->data_seq,
+		 mpext->dsn64, mpext->subflow_seq, mpext->data_len);
 
 	if (mpext->data_len == 0) {
 		pr_err("Infinite mapping not handled");
@@ -912,8 +910,7 @@ static struct socket *mptcp_socket_create_get(struct mptcp_sock *msk)
 	msk->subflow = ssock;
 	subflow = subflow_ctx(msk->subflow->sk);
 	subflow->request_mptcp = 1; /* @@ if MPTCP enabled */
-	subflow->request_cksum = 0; /* checksum not supported */
-	subflow->request_version = 0; /* only v0 supported */
+	subflow->request_version = 0; /* currently only v0 supported */
 
 	sock_hold(ssock->sk);
 
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index 40f0efaef55e..d263b64cfcfd 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -140,7 +140,7 @@ struct subflow_request_sock {
 	struct	tcp_request_sock sk;
 	u8	mp_capable : 1,
 		mp_join : 1,
-		checksum : 1,
+		unused : 1,
 		backup : 1,
 		version : 4;
 	u8	local_id;
@@ -175,14 +175,12 @@ struct subflow_context {
 	u16	map_data_len;
 	u16	request_mptcp : 1,  /* send MP_CAPABLE */
 		request_join : 1,   /* send MP_JOIN */
-		request_cksum : 1,
 		request_bkup : 1,
 		request_version : 4,
 		mp_capable : 1,     /* remote is MPTCP capable */
 		mp_join : 1,        /* remote is JOINing */
 		fourth_ack : 1,     /* send initial DSS */
 		conn_finished : 1,
-		use_checksum : 1,
 		map_valid : 1,
 		backup : 1;
 	u32	remote_nonce;
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
index a49cc5ed1b27..9b39c0e26b26 100644
--- a/net/mptcp/subflow.c
+++ b/net/mptcp/subflow.c
@@ -117,9 +117,6 @@ static void subflow_v4_init_req(struct request_sock *req,
 			subflow_req->version = listener->request_version;
 		else
 			subflow_req->version = rx_opt.mptcp.version;
-		if ((rx_opt.mptcp.flags & MPTCP_CAP_CHECKSUM_REQD) ||
-		    listener->request_cksum)
-			subflow_req->checksum = 1;
 		subflow_req->remote_key = rx_opt.mptcp.sndr_key;
 		pr_debug("syn seq=%u", TCP_SKB_CB(skb)->seq);
 		subflow_req->ssn_offset = TCP_SKB_CB(skb)->seq;
@@ -435,7 +432,6 @@ static int subflow_ulp_init(struct sock *sk)
 	tp->is_mptcp = 1;
 	icsk->icsk_af_ops = &subflow_specific;
 	ctx->tcp_sk_data_ready = sk->sk_data_ready;
-	ctx->use_checksum = 0;
 	sk->sk_data_ready = subflow_data_ready;
 out:
 	return err;
@@ -470,7 +466,6 @@ static void subflow_ulp_clone(const struct request_sock *req,
 	new_ctx->conn = NULL;
 	new_ctx->conn_finished = 1;
 	new_ctx->tcp_sk_data_ready = old_ctx->tcp_sk_data_ready;
-	new_ctx->use_checksum = old_ctx->use_checksum;
 
 	if (subflow_req->mp_capable) {
 		new_ctx->mp_capable = 1;
-- 
2.17.2


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-09-24 18:44 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-17 21:20 [MPTCP] [PATCH] mptcp: Remove all traces of checksum support Peter Krystad
  -- strict thread matches above, loose matches on Subject: below --
2019-09-24 18:44 Peter Krystad
2019-09-17 21:35 Mat Martineau
2019-09-17  9:24 Paolo Abeni
2019-09-16 22:10 Peter Krystad

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.