All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Abeni <pabeni@redhat.com>
To: mptcp@lists.linux.dev
Cc: Geliang Tang <geliangtang@gmail.com>
Subject: [PATCH v5 mptcp-next 13/21] Squash-to: "mptcp: receive checksum for DSS"
Date: Tue,  4 May 2021 23:29:23 +0200	[thread overview]
Message-ID: <c7f543b7f9281021a56929fdb0e96e69b862ad5f.1620162984.git.pabeni@redhat.com> (raw)
In-Reply-To: <cover.1620162984.git.pabeni@redhat.com>

Similar to the previous squash to patch, always parse
the DSS option regardless of csum presence.

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
---
 net/mptcp/options.c | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)

diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index 3f43d48ee5bc..310c3887be91 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -165,7 +165,6 @@ static void mptcp_parse_option(const struct sock *sk,
 		mp_opt->use_map = (flags & MPTCP_DSS_HAS_MAP) != 0;
 		mp_opt->ack64 = (flags & MPTCP_DSS_ACK64) != 0;
 		mp_opt->use_ack = (flags & MPTCP_DSS_HAS_ACK);
-		mp_opt->csum_reqd = READ_ONCE(msk->csum_enabled);
 
 		pr_debug("data_fin=%d dsn64=%d use_map=%d ack64=%d use_ack=%d",
 			 mp_opt->data_fin, mp_opt->dsn64,
@@ -186,17 +185,13 @@ static void mptcp_parse_option(const struct sock *sk,
 				expected_opsize += TCPOLEN_MPTCP_DSS_MAP64;
 			else
 				expected_opsize += TCPOLEN_MPTCP_DSS_MAP32;
-
-			if (mp_opt->csum_reqd)
-				expected_opsize += TCPOLEN_MPTCP_DSS_CHECKSUM;
 		}
 
-		/* 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.
+		/* Always parse any csum presence combination, we will enforce
+		 * RFC 8684 Section 3.3.0 checks later in subflow_data_ready
 		 */
-		if (opsize != expected_opsize)
+		if (opsize != expected_opsize &&
+		    opsize != expected_opsize + TCPOLEN_MPTCP_DSS_CHECKSUM)
 			break;
 
 		mp_opt->dss = 1;
@@ -228,14 +223,15 @@ static void mptcp_parse_option(const struct sock *sk,
 			mp_opt->data_len = get_unaligned_be16(ptr);
 			ptr += 2;
 
-			if (mp_opt->csum_reqd) {
+			if (opsize == expected_opsize + TCPOLEN_MPTCP_DSS_CHECKSUM) {
+				mp_opt->csum_reqd = 1;
 				mp_opt->csum = (__force __sum16)get_unaligned_be16(ptr);
 				ptr += 2;
 			}
 
-			pr_debug("data_seq=%llu subflow_seq=%u data_len=%u csum=%u",
+			pr_debug("data_seq=%llu subflow_seq=%u data_len=%u csum=%d:%u",
 				 mp_opt->data_seq, mp_opt->subflow_seq,
-				 mp_opt->data_len, mp_opt->csum);
+				 mp_opt->data_len, mp_opt->csum_reqd, mp_opt->csum);
 		}
 
 		break;
-- 
2.26.2


  parent reply	other threads:[~2021-05-04 21:30 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-04 21:29 [PATCH v5 mptcp-next 00/21] mptcp: data checksum support Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 01/21] mptcp: generate the data checksum Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 02/21] Squash-to: "mptcp: generate the data checksum" Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 03/21] mptcp: add csum_reqd in mptcp_out_options Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 04/21] mptcp: send out checksum for MP_CAPABLE with data Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 05/21] Squash-to: "mptcp: send out checksum for MP_CAPABLE with data" Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 06/21] mptcp: send out checksum for DSS Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 07/21] Squash-to "mptcp: send out checksum for DSS" Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 08/21] mptcp: add sk parameter for mptcp_parse_option Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 09/21] mptcp: add csum_reqd in mptcp_options_received Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 10/21] mptcp: receive checksum for MP_CAPABLE with data Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 11/21] Squash-to: "mptcp: receive checksum for MP_CAPABLE with data" Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 12/21] mptcp: receive checksum for DSS Paolo Abeni
2021-05-04 21:29 ` Paolo Abeni [this message]
2021-05-04 21:29 ` [PATCH v5 mptcp-next 14/21] mptcp: validate the data checksum Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 15/21] Squash-to: " Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 16/21] mptcp: cleanup error path in subflow_check_data_avail() Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 17/21] mptcp: tune re-injections for csum enabled mode Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 18/21] mptcp: add the mib for data checksum Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 19/21] mptcp: add a new sysctl checksum_enabled Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 20/21] selftests: mptcp: enable checksum in mptcp_connect.sh Paolo Abeni
2021-05-04 21:29 ` [PATCH v5 mptcp-next 21/21] selftests: mptcp: enable checksum in mptcp_join.sh Paolo Abeni
2021-05-04 21:41 ` [PATCH v5 mptcp-next 00/21] mptcp: data checksum support Paolo Abeni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c7f543b7f9281021a56929fdb0e96e69b862ad5f.1620162984.git.pabeni@redhat.com \
    --to=pabeni@redhat.com \
    --cc=geliangtang@gmail.com \
    --cc=mptcp@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.