Message ID | b67052f2a5ba451f12b0e29346a164da06712508.1632900306.git.geliangtang@gmail.com (mailing list archive) |
---|---|
State | Superseded, archived |
Delegated to: | Mat Martineau |
Headers | show |
Series | The infinite mapping support | expand |
On Wed, 29 Sep 2021, Geliang Tang wrote: > This patch added a new member named last_ack_dss_start to the msk to > keep track of the beginning of the last fully-acked data segment. This > would be updated in __mptcp_clean_una. > Can drop this patch, see patch 5 reply for more details. Mat > Suggested-by: Paolo Abeni <pabeni@redhat.com> > Signed-off-by: Geliang Tang <geliangtang@gmail.com> > --- > net/mptcp/protocol.c | 3 +++ > net/mptcp/protocol.h | 1 + > 2 files changed, 4 insertions(+) > > diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c > index 48979cb82126..334bbce69fcb 100644 > --- a/net/mptcp/protocol.c > +++ b/net/mptcp/protocol.c > @@ -1071,6 +1071,7 @@ static void __mptcp_clean_una(struct sock *sk) > WRITE_ONCE(msk->first_pending, mptcp_send_next(sk)); > } > > + msk->last_ack_dss_start = dfrag->data_seq; > dfrag_clear(sk, dfrag); > cleaned = true; > } > @@ -2891,6 +2892,7 @@ struct sock *mptcp_sk_clone(const struct sock *sk, > msk->snd_una = msk->write_seq; > msk->wnd_end = msk->snd_nxt + req->rsk_rcv_wnd; > msk->setsockopt_seq = mptcp_sk(sk)->setsockopt_seq; > + msk->last_ack_dss_start = subflow_req->idsn - 1; > > if (mp_opt->suboptions & OPTIONS_MPTCP_MPC) { > msk->can_ack = true; > @@ -3147,6 +3149,7 @@ void mptcp_finish_connect(struct sock *ssk) > WRITE_ONCE(msk->rcv_wnd_sent, ack_seq); > WRITE_ONCE(msk->can_ack, 1); > WRITE_ONCE(msk->snd_una, msk->write_seq); > + WRITE_ONCE(msk->last_ack_dss_start, subflow->idsn - 1); > > mptcp_pm_new_connection(msk, ssk, 0); > > diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h > index 4807e486e762..7927acf53f06 100644 > --- a/net/mptcp/protocol.h > +++ b/net/mptcp/protocol.h > @@ -224,6 +224,7 @@ struct mptcp_sock { > u64 remote_key; > u64 write_seq; > u64 snd_nxt; > + u64 last_ack_dss_start; > u64 ack_seq; > u64 rcv_wnd_sent; > u64 rcv_data_fin_seq; > -- > 2.31.1 > > > -- Mat Martineau Intel
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 48979cb82126..334bbce69fcb 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1071,6 +1071,7 @@ static void __mptcp_clean_una(struct sock *sk) WRITE_ONCE(msk->first_pending, mptcp_send_next(sk)); } + msk->last_ack_dss_start = dfrag->data_seq; dfrag_clear(sk, dfrag); cleaned = true; } @@ -2891,6 +2892,7 @@ struct sock *mptcp_sk_clone(const struct sock *sk, msk->snd_una = msk->write_seq; msk->wnd_end = msk->snd_nxt + req->rsk_rcv_wnd; msk->setsockopt_seq = mptcp_sk(sk)->setsockopt_seq; + msk->last_ack_dss_start = subflow_req->idsn - 1; if (mp_opt->suboptions & OPTIONS_MPTCP_MPC) { msk->can_ack = true; @@ -3147,6 +3149,7 @@ void mptcp_finish_connect(struct sock *ssk) WRITE_ONCE(msk->rcv_wnd_sent, ack_seq); WRITE_ONCE(msk->can_ack, 1); WRITE_ONCE(msk->snd_una, msk->write_seq); + WRITE_ONCE(msk->last_ack_dss_start, subflow->idsn - 1); mptcp_pm_new_connection(msk, ssk, 0); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 4807e486e762..7927acf53f06 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -224,6 +224,7 @@ struct mptcp_sock { u64 remote_key; u64 write_seq; u64 snd_nxt; + u64 last_ack_dss_start; u64 ack_seq; u64 rcv_wnd_sent; u64 rcv_data_fin_seq;
This patch added a new member named last_ack_dss_start to the msk to keep track of the beginning of the last fully-acked data segment. This would be updated in __mptcp_clean_una. Suggested-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Geliang Tang <geliangtang@gmail.com> --- net/mptcp/protocol.c | 3 +++ net/mptcp/protocol.h | 1 + 2 files changed, 4 insertions(+)