1 Star 0 Fork 48

yinbin6/lwip

forked from src-openEuler/lwip 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0169-pingpong-fix-send-dup-ack.patch 1.68 KB
一键复制 编辑 原始数据 按行查看 历史
jinag12 提交于 2024-09-30 18:15 . pingpong: fix send dup ack in fast timer
From c46244f54dba29e5a3c40ef276022994b7994f82 Mon Sep 17 00:00:00 2001
From: jiangheng <jiangheng14@huawei.com>
Date: Mon, 30 Sep 2024 18:13:21 +0800
Subject: [PATCH] pingpong: fix send dup ack
---
src/core/tcp.c | 11 ++++++-----
src/core/tcp_in.c | 3 +--
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/core/tcp.c b/src/core/tcp.c
index 4a3c031..849a210 100644
--- a/src/core/tcp.c
+++ b/src/core/tcp.c
@@ -1702,13 +1702,14 @@ tcp_fasttmr_start:
if (pcb->last_timer != tcp_timer_ctr) {
struct tcp_pcb *next;
pcb->last_timer = tcp_timer_ctr;
-#if !GAZELLE_TCP_PINGPONG_MODE
- /* send delayed ACKs */
- if (pcb->flags & TF_ACK_DELAY) {
-#else
- if (!tcp_in_pingpong(pcb) || TIME_BEFORE(pcb->lrcvtime + TCP_ATO_MS, sys_now())) {
+#if GAZELLE_TCP_PINGPONG_MODE
+ if (tcp_in_pingpong(pcb) && TIME_BEFORE(pcb->lrcvtime + TCP_ATO_MS, sys_now())) {
tcp_exit_pingpong(pcb);
+ tcp_set_flags(pcb, TF_ACK_DELAY);
+ }
#endif
+ /* send delayed ACKs */
+ if (pcb->flags & TF_ACK_DELAY) {
LWIP_DEBUGF(TCP_DEBUG, ("tcp_fasttmr: delayed ACK\n"));
MIB2_STATS_INC(mib2.tcpdelayackcnt);
tcp_ack_now(pcb);
diff --git a/src/core/tcp_in.c b/src/core/tcp_in.c
index 1751561..fa2a88b 100644
--- a/src/core/tcp_in.c
+++ b/src/core/tcp_in.c
@@ -1767,8 +1767,7 @@ tcp_receive(struct tcp_pcb *pcb)
/* Acknowledge the segment(s). */
#if GAZELLE_TCP_PINGPONG_MODE
if (tcp_in_pingpong(pcb)) {
- tcp_clear_flags(pcb, TF_ACK_NOW);
- tcp_set_flags(pcb, TF_ACK_DELAY);
+ tcp_clear_flags(pcb, TF_ACK_NOW | TF_ACK_DELAY);
} else {
tcp_ack(pcb);
}
--
2.33.0
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/yinbin6/lwip.git
git@gitee.com:yinbin6/lwip.git
yinbin6
lwip
lwip
master

搜索帮助