From 645f522a312de31482bfa2e9306a5e7d08a90a76 Mon Sep 17 00:00:00 2001 From: shiyunfei Date: Tue, 9 Jan 2024 17:35:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3sk->sk=5Fsend=5Fhead=E6=8C=87?= =?UTF-8?q?=E9=92=88=E5=8F=AF=E8=83=BD=E4=BD=BF=E7=94=A8=E5=B7=B2=E9=87=8A?= =?UTF-8?q?=E6=94=BEskb=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: shiyunfei --- newip/third_party/linux-5.10/include/net/tcp_nip.h | 6 ++++++ newip/third_party/linux-5.10/net/newip/tcp_nip.c | 1 + newip/third_party/linux-5.10/net/newip/tcp_nip_input.c | 1 + 3 files changed, 8 insertions(+) diff --git a/newip/third_party/linux-5.10/include/net/tcp_nip.h b/newip/third_party/linux-5.10/include/net/tcp_nip.h index 1e30efd..feece7a 100644 --- a/newip/third_party/linux-5.10/include/net/tcp_nip.h +++ b/newip/third_party/linux-5.10/include/net/tcp_nip.h @@ -163,6 +163,12 @@ static inline struct tcp_nip_request_sock *tcp_nip_rsk(const struct request_sock return (struct tcp_nip_request_sock *)req; } +static inline void tcp_nip_modify_send_head(struct sock *sk, const struct sk_buff *skb) +{ + if (tcp_skb_is_last(sk, skb)) + sk->sk_send_head = NULL; +} + /* connect */ int __tcp_nip_connect(struct sock *sk); int _tcp_nip_conn_request(struct request_sock_ops *rsk_ops, diff --git a/newip/third_party/linux-5.10/net/newip/tcp_nip.c b/newip/third_party/linux-5.10/net/newip/tcp_nip.c index 39a2c7f..0d1a771 100644 --- a/newip/third_party/linux-5.10/net/newip/tcp_nip.c +++ b/newip/third_party/linux-5.10/net/newip/tcp_nip.c @@ -1578,6 +1578,7 @@ out: do_fault: if (!skb->len) { + tcp_nip_modify_send_head(sk, skb); tcp_unlink_write_queue(skb, sk); sk_wmem_free_skb(sk, skb); } diff --git a/newip/third_party/linux-5.10/net/newip/tcp_nip_input.c b/newip/third_party/linux-5.10/net/newip/tcp_nip_input.c index 7c2eabf..0fedaf2 100644 --- a/newip/third_party/linux-5.10/net/newip/tcp_nip_input.c +++ b/newip/third_party/linux-5.10/net/newip/tcp_nip_input.c @@ -817,6 +817,7 @@ static int tcp_nip_clean_rtx_queue(struct sock *sk, ktime_t *skb_snd_tstamp) if (*skb_snd_tstamp == 0) *skb_snd_tstamp = skb->tstamp; + tcp_nip_modify_send_head(sk, skb); tcp_unlink_write_queue(skb, sk); sk_wmem_free_skb(sk, skb); } -- Gitee