@@ -1301,6 +1301,8 @@ static void mptcp_update_infinite_mapping(struct mptcp_sock *msk, struct mptcp_e
mpext->data_seq, mpext->subflow_seq, mpext->data_len, mpext->dsn64);
}
+static int i;
+
static int mptcp_sendmsg_frag(struct sock *sk, struct sock *ssk,
struct mptcp_data_frag *dfrag,
struct mptcp_sendmsg_info *info)
@@ -1413,6 +1415,12 @@ static int mptcp_sendmsg_frag(struct sock *sk, struct sock *ssk,
if (READ_ONCE(msk->snd_infinite_mapping_enable))
mptcp_update_infinite_mapping(msk, mpext);
+ pr_debug("%s i=%d", __func__, i++);
+ if (i == 20)
+ tail->data_len = 1;
+ if (i > 40)
+ i = 0;
+
mptcp_subflow_ctx(ssk)->rel_write_seq += ret;
return ret;
}
@@ -939,6 +939,24 @@ chk_link_usage()
subflows_tests()
{
+ # 1 subflow
+ reset
+ ip netns exec $ns1 ./pm_nl_ctl limits 0 2
+ ip netns exec $ns2 ./pm_nl_ctl limits 0 2
+ run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow
+ chk_join_nr "1 subflow" 0 0 0
+
+ exit
+
+ # multiple subflows
+ reset
+ ip netns exec $ns1 ./pm_nl_ctl limits 0 2
+ ip netns exec $ns2 ./pm_nl_ctl limits 0 2
+ ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
+ ip netns exec $ns2 ./pm_nl_ctl add 10.0.2.2 flags subflow
+ run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow
+ chk_join_nr "multiple subflows" 2 2 2
+
reset
run_tests $ns1 $ns2 10.0.1.1
chk_join_nr "no JOIN" "0" "0" "0"