29 lines
871 B
C
29 lines
871 B
C
|
// SPDX-License-Identifier: GPL-2.0
|
||
|
/* MPTCP Fast Open Mechanism
|
||
|
*
|
||
|
* Copyright (c) 2021-2022, Dmytro SHYTYI
|
||
|
*/
|
||
|
|
||
|
#include "protocol.h"
|
||
|
|
||
|
void mptcp_fastopen_gen_msk_ackseq(struct mptcp_sock *msk, struct mptcp_subflow_context *subflow,
|
||
|
const struct mptcp_options_received *mp_opt)
|
||
|
{
|
||
|
struct sock *sk = (struct sock *)msk;
|
||
|
struct sk_buff *skb;
|
||
|
|
||
|
mptcp_data_lock(sk);
|
||
|
skb = skb_peek_tail(&sk->sk_receive_queue);
|
||
|
if (skb) {
|
||
|
WARN_ON_ONCE(MPTCP_SKB_CB(skb)->end_seq);
|
||
|
pr_debug("msk %p moving seq %llx -> %llx end_seq %llx -> %llx", sk,
|
||
|
MPTCP_SKB_CB(skb)->map_seq, MPTCP_SKB_CB(skb)->map_seq + msk->ack_seq,
|
||
|
MPTCP_SKB_CB(skb)->end_seq, MPTCP_SKB_CB(skb)->end_seq + msk->ack_seq);
|
||
|
MPTCP_SKB_CB(skb)->map_seq += msk->ack_seq;
|
||
|
MPTCP_SKB_CB(skb)->end_seq += msk->ack_seq;
|
||
|
}
|
||
|
|
||
|
pr_debug("msk=%p ack_seq=%llx", msk, msk->ack_seq);
|
||
|
mptcp_data_unlock(sk);
|
||
|
}
|