Skip to content

Commit 31bf11d

Browse files
Paolo Abenikuba-moo
authored andcommitted
mptcp: introduce MAPPING_BAD_CSUM
This allow moving a couple of conditional out of the fast path, making the code more easy to follow and will simplify the next patch. Fixes: ae66fb2 ("mptcp: Do TCP fallback on early DSS checksum failure") Signed-off-by: Paolo Abeni <[email protected]> Signed-off-by: Mat Martineau <[email protected]> Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 0c1f78a commit 31bf11d

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

net/mptcp/subflow.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -843,7 +843,8 @@ enum mapping_status {
843843
MAPPING_INVALID,
844844
MAPPING_EMPTY,
845845
MAPPING_DATA_FIN,
846-
MAPPING_DUMMY
846+
MAPPING_DUMMY,
847+
MAPPING_BAD_CSUM
847848
};
848849

849850
static void dbg_bad_map(struct mptcp_subflow_context *subflow, u32 ssn)
@@ -958,9 +959,7 @@ static enum mapping_status validate_data_csum(struct sock *ssk, struct sk_buff *
958959
subflow->map_data_csum);
959960
if (unlikely(csum)) {
960961
MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_DATACSUMERR);
961-
if (subflow->mp_join || subflow->valid_csum_seen)
962-
subflow->send_mp_fail = 1;
963-
return subflow->mp_join ? MAPPING_INVALID : MAPPING_DUMMY;
962+
return MAPPING_BAD_CSUM;
964963
}
965964

966965
subflow->valid_csum_seen = 1;
@@ -1182,10 +1181,8 @@ static bool subflow_check_data_avail(struct sock *ssk)
11821181

11831182
status = get_mapping_status(ssk, msk);
11841183
trace_subflow_check_data_avail(status, skb_peek(&ssk->sk_receive_queue));
1185-
if (unlikely(status == MAPPING_INVALID))
1186-
goto fallback;
1187-
1188-
if (unlikely(status == MAPPING_DUMMY))
1184+
if (unlikely(status == MAPPING_INVALID || status == MAPPING_DUMMY ||
1185+
status == MAPPING_BAD_CSUM))
11891186
goto fallback;
11901187

11911188
if (status != MAPPING_OK)
@@ -1227,7 +1224,10 @@ static bool subflow_check_data_avail(struct sock *ssk)
12271224
fallback:
12281225
if (!__mptcp_check_fallback(msk)) {
12291226
/* RFC 8684 section 3.7. */
1230-
if (subflow->send_mp_fail) {
1227+
if (status == MAPPING_BAD_CSUM &&
1228+
(subflow->mp_join || subflow->valid_csum_seen)) {
1229+
subflow->send_mp_fail = 1;
1230+
12311231
if (!READ_ONCE(msk->allow_infinite_fallback)) {
12321232
ssk->sk_err = EBADMSG;
12331233
tcp_set_state(ssk, TCP_CLOSE);

0 commit comments

Comments
 (0)