mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-29 23:53:55 +08:00
Merge branch 'mptcp-a-bunch-of-assorted-fixes'
Paolo Abeni says: ==================== mptcp: a bunch of assorted fixes This series pulls a few fixes for the MPTCP datapath. Most issues addressed here has been recently introduced with the recent reworks, with the notable exception of the first patch, which addresses an issue present since the early days ==================== Link: https://lore.kernel.org/r/cover.1608114076.git.pabeni@redhat.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
86eb09b63d
@ -875,10 +875,13 @@ static void ack_update_msk(struct mptcp_sock *msk,
|
||||
|
||||
new_wnd_end = new_snd_una + tcp_sk(ssk)->snd_wnd;
|
||||
|
||||
if (after64(new_wnd_end, msk->wnd_end)) {
|
||||
if (after64(new_wnd_end, msk->wnd_end))
|
||||
msk->wnd_end = new_wnd_end;
|
||||
__mptcp_wnd_updated(sk, ssk);
|
||||
}
|
||||
|
||||
/* this assumes mptcp_incoming_options() is invoked after tcp_ack() */
|
||||
if (after64(msk->wnd_end, READ_ONCE(msk->snd_nxt)) &&
|
||||
sk_stream_memory_free(ssk))
|
||||
__mptcp_check_push(sk, ssk);
|
||||
|
||||
if (after64(new_snd_una, old_snd_una)) {
|
||||
msk->snd_una = new_snd_una;
|
||||
@ -944,8 +947,8 @@ void mptcp_incoming_options(struct sock *sk, struct sk_buff *skb)
|
||||
* helpers are cheap.
|
||||
*/
|
||||
mptcp_data_lock(subflow->conn);
|
||||
if (mptcp_send_head(subflow->conn))
|
||||
__mptcp_wnd_updated(subflow->conn, sk);
|
||||
if (sk_stream_memory_free(sk))
|
||||
__mptcp_check_push(subflow->conn, sk);
|
||||
__mptcp_data_acked(subflow->conn);
|
||||
mptcp_data_unlock(subflow->conn);
|
||||
return;
|
||||
|
@ -1658,6 +1658,7 @@ static int mptcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
|
||||
frag_truesize += psize;
|
||||
pfrag->offset += frag_truesize;
|
||||
WRITE_ONCE(msk->write_seq, msk->write_seq + psize);
|
||||
msk->tx_pending_data += psize;
|
||||
|
||||
/* charge data on mptcp pending queue to the msk socket
|
||||
* Note: we charge such data both to sk and ssk
|
||||
@ -1683,10 +1684,8 @@ wait_for_memory:
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (copied) {
|
||||
msk->tx_pending_data += copied;
|
||||
if (copied)
|
||||
mptcp_push_pending(sk, msg->msg_flags);
|
||||
}
|
||||
|
||||
out:
|
||||
release_sock(sk);
|
||||
@ -2119,7 +2118,7 @@ void __mptcp_close_ssk(struct sock *sk, struct sock *ssk,
|
||||
|
||||
list_del(&subflow->node);
|
||||
|
||||
lock_sock(ssk);
|
||||
lock_sock_nested(ssk, SINGLE_DEPTH_NESTING);
|
||||
|
||||
/* if we are invoked by the msk cleanup code, the subflow is
|
||||
* already orphaned
|
||||
@ -2699,6 +2698,8 @@ struct sock *mptcp_sk_clone(const struct sock *sk,
|
||||
sock_reset_flag(nsk, SOCK_RCU_FREE);
|
||||
/* will be fully established after successful MPC subflow creation */
|
||||
inet_sk_state_store(nsk, TCP_SYN_RECV);
|
||||
|
||||
security_inet_csk_clone(nsk, req);
|
||||
bh_unlock_sock(nsk);
|
||||
|
||||
/* keep a single reference */
|
||||
@ -2913,7 +2914,7 @@ void __mptcp_data_acked(struct sock *sk)
|
||||
mptcp_schedule_work(sk);
|
||||
}
|
||||
|
||||
void __mptcp_wnd_updated(struct sock *sk, struct sock *ssk)
|
||||
void __mptcp_check_push(struct sock *sk, struct sock *ssk)
|
||||
{
|
||||
if (!mptcp_send_head(sk))
|
||||
return;
|
||||
|
@ -503,7 +503,7 @@ void mptcp_rcv_space_init(struct mptcp_sock *msk, const struct sock *ssk);
|
||||
void mptcp_data_ready(struct sock *sk, struct sock *ssk);
|
||||
bool mptcp_finish_join(struct sock *sk);
|
||||
bool mptcp_schedule_work(struct sock *sk);
|
||||
void __mptcp_wnd_updated(struct sock *sk, struct sock *ssk);
|
||||
void __mptcp_check_push(struct sock *sk, struct sock *ssk);
|
||||
void __mptcp_data_acked(struct sock *sk);
|
||||
void mptcp_subflow_eof(struct sock *sk);
|
||||
bool mptcp_update_rcv_data_fin(struct mptcp_sock *msk, u64 data_fin_seq, bool use_64bit);
|
||||
|
@ -287,7 +287,7 @@ run_test 10 10 0 0 "balanced bwidth"
|
||||
run_test 10 10 1 50 "balanced bwidth with unbalanced delay"
|
||||
|
||||
# we still need some additional infrastructure to pass the following test-cases
|
||||
# run_test 30 10 0 0 "unbalanced bwidth"
|
||||
# run_test 30 10 1 50 "unbalanced bwidth with unbalanced delay"
|
||||
# run_test 30 10 50 1 "unbalanced bwidth with opposed, unbalanced delay"
|
||||
run_test 30 10 0 0 "unbalanced bwidth"
|
||||
run_test 30 10 1 50 "unbalanced bwidth with unbalanced delay"
|
||||
run_test 30 10 50 1 "unbalanced bwidth with opposed, unbalanced delay"
|
||||
exit $ret
|
||||
|
Loading…
Reference in New Issue
Block a user