From 95e74662b2c90b7b692cebe82c344614034a83ce Mon Sep 17 00:00:00 2001 From: kircher Date: Tue, 20 Dec 2022 19:00:20 +0800 Subject: [PATCH] fix the ackdata is always lower than 256 --- ...ck-when-recv-too-many-acks-with-data.patch | 24 +++++++++---------- lwip.spec | 5 +++- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/0046-add-dataack-when-recv-too-many-acks-with-data.patch b/0046-add-dataack-when-recv-too-many-acks-with-data.patch index dbf6c99..a2bf1a3 100644 --- a/0046-add-dataack-when-recv-too-many-acks-with-data.patch +++ b/0046-add-dataack-when-recv-too-many-acks-with-data.patch @@ -1,16 +1,16 @@ -From 25b8974efd98150788896f51d5b9a1e23a82e78b Mon Sep 17 00:00:00 2001 +From bf16309bdb9c2571e91d50cec7b379d93559d573 Mon Sep 17 00:00:00 2001 From: kircher -Date: Tue, 20 Dec 2022 16:36:51 +0800 -Subject: [PATCH] add-dataack-when-recv-too-many-acks-with-data +Date: Tue, 20 Dec 2022 18:52:59 +0800 +Subject: [PATCH] add dataack when recv too many acks with data --- - src/core/tcp_in.c | 21 +++++++++++++++++++++ + src/core/tcp_in.c | 19 +++++++++++++++++++ src/include/lwip/tcp.h | 1 + src/include/lwipopts.h | 2 ++ - 3 files changed, 24 insertions(+) + 3 files changed, 22 insertions(+) diff --git a/src/core/tcp_in.c b/src/core/tcp_in.c -index 78954bd..d1c5a30 100644 +index 78954bd..dcd564b 100644 --- a/src/core/tcp_in.c +++ b/src/core/tcp_in.c @@ -1260,6 +1260,7 @@ tcp_receive(struct tcp_pcb *pcb) @@ -21,7 +21,7 @@ index 78954bd..d1c5a30 100644 LWIP_ASSERT("tcp_receive: invalid pcb", pcb != NULL); LWIP_ASSERT("tcp_receive: wrong state", pcb->state >= ESTABLISHED); -@@ -1337,11 +1338,30 @@ tcp_receive(struct tcp_pcb *pcb) +@@ -1337,11 +1338,28 @@ tcp_receive(struct tcp_pcb *pcb) } } } @@ -31,9 +31,7 @@ index 78954bd..d1c5a30 100644 + if (pcb->rtime >= 0) { + if (pcb->lastack == ackno) { + found_dataack = 1; -+ if ((u8_t)(pcb->dataacks + 1) > pcb->dataacks) { -+ ++pcb->dataacks; -+ } ++ ++pcb->dataacks; + if (pcb->dataacks > MAX_DATA_ACK_NUM) { + tcp_rexmit_fast(pcb); + } @@ -52,7 +50,7 @@ index 78954bd..d1c5a30 100644 } else if (TCP_SEQ_BETWEEN(ackno, pcb->lastack + 1, pcb->snd_nxt)) { /* We come here when the ACK acknowledges new data. */ tcpwnd_size_t acked; -@@ -1367,6 +1387,7 @@ tcp_receive(struct tcp_pcb *pcb) +@@ -1367,6 +1385,7 @@ tcp_receive(struct tcp_pcb *pcb) /* Reset the fast retransmit variables. */ pcb->dupacks = 0; pcb->lastack = ackno; @@ -61,14 +59,14 @@ index 78954bd..d1c5a30 100644 /* Update the congestion control variables (cwnd and ssthresh). */ diff --git a/src/include/lwip/tcp.h b/src/include/lwip/tcp.h -index 2a61776..bb9aabc 100644 +index 2a61776..97cb882 100644 --- a/src/include/lwip/tcp.h +++ b/src/include/lwip/tcp.h @@ -326,6 +326,7 @@ struct tcp_pcb { /* fast retransmit/recovery */ u8_t dupacks; -+ u8_t dataacks; ++ u32_t dataacks; u32_t lastack; /* Highest acknowledged seqno. */ /* congestion avoidance/control variables */ diff --git a/lwip.spec b/lwip.spec index 0a05930..2e7bdec 100644 --- a/lwip.spec +++ b/lwip.spec @@ -4,7 +4,7 @@ Summary: lwip is a small independent implementation of the TCP/IP protocol suite Name: lwip Version: 2.1.3 -Release: 34 +Release: 35 License: BSD URL: http://savannah.nongnu.org/projects/lwip/ Source0: http://download.savannah.nongnu.org/releases/lwip/%{name}-%{version}.zip @@ -135,6 +135,9 @@ cd %{_builddir}/%{name}-%{version}/src %{_libdir}/liblwip.a %changelog +* Tue Dec 20 2022 kircher - 2.1.3-35 +- fix the dataack is always lower than 256 + * Tue Dec 20 2022 kircher - 2.1.3-34 - add dataack when recv too many acks with data -- Gitee