sync code same as 2203LTS

(cherry picked from commit c1ff1e7f84d797bcba1407e67af293264be5eb3c)
This commit is contained in:
jiangheng 2023-06-15 16:01:52 +08:00 committed by openeuler-sync-bot
parent 6f65059b9a
commit 029c5c3f34
47 changed files with 1892 additions and 1130 deletions

File diff suppressed because it is too large Load Diff

View File

@ -199,7 +199,7 @@ index b8a0d28..fc4a9fd 100644
+ return 0;
+ }
+
+ ENQUEUE_PTRS(r, &r[1], prod, obj_table, n, void *);
+ __rte_ring_enqueue_elems(r, prod, obj_table, sizeof(void *), n);
+
+ r->prod.tail = prod + n;
+
@ -220,7 +220,7 @@ index b8a0d28..fc4a9fd 100644
+ return 0;
+ }
+
+ DEQUEUE_PTRS(r, &r[1], cons, obj_table, n, void *);
+ __rte_ring_dequeue_elems(r, cons, obj_table, sizeof(void *), n);
+
+ r->cons.tail = cons + n;
+

View File

@ -0,0 +1,57 @@
From 35300925c26ce9eba9f4f1c9a4181708da771392 Mon Sep 17 00:00:00 2001
From: Honggang LI <honggangli@163.com>
Date: Tue, 12 Jul 2022 10:15:36 +0800
Subject: [PATCH] Replace gettid() with syscall(SYS_gettid)
Remove gettid() to address a backport issue for gazelle library.
Signed-off-by: Honggang LI <honggangli@163.com>
---
src/include/arch/cc.h | 4 ++--
src/include/lwiplog.h | 3 +--
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/src/include/arch/cc.h b/src/include/arch/cc.h
index 222b0c9..aa18573 100644
--- a/src/include/arch/cc.h
+++ b/src/include/arch/cc.h
@@ -62,7 +62,7 @@ void alloc_memp_##name##_base(void) \
memp_pools[MEMP_##name] = &memp_ ## name; \
\
char mpname[MEMZONE_NAMESIZE] = {0}; \
- snprintf(mpname, MEMZONE_NAMESIZE, "%d_%s", gettid(), #name); \
+ snprintf(mpname, MEMZONE_NAMESIZE, "%d_%s", (int)syscall(SYS_gettid), #name); \
memp_memory_##name##_base = \
sys_hugepage_malloc(mpname, LWIP_MEM_ALIGN_BUFFER(__size)); \
memp_pools[MEMP_##name]->base = memp_memory_##name##_base; \
@@ -73,7 +73,7 @@ PER_THREAD uint8_t *variable_name; \
void alloc_memory_##variable_name(void) \
{ \
char mpname[MEMZONE_NAMESIZE] = {0}; \
- snprintf(mpname, MEMZONE_NAMESIZE, "%d_%s", gettid(), #variable_name); \
+ snprintf(mpname, MEMZONE_NAMESIZE, "%d_%s", (int)syscall(SYS_gettid), #variable_name); \
(variable_name) = \
sys_hugepage_malloc(mpname, LWIP_MEM_ALIGN_BUFFER(size)); \
}
diff --git a/src/include/lwiplog.h b/src/include/lwiplog.h
index 6fccac8..011ed21 100644
--- a/src/include/lwiplog.h
+++ b/src/include/lwiplog.h
@@ -35,13 +35,12 @@
#include <stdio.h>
#include <sys/syscall.h>
+#include <unistd.h>
#include <rte_log.h>
#include "lwipopts.h"
-extern int gettid(void);
-
#if USE_DPDK_LOG
#define LWIP_LOG_WARN LWIP_DBG_LEVEL_WARNING
--
2.31.1

View File

@ -1,17 +1,17 @@
From ce10beab87dafafea4f54bb98892615461b8e7ef Mon Sep 17 00:00:00 2001
From ab62f970793c257c712c357a6976b9aca2e63b98 Mon Sep 17 00:00:00 2001
From: wu-changsheng <wuchangsheng2@huawei.com>
Date: Tue, 26 Jul 2022 17:49:36 +0800
Subject: [PATCH] del-redundant-wait_close-and-move-epoll_events-pos
Date: Tue, 26 Jul 2022 17:36:29 +0800
Subject: [PATCH] del redundant wait_close and move epoll_events pos
---
src/include/lwipsock.h | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/include/lwipsock.h b/src/include/lwipsock.h
index c10ae83..c6702fc 100644
index 500292d..16e0dd3 100644
--- a/src/include/lwipsock.h
+++ b/src/include/lwipsock.h
@@ -99,12 +99,11 @@ struct lwip_sock {
@@ -98,12 +98,11 @@ struct lwip_sock {
struct list_node recv_list __rte_cache_aligned;
struct list_node event_list __rte_cache_aligned;
struct list_node send_list __rte_cache_aligned;

View File

@ -1,7 +1,18 @@
diff -Nur lwip-2.1.3-org/src/api/api_msg.c lwip-2.1.3/src/api/api_msg.c
--- lwip-2.1.3-org/src/api/api_msg.c 2022-09-21 14:18:31.456000000 +0000
+++ lwip-2.1.3/src/api/api_msg.c 2022-09-21 14:19:58.852000000 +0000
@@ -1417,7 +1417,7 @@
From b8c388a7adef4dc53d3bb135102da64bf8a08b76 Mon Sep 17 00:00:00 2001
From: wuchangsheng <wuchangsheng2@huawei.com>
Date: Thu, 6 Oct 2022 15:57:33 +0800
Subject: [PATCH] modify-EISCONN-condition
---
src/api/api_msg.c | 2 +-
src/include/lwipsock.h | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/api/api_msg.c b/src/api/api_msg.c
index 7839526..2dded75 100644
--- a/src/api/api_msg.c
+++ b/src/api/api_msg.c
@@ -1417,7 +1417,7 @@ lwip_netconn_do_connect(void *m)
/* Prevent connect while doing any other action. */
if (msg->conn->state == NETCONN_CONNECT) {
err = ERR_ALREADY;
@ -10,10 +21,11 @@ diff -Nur lwip-2.1.3-org/src/api/api_msg.c lwip-2.1.3/src/api/api_msg.c
err = ERR_ISCONN;
} else {
setup_tcp(msg->conn);
diff -Nur lwip-2.1.3-org/src/include/lwipsock.h lwip-2.1.3/src/include/lwipsock.h
--- lwip-2.1.3-org/src/include/lwipsock.h 2022-09-21 14:18:31.440000000 +0000
+++ lwip-2.1.3/src/include/lwipsock.h 2022-09-21 14:22:30.404000000 +0000
@@ -98,6 +98,8 @@
diff --git a/src/include/lwipsock.h b/src/include/lwipsock.h
index 16e0dd3..3c5c44b 100644
--- a/src/include/lwipsock.h
+++ b/src/include/lwipsock.h
@@ -98,6 +98,8 @@ struct lwip_sock {
struct list_node recv_list __rte_cache_aligned;
struct list_node event_list __rte_cache_aligned;
struct list_node send_list __rte_cache_aligned;
@ -22,3 +34,6 @@ diff -Nur lwip-2.1.3-org/src/include/lwipsock.h lwip-2.1.3/src/include/lwipsock.
uint32_t epoll_events; /* registered events, EPOLLONESHOT write frequently */
char pad __rte_cache_aligned;
--
2.27.0

View File

@ -1,7 +1,7 @@
From 464de9f32488b59d927378cdcc2d08d402af3729 Mon Sep 17 00:00:00 2001
From a554661e9dd189f2d4b5dee8970fd009db89d9aa Mon Sep 17 00:00:00 2001
From: wuchangsheng <wuchangsheng2@huawei.com>
Date: Thu, 6 Oct 2022 17:42:58 +0800
Subject: [PATCH] per-thread-reassdata-variables
Date: Thu, 6 Oct 2022 17:33:16 +0800
Subject: [PATCH] per thread reassdata variables
---
src/core/ipv4/ip4_frag.c | 5 +++++

View File

@ -1,7 +1,7 @@
From d062b986786b9b1abf43ec74d1adfabb92463fd0 Mon Sep 17 00:00:00 2001
From ec2f5414c6c98b63376e4bce9534abc5c01ce13c Mon Sep 17 00:00:00 2001
From: wuchangsheng <wuchangsheng2@huawei.com>
Date: Thu, 6 Oct 2022 18:54:52 +0800
Subject: [PATCH] fix-EISCONN-err-and-remove-same-customized-modificat
Date: Thu, 6 Oct 2022 18:47:06 +0800
Subject: [PATCH] fix EISCONN err and remove same customized modification
---
src/api/api_msg.c | 22 ++--------------------
@ -9,10 +9,10 @@ Subject: [PATCH] fix-EISCONN-err-and-remove-same-customized-modificat
2 files changed, 6 insertions(+), 49 deletions(-)
diff --git a/src/api/api_msg.c b/src/api/api_msg.c
index 3b5075c..65b6309 100644
index 2dded75..1fedaad 100644
--- a/src/api/api_msg.c
+++ b/src/api/api_msg.c
@@ -1331,25 +1331,7 @@ lwip_netconn_do_connected(void *arg, struct tcp_pcb *pcb, err_t err)
@@ -1334,25 +1334,7 @@ lwip_netconn_do_connected(void *arg, struct tcp_pcb *pcb, err_t err)
}
#if USE_LIBOS
@ -39,7 +39,7 @@ index 3b5075c..65b6309 100644
#endif
LWIP_ASSERT("conn->state == NETCONN_CONNECT", conn->state == NETCONN_CONNECT);
@@ -1414,7 +1396,7 @@ lwip_netconn_do_connect(void *m)
@@ -1417,7 +1399,7 @@ lwip_netconn_do_connect(void *m)
/* Prevent connect while doing any other action. */
if (msg->conn->state == NETCONN_CONNECT) {
err = ERR_ALREADY;
@ -49,10 +49,10 @@ index 3b5075c..65b6309 100644
} else {
setup_tcp(msg->conn);
diff --git a/src/include/lwipsock.h b/src/include/lwipsock.h
index 202a15e..4736847 100644
index 3c5c44b..912d471 100644
--- a/src/include/lwipsock.h
+++ b/src/include/lwipsock.h
@@ -94,13 +94,14 @@ struct lwip_sock {
@@ -93,13 +93,14 @@ struct lwip_sock {
#endif
#if USE_LIBOS
@ -68,7 +68,7 @@ index 202a15e..4736847 100644
uint32_t epoll_events; /* registered events, EPOLLONESHOT write frequently */
char pad __rte_cache_aligned;
@@ -125,38 +126,12 @@ struct lwip_sock {
@@ -124,38 +125,12 @@ struct lwip_sock {
#if USE_LIBOS
extern uint32_t sockets_num;
extern struct lwip_sock *sockets;

View File

@ -1,15 +1,15 @@
From b18cb7d02c10d15873578d61665507f2e341ebe3 Mon Sep 17 00:00:00 2001
From 68c1fe8794077eab032b542094608338947f3d4f Mon Sep 17 00:00:00 2001
From: wuchangsheng <wuchangsheng2@huawei.com>
Date: Thu, 6 Oct 2022 19:52:43 +0800
Subject: [PATCH] refactor tcp new port
Date: Thu, 6 Oct 2022 19:27:41 +0800
Subject: [PATCH] fix tcp new port
---
src/core/tcp.c | 87 +++++++++++++++++++++++++++++-------------
src/include/reg_sock.h | 3 ++
2 files changed, 63 insertions(+), 27 deletions(-)
src/include/reg_sock.h | 1 +
2 files changed, 61 insertions(+), 27 deletions(-)
diff --git a/src/core/tcp.c b/src/core/tcp.c
index 04a7c07..c584585 100644
index b65ab33..436ef85 100644
--- a/src/core/tcp.c
+++ b/src/core/tcp.c
@@ -202,13 +202,26 @@ PER_THREAD u8_t tcp_active_pcbs_changed;
@ -47,7 +47,7 @@ index 04a7c07..c584585 100644
#endif
LWIP_ASSERT("tcp_free: LISTEN", pcb->state != LISTEN);
#if LWIP_TCP_PCB_NUM_EXT_ARGS
@@ -745,7 +759,11 @@ tcp_bind(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
@@ -746,7 +760,11 @@ tcp_bind(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
#endif /* LWIP_IPV6 && LWIP_IPV6_SCOPES */
if (port == 0) {
@ -59,7 +59,7 @@ index 04a7c07..c584585 100644
if (port == 0) {
return ERR_BUF;
}
@@ -1056,33 +1074,43 @@ tcp_recved(struct tcp_pcb *pcb, u16_t len)
@@ -1057,33 +1075,43 @@ tcp_recved(struct tcp_pcb *pcb, u16_t len)
*
* @return a new (free) local TCP port number
*/
@ -122,7 +122,7 @@ index 04a7c07..c584585 100644
pthread_mutex_unlock(&g_tcp_port_mutex);
return tmp_port;
@@ -1168,7 +1196,11 @@ tcp_connect(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port,
@@ -1169,7 +1197,11 @@ tcp_connect(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port,
old_local_port = pcb->local_port;
if (pcb->local_port == 0) {
@ -134,7 +134,7 @@ index 04a7c07..c584585 100644
if (pcb->local_port == 0) {
return ERR_BUF;
}
@@ -1195,10 +1227,6 @@ tcp_connect(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port,
@@ -1196,10 +1228,6 @@ tcp_connect(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port,
#endif /* SO_REUSE */
}
@ -145,7 +145,7 @@ index 04a7c07..c584585 100644
iss = tcp_next_iss(pcb);
pcb->rcv_nxt = 0;
pcb->snd_nxt = iss;
@@ -1226,6 +1254,10 @@ tcp_connect(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port,
@@ -1227,6 +1255,10 @@ tcp_connect(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port,
/* Send a SYN together with the MSS option. */
ret = tcp_enqueue_flags(pcb, TCP_SYN);
if (ret == ERR_OK) {
@ -156,7 +156,7 @@ index 04a7c07..c584585 100644
/* SYN segment was enqueued, changed the pcbs state now */
pcb->state = SYN_SENT;
if (old_local_port != 0) {
@@ -2273,10 +2305,6 @@ tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb)
@@ -2277,10 +2309,6 @@ tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb)
LWIP_ASSERT("tcp_pcb_remove: invalid pcb", pcb != NULL);
LWIP_ASSERT("tcp_pcb_remove: invalid pcblist", pcblist != NULL);
@ -167,7 +167,7 @@ index 04a7c07..c584585 100644
TCP_RMV(pcblist, pcb);
tcp_pcb_purge(pcb);
@@ -2297,6 +2325,11 @@ tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb)
@@ -2301,6 +2329,11 @@ tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb)
#endif /* TCP_QUEUE_OOSEQ */
}
@ -180,19 +180,10 @@ index 04a7c07..c584585 100644
/* reset the local port to prevent the pcb from being 'bound' */
pcb->local_port = 0;
diff --git a/src/include/reg_sock.h b/src/include/reg_sock.h
index 76673da..5d5710d 100644
index 76673da..e349e85 100644
--- a/src/include/reg_sock.h
+++ b/src/include/reg_sock.h
@@ -33,6 +33,8 @@
#ifndef __REG_SOCK_H__
#define __REG_SOCK_H__
+#include <stdbool.h>
+
enum reg_ring_type {
REG_RING_TCP_LISTEN = 0,
REG_RING_TCP_LISTEN_CLOSE,
@@ -58,5 +60,6 @@ struct reg_ring_msg {
@@ -58,5 +58,6 @@ struct reg_ring_msg {
};
extern int vdev_reg_xmit(enum reg_ring_type type, struct gazelle_quintuple *qtuple);

View File

@ -1,6 +1,6 @@
From 0db924042e5d5750b81081634a8c261d631c9d89 Mon Sep 17 00:00:00 2001
From 87166f699e0febd36b81d914713b770119ead471 Mon Sep 17 00:00:00 2001
From: wuchangsheng <wuchangsheng2@huawei.com>
Date: Thu, 6 Oct 2022 20:23:20 +0800
Date: Thu, 6 Oct 2022 20:16:06 +0800
Subject: [PATCH] refactor add event, limit send pkts num
---
@ -10,10 +10,10 @@ Subject: [PATCH] refactor add event, limit send pkts num
3 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/src/api/sockets.c b/src/api/sockets.c
index fe17c29..f84127c 100644
index 4d4cea1..d5b69eb 100644
--- a/src/api/sockets.c
+++ b/src/api/sockets.c
@@ -2659,7 +2659,7 @@ event_callback(struct netconn *conn, enum netconn_evt evt, u16_t len)
@@ -2665,7 +2665,7 @@ event_callback(struct netconn *conn, enum netconn_evt evt, u16_t len)
}
#if USE_LIBOS
if (conn->acceptmbox != NULL && !sys_mbox_empty(conn->acceptmbox)) {
@ -22,7 +22,7 @@ index fe17c29..f84127c 100644
}
#endif
break;
@@ -2680,7 +2680,7 @@ event_callback(struct netconn *conn, enum netconn_evt evt, u16_t len)
@@ -2686,7 +2686,7 @@ event_callback(struct netconn *conn, enum netconn_evt evt, u16_t len)
case NETCONN_EVT_ERROR:
sock->errevent = 1;
#if USE_LIBOS
@ -32,7 +32,7 @@ index fe17c29..f84127c 100644
break;
default:
diff --git a/src/core/tcp_out.c b/src/core/tcp_out.c
index 2d341b3..061af5f 100644
index 1b0af8d..dd780d3 100644
--- a/src/core/tcp_out.c
+++ b/src/core/tcp_out.c
@@ -1358,8 +1358,16 @@ tcp_output(struct tcp_pcb *pcb)

View File

@ -1,6 +1,6 @@
From 9af71c25a61e34032a66e351ca67a2ed196f715c Mon Sep 17 00:00:00 2001
From 0c7d7ad7f9a79a557a867a6009aa2aac067d454e Mon Sep 17 00:00:00 2001
From: wuchangsheng <wuchangsheng2@huawei.com>
Date: Thu, 6 Oct 2022 21:09:57 +0800
Date: Thu, 6 Oct 2022 21:07:12 +0800
Subject: [PATCH] fix free pbuf miss data
---
@ -9,7 +9,7 @@ Subject: [PATCH] fix free pbuf miss data
2 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/src/core/tcp_out.c b/src/core/tcp_out.c
index 061af5f..7ebcfea 100644
index dd780d3..2834ba3 100644
--- a/src/core/tcp_out.c
+++ b/src/core/tcp_out.c
@@ -682,11 +682,24 @@ tcp_write(struct tcp_pcb *pcb, const void *arg, u16_t len, u8_t apiflags)

View File

@ -0,0 +1,25 @@
From c2c7c2f5bbf84f62acc6468113b1f11cdc6b8410 Mon Sep 17 00:00:00 2001
From: jiangheng <jiangheng14@huawei.com>
Date: Sat, 22 Oct 2022 16:05:37 +0800
Subject: [PATCH] add fs secure compilation option
---
src/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Makefile b/src/Makefile
index 1676a71..f445601 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -4,7 +4,7 @@ ROOT_DIR := $(dir $(abspath $(LWIP_DIR)))
LWIP_INC = $(LWIP_DIR)/include
DPDK_INCLUDE_FILE ?= /usr/include/dpdk
-SEC_FLAGS = -fstack-protector-strong -Werror -Wall -Wl,-z,relro,-z,now -Wl,-z,noexecstack -Wtrampolines -fPIC
+SEC_FLAGS = -fstack-protector-strong -Werror -Wall -Wl,-z,relro,-z,now -Wl,-z,noexecstack -Wtrampolines -fPIC -D_FORTIRY_SOURCE=2 -O2
CC = gcc
AR = ar
--
2.23.0

View File

@ -1,7 +1,7 @@
From 816a5b350a613d9da4e3d5b8d2c03026b8e0254c Mon Sep 17 00:00:00 2001
From af8ac36acb103aa27b498dafa0ae8ba4332faac8 Mon Sep 17 00:00:00 2001
From: wu-changsheng <wuchangsheng2@huawei.com>
Date: Sat, 3 Dec 2022 23:54:25 +0800
Subject: [PATCH] add tso
Date: Sat, 3 Dec 2022 21:38:09 +0800
Subject: [PATCH] add-tso
---
src/core/ipv4/etharp.c | 17 +++-
@ -71,10 +71,10 @@ index 1334cdc..d823491 100644
LWIP_DEBUGF(IP_DEBUG, ("ip4_output_if: call netif->output()\n"));
diff --git a/src/core/tcp.c b/src/core/tcp.c
index 4fece5d..fe54610 100644
index 7c18408..51ada38 100644
--- a/src/core/tcp.c
+++ b/src/core/tcp.c
@@ -1755,7 +1755,9 @@ tcp_seg_free(struct tcp_seg *seg)
@@ -1756,7 +1756,9 @@ tcp_seg_free(struct tcp_seg *seg)
seg->p = NULL;
#endif /* TCP_DEBUG */
}
@ -84,7 +84,7 @@ index 4fece5d..fe54610 100644
}
}
@@ -1791,10 +1793,14 @@ tcp_seg_copy(struct tcp_seg *seg)
@@ -1792,10 +1794,14 @@ tcp_seg_copy(struct tcp_seg *seg)
LWIP_ASSERT("tcp_seg_copy: invalid seg", seg != NULL);
@ -100,7 +100,7 @@ index 4fece5d..fe54610 100644
pbuf_ref(cseg->p);
return cseg;
diff --git a/src/core/tcp_out.c b/src/core/tcp_out.c
index 7ebcfea..c4584ea 100644
index 2834ba3..ee6f40b 100644
--- a/src/core/tcp_out.c
+++ b/src/core/tcp_out.c
@@ -161,6 +161,40 @@ tcp_route(const struct tcp_pcb *pcb, const ip_addr_t *src, const ip_addr_t *dst)
@ -327,23 +327,23 @@ index 7ebcfea..c4584ea 100644
} else {
#if TCP_CHECKSUM_ON_COPY
diff --git a/src/include/dpdk_cksum.h b/src/include/dpdk_cksum.h
index 70aab71..7163196 100644
index e57be4d..83c9c38 100644
--- a/src/include/dpdk_cksum.h
+++ b/src/include/dpdk_cksum.h
@@ -79,7 +79,7 @@ static inline void iph_cksum_set(struct pbuf *p, u16_t len, bool do_ipcksum) {
@@ -78,7 +78,7 @@ static inline void iph_cksum_set(struct pbuf *p, u16_t len, bool do_ipcksum) {
#include <rte_ip.h>
static inline void tcph_cksum_set(struct pbuf *p, u16_t len) {
- (void)len;
+ p->l4_len = len;
p->ol_flags |= PKT_TX_TCP_CKSUM;
p->ol_flags |= RTE_MBUF_F_TX_TCP_CKSUM;
}
diff --git a/src/include/lwip/pbuf.h b/src/include/lwip/pbuf.h
index e68d0bf..d9d2e71 100644
index 87cd960..ef879da 100644
--- a/src/include/lwip/pbuf.h
+++ b/src/include/lwip/pbuf.h
@@ -222,10 +222,14 @@ struct pbuf {
@@ -223,10 +223,14 @@ struct pbuf {
#if USE_LIBOS && CHECKSUM_OFFLOAD_ALL
/** checksum offload ol_flags */
u64_t ol_flags;
@ -358,8 +358,8 @@ index e68d0bf..d9d2e71 100644
+ u16_t header_off;
+ u8_t rexmit;
#endif /* USE_LIBOS CHECKSUM_OFFLOAD_SWITCH */
};
/** In case the user needs to store data custom data on a pbuf */
diff --git a/src/include/lwipopts.h b/src/include/lwipopts.h
index a5add21..7c819d0 100644
--- a/src/include/lwipopts.h

View File

@ -1,7 +1,7 @@
From f065e072711b0714aa49556afc88d9f1efaa405c Mon Sep 17 00:00:00 2001
From: wu-changsheng <wuchangsheng2@huawei.com>
Date: Sat, 3 Dec 2022 21:58:44 +0800
Subject: [PATCH] optimize-app-thread-write-buff-block
From be541628552ccc3a8dcd3c6ad6e5a1aed07c4928 Mon Sep 17 00:00:00 2001
From: wuchangsheng <wuchangsheng2@huawei.com>
Date: Sat, 3 Dec 2022 20:35:34 +0800
Subject: [PATCH 2/2] fix app thread write fail
---
src/core/tcp_out.c | 2 +-
@ -10,7 +10,7 @@ Subject: [PATCH] optimize-app-thread-write-buff-block
3 files changed, 27 insertions(+), 11 deletions(-)
diff --git a/src/core/tcp_out.c b/src/core/tcp_out.c
index c4584ea..a4d511e 100644
index ee6f40b..f53750b 100644
--- a/src/core/tcp_out.c
+++ b/src/core/tcp_out.c
@@ -763,7 +763,7 @@ tcp_write(struct tcp_pcb *pcb, const void *arg, u16_t len, u8_t apiflags)
@ -23,10 +23,10 @@ index c4584ea..a4d511e 100644
}
diff --git a/src/include/lwip/pbuf.h b/src/include/lwip/pbuf.h
index d9d2e71..200dbf2 100644
index ef879da..10e2af9 100644
--- a/src/include/lwip/pbuf.h
+++ b/src/include/lwip/pbuf.h
@@ -230,6 +230,9 @@ struct pbuf {
@@ -231,6 +231,9 @@ struct pbuf {
u64_t l4_len:8;
u16_t header_off;
u8_t rexmit;
@ -34,13 +34,13 @@ index d9d2e71..200dbf2 100644
+ u8_t head;
+ struct pbuf *last;
#endif /* USE_LIBOS CHECKSUM_OFFLOAD_SWITCH */
};
/** In case the user needs to store data custom data on a pbuf */
diff --git a/src/include/lwipsock.h b/src/include/lwipsock.h
index 9fa4c57..4c578b3 100644
index 2ffb077..f919330 100644
--- a/src/include/lwipsock.h
+++ b/src/include/lwipsock.h
@@ -94,17 +94,30 @@ struct lwip_sock {
@@ -93,17 +93,30 @@ struct lwip_sock {
#endif
#if USE_LIBOS
@ -80,7 +80,7 @@ index 9fa4c57..4c578b3 100644
struct wakeup_poll *wakeup;
epoll_data_t ep_data;
struct lwip_sock *listen_next; /* listenfd list */
@@ -132,7 +145,7 @@ extern ssize_t read_lwip_data(struct lwip_sock *sock, int32_t flags, u8_t apifla
@@ -131,7 +144,7 @@ extern ssize_t read_lwip_data(struct lwip_sock *sock, int32_t flags, u8_t apifla
extern struct pbuf *write_lwip_data(struct lwip_sock *sock, uint16_t remain_size, uint8_t *apiflags);
extern void gazelle_init_sock(int32_t fd);
extern void gazelle_clean_sock(int32_t fd);
@ -90,5 +90,5 @@ index 9fa4c57..4c578b3 100644
struct lwip_sock *get_socket(int s);
--
2.23.0
2.8.4.windows.1

View File

@ -1,6 +1,6 @@
From fe99dca0fa972f3c934a91e587380f140e093306 Mon Sep 17 00:00:00 2001
From 1aa27395a4c4b73b6db472c4ae75ed91637a11bf Mon Sep 17 00:00:00 2001
From: kircher <majun65@huawei.com>
Date: Wed, 21 Dec 2022 17:34:17 +0800
Date: Wed, 21 Dec 2022 17:50:50 +0800
Subject: [PATCH] add dataack when recv too many acks with data
---
@ -10,10 +10,10 @@ Subject: [PATCH] add dataack when recv too many acks with data
3 files changed, 25 insertions(+)
diff --git a/src/core/tcp_in.c b/src/core/tcp_in.c
index a5aebb4..9e84889 100644
index 78954bd..35ec6d9 100644
--- a/src/core/tcp_in.c
+++ b/src/core/tcp_in.c
@@ -1259,6 +1259,7 @@ tcp_receive(struct tcp_pcb *pcb)
@@ -1260,6 +1260,7 @@ tcp_receive(struct tcp_pcb *pcb)
s16_t m;
u32_t right_wnd_edge;
int found_dupack = 0;
@ -21,7 +21,7 @@ index a5aebb4..9e84889 100644
LWIP_ASSERT("tcp_receive: invalid pcb", pcb != NULL);
LWIP_ASSERT("tcp_receive: wrong state", pcb->state >= ESTABLISHED);
@@ -1336,11 +1337,31 @@ tcp_receive(struct tcp_pcb *pcb)
@@ -1337,11 +1338,31 @@ tcp_receive(struct tcp_pcb *pcb)
}
}
}
@ -53,7 +53,7 @@ index a5aebb4..9e84889 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;
@@ -1366,6 +1387,7 @@ tcp_receive(struct tcp_pcb *pcb)
@@ -1367,6 +1388,7 @@ tcp_receive(struct tcp_pcb *pcb)
/* Reset the fast retransmit variables. */
pcb->dupacks = 0;
pcb->lastack = ackno;

View File

@ -1,6 +1,6 @@
From 753be28ab3b124713534079802d6681645a67192 Mon Sep 17 00:00:00 2001
From 28f8ba80cd733e14e0540c414a18134b3c3fcc94 Mon Sep 17 00:00:00 2001
From: FanBin <fanbin12@huawei.com>
Date: Tue, 14 Feb 2023 21:37:10 +0800
Date: Wed, 15 Feb 2023 10:09:39 +0800
Subject: [PATCH] lwip reuse ip port
---
@ -13,7 +13,7 @@ Subject: [PATCH] lwip reuse ip port
6 files changed, 104 insertions(+), 3 deletions(-)
diff --git a/src/core/tcp.c b/src/core/tcp.c
index abfcc00..6dfb058 100644
index f75d214..3171c5e 100644
--- a/src/core/tcp.c
+++ b/src/core/tcp.c
@@ -111,6 +111,7 @@
@ -24,7 +24,7 @@ index abfcc00..6dfb058 100644
#include <string.h>
#include <pthread.h>
@@ -771,6 +772,9 @@ tcp_bind(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
@@ -772,6 +773,9 @@ tcp_bind(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
/* Check if the address already is in use (on all lists) */
for (i = 0; i < max_pcb_list; i++) {
for (cpcb = *tcp_pcb_lists[i]; cpcb != NULL; cpcb = cpcb->next) {
@ -34,7 +34,7 @@ index abfcc00..6dfb058 100644
if (cpcb->local_port == port) {
#if SO_REUSE
/* Omit checking for the same port if both pcbs have REUSEADDR set.
@@ -789,6 +793,7 @@ tcp_bind(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
@@ -790,6 +794,7 @@ tcp_bind(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
}
}
}
@ -42,7 +42,7 @@ index abfcc00..6dfb058 100644
}
}
}
@@ -920,7 +925,18 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
@@ -921,7 +926,18 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
res = ERR_ALREADY;
goto done;
}
@ -62,7 +62,7 @@ index abfcc00..6dfb058 100644
if (ip_get_option(pcb, SOF_REUSEADDR)) {
/* Since SOF_REUSEADDR allows reusing a local address before the pcb's usage
is declared (listen-/connection-pcb), we have to make sure now that
@@ -935,7 +951,7 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
@@ -936,7 +952,7 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
}
}
}
@ -71,8 +71,8 @@ index abfcc00..6dfb058 100644
#if USE_LIBOS
vdev_reg_done(REG_RING_TCP_LISTEN, pcb);
@@ -954,6 +970,16 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
lpcb->netif_idx = NETIF_NO_INDEX;
@@ -955,6 +971,16 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
lpcb->netif_idx = pcb->netif_idx;
lpcb->ttl = pcb->ttl;
lpcb->tos = pcb->tos;
+
@ -88,7 +88,7 @@ index abfcc00..6dfb058 100644
#if LWIP_IPV4 && LWIP_IPV6
IP_SET_TYPE_VAL(lpcb->remote_ip, pcb->local_ip.type);
#endif /* LWIP_IPV4 && LWIP_IPV6 */
@@ -978,7 +1004,15 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
@@ -979,7 +1005,15 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
lpcb->accepts_pending = 0;
tcp_backlog_set(lpcb, backlog);
#endif /* TCP_LISTEN_BACKLOG */
@ -106,7 +106,7 @@ index abfcc00..6dfb058 100644
done:
if (err != NULL) {
diff --git a/src/core/tcp_in.c b/src/core/tcp_in.c
index c2f451b..8a2b153 100644
index 35ec6d9..9f5c34a 100644
--- a/src/core/tcp_in.c
+++ b/src/core/tcp_in.c
@@ -356,6 +356,9 @@ tcp_input(struct pbuf *p, struct netif *inp)
@ -216,7 +216,7 @@ index b242428..97f799e 100644
do { \
hlist_del_init(&(npcb)->tcp_node); \
diff --git a/src/include/lwip/tcp.h b/src/include/lwip/tcp.h
index 0b65b01..5f695ef 100644
index 0b65b01..312320b 100644
--- a/src/include/lwip/tcp.h
+++ b/src/include/lwip/tcp.h
@@ -252,6 +252,14 @@ struct tcp_pcb_listen {

View File

@ -1,6 +1,6 @@
From ca773597e1e63ff2d6d0ebaee4332bcd4596f1e8 Mon Sep 17 00:00:00 2001
From 590873482f9b6a5e2635a95720acb37b5f516ab0 Mon Sep 17 00:00:00 2001
From: kircher <majun65@huawei.com>
Date: Tue, 21 Feb 2023 14:32:54 +0800
Date: Tue, 21 Feb 2023 15:05:41 +0800
Subject: [PATCH] lwip add need_tso_send
---
@ -10,10 +10,10 @@ Subject: [PATCH] lwip add need_tso_send
3 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/api/api_msg.c b/src/api/api_msg.c
index 65b6309..4a2df95 100644
index 1fedaad..3a4a473 100644
--- a/src/api/api_msg.c
+++ b/src/api/api_msg.c
@@ -1741,6 +1741,7 @@ lwip_netconn_do_writemore(struct netconn *conn WRITE_DELAYED_PARAM)
@@ -1744,6 +1744,7 @@ lwip_netconn_do_writemore(struct netconn *conn WRITE_DELAYED_PARAM)
write_more = 0;
err = tcp_write(conn->pcb.tcp, conn->current_msg->msg.w.vector->ptr, len, apiflags);
conn->current_msg->msg.w.len = len;
@ -22,7 +22,7 @@ index 65b6309..4a2df95 100644
err = tcp_write(conn->pcb.tcp, dataptr, len, apiflags);
#endif
diff --git a/src/core/tcp_out.c b/src/core/tcp_out.c
index bf1ad42..9dee888 100644
index c538f2a..bf23381 100644
--- a/src/core/tcp_out.c
+++ b/src/core/tcp_out.c
@@ -1473,7 +1473,7 @@ tcp_output(struct tcp_pcb *pcb)
@ -59,10 +59,10 @@ index bf1ad42..9dee888 100644
pcb->last_unsent = NULL;
tcp_clear_flags(pcb, TF_NAGLEMEMERR);
diff --git a/src/include/lwip/tcp.h b/src/include/lwip/tcp.h
index 312320b..c2018cb 100644
index 0b65b01..2fc683d 100644
--- a/src/include/lwip/tcp.h
+++ b/src/include/lwip/tcp.h
@@ -417,6 +417,8 @@ struct tcp_pcb {
@@ -409,6 +409,8 @@ struct tcp_pcb {
u8_t snd_scale;
u8_t rcv_scale;
#endif

View File

@ -1,6 +1,6 @@
From 29ab5ca0c051be02c8c8d31768342a1a87ea3a6e Mon Sep 17 00:00:00 2001
From b42299206a917ed5876c27617de59fb71f8437a7 Mon Sep 17 00:00:00 2001
From: Lemmy Huang <huangliming5@huawei.com>
Date: Thu, 9 Mar 2023 17:15:14 +0800
Date: Thu, 9 Mar 2023 10:57:16 +0800
Subject: [PATCH] cleancode: improve lwipopts.h readability
Signed-off-by: Lemmy Huang <huangliming5@huawei.com>
@ -13,7 +13,7 @@ Signed-off-by: Lemmy Huang <huangliming5@huawei.com>
src/core/ipv4/ip4.c | 6 +-
src/core/ipv4/ip4_frag.c | 4 +-
src/core/memp.c | 4 +-
src/core/pbuf.c | 6 +-
src/core/pbuf.c | 8 +-
src/core/tcp.c | 66 ++++-----
src/core/tcp_in.c | 46 +++---
src/core/tcp_out.c | 36 ++---
@ -35,10 +35,10 @@ Signed-off-by: Lemmy Huang <huangliming5@huawei.com>
src/include/lwipopts.h | 240 +++++++++++++++++--------------
src/include/lwipsock.h | 8 +-
src/netif/ethernet.c | 2 +-
30 files changed, 338 insertions(+), 316 deletions(-)
30 files changed, 339 insertions(+), 317 deletions(-)
diff --git a/src/api/api_msg.c b/src/api/api_msg.c
index 4a2df95..f059759 100644
index 3a4a473..1840c9d 100644
--- a/src/api/api_msg.c
+++ b/src/api/api_msg.c
@@ -54,7 +54,7 @@
@ -77,7 +77,7 @@ index 4a2df95..f059759 100644
LWIP_DEBUGF(API_MSG_DEBUG, ("libos incoming connection established\n"));
SET_CONN_TYPE_LIBOS(newconn);
#endif
@@ -1330,7 +1330,7 @@ lwip_netconn_do_connected(void *arg, struct tcp_pcb *pcb, err_t err)
@@ -1333,7 +1333,7 @@ lwip_netconn_do_connected(void *arg, struct tcp_pcb *pcb, err_t err)
return ERR_VAL;
}
@ -86,7 +86,7 @@ index 4a2df95..f059759 100644
gazelle_connected_callback(conn);
#endif
@@ -1735,7 +1735,7 @@ lwip_netconn_do_writemore(struct netconn *conn WRITE_DELAYED_PARAM)
@@ -1738,7 +1738,7 @@ lwip_netconn_do_writemore(struct netconn *conn WRITE_DELAYED_PARAM)
} else {
write_more = 0;
}
@ -96,7 +96,7 @@ index 4a2df95..f059759 100644
LWIP_UNUSED_ARG(dataptr);
write_more = 0;
diff --git a/src/api/sockets.c b/src/api/sockets.c
index 7f13a7c..484d10a 100644
index 2cb6f22..356e345 100644
--- a/src/api/sockets.c
+++ b/src/api/sockets.c
@@ -62,7 +62,7 @@
@ -231,7 +231,7 @@ index 7f13a7c..484d10a 100644
nsock = &sockets[newsock - LWIP_SOCKET_OFFSET];
/* See event_callback: If data comes in right away after an accept, even
@@ -817,13 +817,13 @@ lwip_accept4(int s, struct sockaddr *addr, socklen_t *addrlen, int flags)
@@ -816,13 +816,13 @@ lwip_accept4(int s, struct sockaddr *addr, socklen_t *addrlen, int flags)
}
IPADDR_PORT_TO_SOCKADDR(&tempaddr, &naddr, port);
@ -247,7 +247,7 @@ index 7f13a7c..484d10a 100644
MEMCPY(addr, &tempaddr, *addrlen);
LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_accept(%d) returning new sock=%d addr=", s, newsock));
@@ -994,10 +994,10 @@ lwip_connect(int s, const struct sockaddr *name, socklen_t namelen)
@@ -993,10 +993,10 @@ lwip_connect(int s, const struct sockaddr *name, socklen_t namelen)
return -1;
}
@ -260,7 +260,7 @@ index 7f13a7c..484d10a 100644
LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_connect(%d) succeeded\n", s));
sock_set_errno(sock, 0);
@@ -1066,7 +1066,7 @@ lwip_recv_tcp(struct lwip_sock *sock, void *mem, size_t len, int flags)
@@ -1065,7 +1065,7 @@ lwip_recv_tcp(struct lwip_sock *sock, void *mem, size_t len, int flags)
apiflags |= NETCONN_DONTBLOCK;
}
@ -269,7 +269,7 @@ index 7f13a7c..484d10a 100644
do {
struct pbuf *p;
err_t err;
@@ -1147,13 +1147,13 @@ lwip_recv_tcp(struct lwip_sock *sock, void *mem, size_t len, int flags)
@@ -1146,13 +1146,13 @@ lwip_recv_tcp(struct lwip_sock *sock, void *mem, size_t len, int flags)
} while ((recv_left > 0) && !(flags & MSG_PEEK));
lwip_recv_tcp_done:
@ -285,7 +285,7 @@ index 7f13a7c..484d10a 100644
if (apiflags & NETCONN_NOAUTORCVD) {
if ((recvd > 0) && !(flags & MSG_PEEK)) {
/* ensure window update after copying all data */
@@ -1189,7 +1189,7 @@ lwip_sock_make_addr(struct netconn *conn, ip_addr_t *fromaddr, u16_t port,
@@ -1188,7 +1188,7 @@ lwip_sock_make_addr(struct netconn *conn, ip_addr_t *fromaddr, u16_t port,
#endif /* LWIP_IPV4 && LWIP_IPV6 */
IPADDR_PORT_TO_SOCKADDR(&saddr, fromaddr, port);
@ -294,7 +294,7 @@ index 7f13a7c..484d10a 100644
if (*fromlen < saddr.sa.sa_len) {
truncated = 1;
} else if (*fromlen > saddr.sa.sa_len) {
@@ -2686,7 +2686,7 @@ event_callback(struct netconn *conn, enum netconn_evt evt, u16_t len)
@@ -2692,7 +2692,7 @@ event_callback(struct netconn *conn, enum netconn_evt evt, u16_t len)
if (sock->rcvevent > 1) {
check_waiters = 0;
}
@ -303,7 +303,7 @@ index 7f13a7c..484d10a 100644
if (conn->acceptmbox != NULL && !sys_mbox_empty(conn->acceptmbox)) {
add_sock_event(sock, POLLIN);
}
@@ -2708,7 +2708,7 @@ event_callback(struct netconn *conn, enum netconn_evt evt, u16_t len)
@@ -2714,7 +2714,7 @@ event_callback(struct netconn *conn, enum netconn_evt evt, u16_t len)
break;
case NETCONN_EVT_ERROR:
sock->errevent = 1;
@ -312,7 +312,7 @@ index 7f13a7c..484d10a 100644
add_sock_event(sock, EPOLLERR);
#endif
break;
@@ -2905,7 +2905,7 @@ lwip_getaddrname(int s, struct sockaddr *name, socklen_t *namelen, u8_t local)
@@ -2911,7 +2911,7 @@ lwip_getaddrname(int s, struct sockaddr *name, socklen_t *namelen, u8_t local)
ip_addr_debug_print_val(SOCKETS_DEBUG, naddr);
LWIP_DEBUGF(SOCKETS_DEBUG, (" port=%"U16_F")\n", port));
@ -321,7 +321,7 @@ index 7f13a7c..484d10a 100644
if (*namelen > saddr.sa.sa_len) {
*namelen = saddr.sa.sa_len;
}
@@ -3046,7 +3046,7 @@ lwip_sockopt_to_ipopt(int optname)
@@ -3052,7 +3052,7 @@ lwip_sockopt_to_ipopt(int optname)
return SOF_KEEPALIVE;
case SO_REUSEADDR:
return SOF_REUSEADDR;
@ -330,7 +330,7 @@ index 7f13a7c..484d10a 100644
case SO_REUSEPORT:
return SO_REUSEPORT;
#endif
@@ -3922,7 +3922,7 @@ lwip_setsockopt_impl(int s, int level, int optname, const void *optval, socklen_
@@ -3928,7 +3928,7 @@ lwip_setsockopt_impl(int s, int level, int optname, const void *optval, socklen_
return err;
}
@ -339,7 +339,7 @@ index 7f13a7c..484d10a 100644
int
lwip_ioctl(int s, long cmd, ...)
{
@@ -3957,7 +3957,7 @@ lwip_ioctl(int s, long cmd, void *argp)
@@ -3963,7 +3963,7 @@ lwip_ioctl(int s, long cmd, void *argp)
if (!sock) {
return -1;
}
@ -348,7 +348,7 @@ index 7f13a7c..484d10a 100644
switch (cmd) {
#if LWIP_SO_RCVBUF || LWIP_FIONREAD_LINUXMODE
@@ -4101,7 +4101,7 @@ lwip_fcntl(int s, int cmd, int val)
@@ -4107,7 +4107,7 @@ lwip_fcntl(int s, int cmd, int val)
break;
default:
LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_fcntl(%d, UNIMPL: %d, %d)\n", s, cmd, val));
@ -357,7 +357,7 @@ index 7f13a7c..484d10a 100644
sock_set_errno(sock, 0); /* not yet implemented, but we return 0 for compatilbe with app */
ret = 0;
#else
@@ -4369,7 +4369,7 @@ lwip_socket_drop_registered_mld6_memberships(int s)
@@ -4375,7 +4375,7 @@ lwip_socket_drop_registered_mld6_memberships(int s)
}
#endif /* LWIP_IPV6_MLD */
@ -366,8 +366,8 @@ index 7f13a7c..484d10a 100644
void lwip_sock_init(void)
{
if (sockets_num == 0) {
@@ -4404,6 +4404,6 @@ int gettid(void)
return (int)g_stack_tid;
@@ -4400,6 +4400,6 @@ void lwip_exit(void)
return;
}
-#endif /* USE_LIBOS */
@ -375,7 +375,7 @@ index 7f13a7c..484d10a 100644
#endif /* LWIP_SOCKET */
diff --git a/src/api/tcpip.c b/src/api/tcpip.c
index acb174e..53a38ab 100644
index d3d0b55..fe7a7bd 100644
--- a/src/api/tcpip.c
+++ b/src/api/tcpip.c
@@ -123,13 +123,13 @@ again:
@ -480,7 +480,7 @@ index f1903e4..5a1a834 100644
while (tmp != NULL) {
pbuf_ref(tmp);
diff --git a/src/core/ipv4/icmp.c b/src/core/ipv4/icmp.c
index d471b02..919d233 100644
index c58ae25..402ba69 100644
--- a/src/core/ipv4/icmp.c
+++ b/src/core/ipv4/icmp.c
@@ -51,7 +51,7 @@
@ -565,7 +565,7 @@ index 454ba32..fca1b0c 100644
#ifdef LWIP_HOOK_FILENAME
#include LWIP_HOOK_FILENAME
diff --git a/src/core/pbuf.c b/src/core/pbuf.c
index 7314ce9..65c6287 100644
index ad75aa6..dd71519 100644
--- a/src/core/pbuf.c
+++ b/src/core/pbuf.c
@@ -83,7 +83,7 @@
@ -595,8 +595,17 @@ index 7314ce9..65c6287 100644
if (p->next)
rte_prefetch0(p->next);
#endif
@@ -1027,7 +1027,7 @@ pbuf_copy_partial_pbuf(struct pbuf *p_to, const struct pbuf *p_from, u16_t copy_
len_calc = p_to->len - offset_to;
}
-#if USE_LIBOS && (CHECKSUM_GEN_IP_HW || CHECKSUM_GEN_TCP_HW)
+#if GAZELLE_ENABLE && (CHECKSUM_GEN_IP_HW || CHECKSUM_GEN_TCP_HW)
p_to->l2_len = p_from->l2_len;
p_to->l3_len = p_from->l3_len;
p_to->ol_flags = p_from->ol_flags;
diff --git a/src/core/tcp.c b/src/core/tcp.c
index 324e2ee..88ceca7 100644
index 3171c5e..69a39f6 100644
--- a/src/core/tcp.c
+++ b/src/core/tcp.c
@@ -183,7 +183,7 @@ PER_THREAD struct tcp_pcb *tcp_tw_pcbs;
@ -671,7 +680,7 @@ index 324e2ee..88ceca7 100644
TCP_PCB_REMOVE_ACTIVE_HASH(pcb);
#endif
TCP_PCB_REMOVE_ACTIVE(pcb);
@@ -760,7 +760,7 @@ tcp_bind(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
@@ -761,7 +761,7 @@ tcp_bind(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
#endif /* LWIP_IPV6 && LWIP_IPV6_SCOPES */
if (port == 0) {
@ -680,7 +689,7 @@ index 324e2ee..88ceca7 100644
port = tcp_new_port(pcb);
#else
port = tcp_new_port();
@@ -772,7 +772,7 @@ tcp_bind(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
@@ -773,7 +773,7 @@ tcp_bind(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
/* Check if the address already is in use (on all lists) */
for (i = 0; i < max_pcb_list; i++) {
for (cpcb = *tcp_pcb_lists[i]; cpcb != NULL; cpcb = cpcb->next) {
@ -689,7 +698,7 @@ index 324e2ee..88ceca7 100644
continue;
#else
if (cpcb->local_port == port) {
@@ -926,7 +926,7 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
@@ -927,7 +927,7 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
goto done;
}
@ -698,7 +707,7 @@ index 324e2ee..88ceca7 100644
struct tcp_pcb_listen *first_same_port_pcb = NULL;
for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) {
if ((lpcb->local_port == pcb->local_port) &&
@@ -951,9 +951,9 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
@@ -952,9 +952,9 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
}
}
}
@ -710,7 +719,7 @@ index 324e2ee..88ceca7 100644
vdev_reg_done(REG_RING_TCP_LISTEN, pcb);
#endif
@@ -971,7 +971,7 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
@@ -972,7 +972,7 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
lpcb->ttl = pcb->ttl;
lpcb->tos = pcb->tos;
@ -719,7 +728,7 @@ index 324e2ee..88ceca7 100644
lpcb->connect_num = 0;
lpcb->next_same_port_pcb = NULL;
@@ -991,7 +991,7 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
@@ -992,7 +992,7 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
/* copy over ext_args to listening pcb */
memcpy(&lpcb->ext_args, &pcb->ext_args, sizeof(pcb->ext_args));
#endif
@ -728,7 +737,7 @@ index 324e2ee..88ceca7 100644
/* pcb transfer to lpcb and reg into tcp_listen_pcbs. freeing pcb shouldn't release sock table in here.
* local_port=0 avoid to release sock table in tcp_free */
pcb->local_port = 0;
@@ -1005,7 +1005,7 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
@@ -1006,7 +1006,7 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
tcp_backlog_set(lpcb, backlog);
#endif /* TCP_LISTEN_BACKLOG */
@ -737,7 +746,7 @@ index 324e2ee..88ceca7 100644
if (first_same_port_pcb != NULL) {
TCP_REG_SAMEPORT((struct tcp_pcb_listen *)first_same_port_pcb, (struct tcp_pcb_listen *)lpcb);
} else
@@ -1108,7 +1108,7 @@ tcp_recved(struct tcp_pcb *pcb, u16_t len)
@@ -1109,7 +1109,7 @@ tcp_recved(struct tcp_pcb *pcb, u16_t len)
*
* @return a new (free) local TCP port number
*/
@ -746,7 +755,7 @@ index 324e2ee..88ceca7 100644
static u16_t
tcp_new_port(struct tcp_pcb *pcb)
#else
@@ -1127,7 +1127,7 @@ tcp_new_port(void)
@@ -1128,7 +1128,7 @@ tcp_new_port(void)
}
if (__atomic_load_n(&port_state[tcp_port - TCP_LOCAL_PORT_RANGE_START], __ATOMIC_ACQUIRE) == 0) {
@ -755,7 +764,7 @@ index 324e2ee..88ceca7 100644
if (port_in_stack_queue(pcb->remote_ip.addr, pcb->local_ip.addr, pcb->remote_port, tcp_port)) {
tmp_port = tcp_port;
__atomic_store_n(&port_state[tcp_port - TCP_LOCAL_PORT_RANGE_START], 1, __ATOMIC_RELEASE);
@@ -1230,7 +1230,7 @@ tcp_connect(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port,
@@ -1231,7 +1231,7 @@ tcp_connect(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port,
old_local_port = pcb->local_port;
if (pcb->local_port == 0) {
@ -764,7 +773,7 @@ index 324e2ee..88ceca7 100644
pcb->local_port = tcp_new_port(pcb);
#else
pcb->local_port = tcp_new_port();
@@ -1288,7 +1288,7 @@ tcp_connect(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port,
@@ -1289,7 +1289,7 @@ tcp_connect(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port,
/* Send a SYN together with the MSS option. */
ret = tcp_enqueue_flags(pcb, TCP_SYN);
if (ret == ERR_OK) {
@ -773,7 +782,7 @@ index 324e2ee..88ceca7 100644
vdev_reg_done(REG_RING_TCP_CONNECT, pcb);
#endif
@@ -1297,7 +1297,7 @@ tcp_connect(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port,
@@ -1298,7 +1298,7 @@ tcp_connect(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port,
if (old_local_port != 0) {
TCP_RMV(&tcp_bound_pcbs, pcb);
}
@ -782,7 +791,7 @@ index 324e2ee..88ceca7 100644
TCP_REG_ACTIVE_HASH(pcb);
#endif
TCP_REG_ACTIVE(pcb);
@@ -1515,7 +1515,7 @@ tcp_slowtmr_start:
@@ -1516,7 +1516,7 @@ tcp_slowtmr_start:
if (prev != NULL) {
LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_active_pcbs", pcb != tcp_active_pcbs);
prev->next = pcb->next;
@ -791,7 +800,7 @@ index 324e2ee..88ceca7 100644
if (pcb->next)
pcb->next->prev = prev;
//dont set next NULL, it will be used below
@@ -1525,14 +1525,14 @@ tcp_slowtmr_start:
@@ -1526,14 +1526,14 @@ tcp_slowtmr_start:
/* This PCB was the first. */
LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_active_pcbs", tcp_active_pcbs == pcb);
tcp_active_pcbs = pcb->next;
@ -808,7 +817,7 @@ index 324e2ee..88ceca7 100644
TCP_RMV_ACTIVE_HASH(pcb);
#endif
@@ -1545,7 +1545,7 @@ tcp_slowtmr_start:
@@ -1546,7 +1546,7 @@ tcp_slowtmr_start:
last_state = pcb->state;
pcb2 = pcb;
pcb = pcb->next;
@ -817,7 +826,7 @@ index 324e2ee..88ceca7 100644
pcb2->next = NULL;
#endif
tcp_free(pcb2);
@@ -1599,7 +1599,7 @@ tcp_slowtmr_start:
@@ -1600,7 +1600,7 @@ tcp_slowtmr_start:
if (prev != NULL) {
LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_tw_pcbs", pcb != tcp_tw_pcbs);
prev->next = pcb->next;
@ -826,7 +835,7 @@ index 324e2ee..88ceca7 100644
if (pcb->next)
pcb->next->prev = prev;
//dont set next NULL, it will be used below
@@ -1609,7 +1609,7 @@ tcp_slowtmr_start:
@@ -1610,7 +1610,7 @@ tcp_slowtmr_start:
/* This PCB was the first. */
LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_tw_pcbs", tcp_tw_pcbs == pcb);
tcp_tw_pcbs = pcb->next;
@ -835,7 +844,7 @@ index 324e2ee..88ceca7 100644
if (pcb->next)
pcb->next->prev = NULL;
//dont set next NULL, it will be used below
@@ -1618,7 +1618,7 @@ tcp_slowtmr_start:
@@ -1619,7 +1619,7 @@ tcp_slowtmr_start:
}
pcb2 = pcb;
pcb = pcb->next;
@ -844,7 +853,7 @@ index 324e2ee..88ceca7 100644
pcb2->next = NULL;
#endif
tcp_free(pcb2);
@@ -1789,7 +1789,7 @@ tcp_seg_free(struct tcp_seg *seg)
@@ -1790,7 +1790,7 @@ tcp_seg_free(struct tcp_seg *seg)
seg->p = NULL;
#endif /* TCP_DEBUG */
}
@ -853,7 +862,7 @@ index 324e2ee..88ceca7 100644
memp_free(MEMP_TCP_SEG, seg);
#endif
}
@@ -1827,7 +1827,7 @@ tcp_seg_copy(struct tcp_seg *seg)
@@ -1828,7 +1828,7 @@ tcp_seg_copy(struct tcp_seg *seg)
LWIP_ASSERT("tcp_seg_copy: invalid seg", seg != NULL);
@ -862,7 +871,7 @@ index 324e2ee..88ceca7 100644
cseg = (struct tcp_seg *)((uint8_t *)seg->p + sizeof(struct pbuf_custom));
#else
cseg = (struct tcp_seg *)memp_malloc(MEMP_TCP_SEG);
@@ -2367,7 +2367,7 @@ tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb)
@@ -2371,7 +2371,7 @@ tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb)
#endif /* TCP_QUEUE_OOSEQ */
}
@ -871,7 +880,7 @@ index 324e2ee..88ceca7 100644
vdev_unreg_done(pcb);
release_port(pcb->local_port);
#endif
@@ -2379,13 +2379,13 @@ tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb)
@@ -2383,13 +2383,13 @@ tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb)
LWIP_ASSERT("tcp_pcb_remove: tcp_pcbs_sane()", tcp_pcbs_sane());
}
@ -888,7 +897,7 @@ index 324e2ee..88ceca7 100644
/**
* Calculates a new initial sequence number for new connections.
diff --git a/src/core/tcp_in.c b/src/core/tcp_in.c
index 8a2b153..dfd5ce7 100644
index 9f5c34a..dd83260 100644
--- a/src/core/tcp_in.c
+++ b/src/core/tcp_in.c
@@ -58,13 +58,13 @@
@ -1028,7 +1037,7 @@ index 8a2b153..dfd5ce7 100644
vdev_reg_done(REG_RING_TCP_CONNECT, npcb);
#endif
@@ -1101,7 +1101,7 @@ tcp_process(struct tcp_pcb *pcb)
@@ -1102,7 +1102,7 @@ tcp_process(struct tcp_pcb *pcb)
if (recv_flags & TF_GOT_FIN) {
tcp_ack_now(pcb);
pcb->state = CLOSE_WAIT;
@ -1037,7 +1046,7 @@ index 8a2b153..dfd5ce7 100644
API_EVENT(((struct netconn *)pcb->callback_arg), NETCONN_EVT_ERROR, 0);
#endif
}
@@ -1119,7 +1119,7 @@ tcp_process(struct tcp_pcb *pcb)
@@ -1120,7 +1120,7 @@ tcp_process(struct tcp_pcb *pcb)
if (recv_flags & TF_GOT_FIN) { /* passive close */
tcp_ack_now(pcb);
pcb->state = CLOSE_WAIT;
@ -1046,7 +1055,7 @@ index 8a2b153..dfd5ce7 100644
API_EVENT(((struct netconn *)pcb->callback_arg), NETCONN_EVT_ERROR, 0);
#endif
}
@@ -1133,7 +1133,7 @@ tcp_process(struct tcp_pcb *pcb)
@@ -1134,7 +1134,7 @@ tcp_process(struct tcp_pcb *pcb)
("TCP connection closed: FIN_WAIT_1 %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest));
tcp_ack_now(pcb);
tcp_pcb_purge(pcb);
@ -1055,7 +1064,7 @@ index 8a2b153..dfd5ce7 100644
TCP_RMV_ACTIVE_HASH(pcb);
#endif
TCP_RMV_ACTIVE(pcb);
@@ -1154,7 +1154,7 @@ tcp_process(struct tcp_pcb *pcb)
@@ -1155,7 +1155,7 @@ tcp_process(struct tcp_pcb *pcb)
LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: FIN_WAIT_2 %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest));
tcp_ack_now(pcb);
tcp_pcb_purge(pcb);
@ -1064,7 +1073,7 @@ index 8a2b153..dfd5ce7 100644
TCP_RMV_ACTIVE_HASH(pcb);
#endif
TCP_RMV_ACTIVE(pcb);
@@ -1167,7 +1167,7 @@ tcp_process(struct tcp_pcb *pcb)
@@ -1168,7 +1168,7 @@ tcp_process(struct tcp_pcb *pcb)
if ((flags & TCP_ACK) && ackno == pcb->snd_nxt && pcb->unsent == NULL) {
LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: CLOSING %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest));
tcp_pcb_purge(pcb);
@ -1073,7 +1082,7 @@ index 8a2b153..dfd5ce7 100644
TCP_RMV_ACTIVE_HASH(pcb);
#endif
TCP_RMV_ACTIVE(pcb);
@@ -1376,7 +1376,7 @@ tcp_receive(struct tcp_pcb *pcb)
@@ -1377,7 +1377,7 @@ tcp_receive(struct tcp_pcb *pcb)
if (pcb->lastack == ackno) {
found_dataack = 1;
++pcb->dataacks;
@ -1082,7 +1091,7 @@ index 8a2b153..dfd5ce7 100644
if (tcp_rexmit(pcb) == ERR_OK) {
pcb->rtime = 0;
pcb->dataacks = 0;
@@ -1774,7 +1774,7 @@ tcp_receive(struct tcp_pcb *pcb)
@@ -1775,7 +1775,7 @@ tcp_receive(struct tcp_pcb *pcb)
recv_flags |= TF_GOT_FIN;
if (pcb->state == ESTABLISHED) { /* force passive close or we can move to active close */
pcb->state = CLOSE_WAIT;
@ -1092,7 +1101,7 @@ index 8a2b153..dfd5ce7 100644
#endif
}
diff --git a/src/core/tcp_out.c b/src/core/tcp_out.c
index 9dee888..59afea5 100644
index bf23381..1b3c5af 100644
--- a/src/core/tcp_out.c
+++ b/src/core/tcp_out.c
@@ -80,7 +80,7 @@
@ -1272,7 +1281,7 @@ index 0542a32..2b80b0a 100644
#else /* LWIP_TIMERS && !LWIP_TIMERS_CUSTOM */
/* Satisfy the TCP code which calls this function */
diff --git a/src/include/arch/sys_arch.h b/src/include/arch/sys_arch.h
index 54eeff1..1cc5a9d 100644
index fc4a9fd..04e3192 100644
--- a/src/include/arch/sys_arch.h
+++ b/src/include/arch/sys_arch.h
@@ -76,7 +76,7 @@ int sys_mbox_empty(struct sys_mbox *);
@ -1285,7 +1294,7 @@ index 54eeff1..1cc5a9d 100644
#include <rte_ring.h>
diff --git a/src/include/dpdk_cksum.h b/src/include/dpdk_cksum.h
index 7163196..da3ca04 100644
index 83c9c38..df2e2a5 100644
--- a/src/include/dpdk_cksum.h
+++ b/src/include/dpdk_cksum.h
@@ -34,7 +34,7 @@
@ -1294,10 +1303,10 @@ index 7163196..da3ca04 100644
#include "lwipopts.h"
-#if USE_LIBOS
+#if GAZELLE_ENABLE
#include <stdbool.h>
#include <rte_ethdev.h>
@@ -104,5 +104,5 @@ static inline u16_t ip_chksum_pseudo_offload(u8_t proto, u16_t proto_len,
#if CHECKSUM_OFFLOAD_ALL
@@ -103,5 +103,5 @@ static inline u16_t ip_chksum_pseudo_offload(u8_t proto, u16_t proto_len,
}
#endif /* CHECKSUM_GEN_TCP_HW */
@ -1435,10 +1444,10 @@ index 64d8f31..1763836 100644
/**
diff --git a/src/include/lwip/opt.h b/src/include/lwip/opt.h
index b0bdb28..00e5565 100644
index 718816b..0376f60 100644
--- a/src/include/lwip/opt.h
+++ b/src/include/lwip/opt.h
@@ -3518,7 +3518,7 @@
@@ -3525,7 +3525,7 @@
/**
* EPOLL_DEBUG: Enable debugging in epoll.c.
*/
@ -1447,7 +1456,7 @@ index b0bdb28..00e5565 100644
#define EPOLL_DEBUG LWIP_DBG_OFF
#endif
/**
@@ -3528,7 +3528,7 @@
@@ -3535,7 +3535,7 @@
/**
* ETHDEV_DEBUG: Enable debugging in ethdev.c.
*/
@ -1456,7 +1465,7 @@ index b0bdb28..00e5565 100644
#define ETHDEV_DEBUG LWIP_DBG_OFF
#endif
/**
@@ -3538,7 +3538,7 @@
@@ -3545,7 +3545,7 @@
/**
* ETHDEV_DEBUG: Enable debugging in ethdev.c.
*/
@ -1465,7 +1474,7 @@ index b0bdb28..00e5565 100644
#define SYSCALL_DEBUG LWIP_DBG_OFF
#endif
/**
@@ -3548,7 +3548,7 @@
@@ -3555,7 +3555,7 @@
/**
* CONTROL_DEBUG: Enable debugging in control_plane.c.
*/
@ -1475,28 +1484,28 @@ index b0bdb28..00e5565 100644
#endif
/**
diff --git a/src/include/lwip/pbuf.h b/src/include/lwip/pbuf.h
index ed641a3..4f5c8ef 100644
index 1124408..a2e8e01 100644
--- a/src/include/lwip/pbuf.h
+++ b/src/include/lwip/pbuf.h
@@ -219,7 +219,7 @@ struct pbuf {
@@ -220,7 +220,7 @@ struct pbuf {
/** For incoming packets, this contains the input netif's index */
u8_t if_idx;
-#if USE_LIBOS && CHECKSUM_OFFLOAD_ALL
+#if GAZELLE_ENABLE && CHECKSUM_OFFLOAD_ALL
/** checksum offload ol_flags */
u64_t ol_flags;
/* < L2 (MAC) Header Length for non-tunneling pkt. */
@@ -233,7 +233,7 @@ struct pbuf {
@@ -234,7 +234,7 @@ struct pbuf {
u8_t in_write;
u8_t head;
struct pbuf *last;
-#endif /* USE_LIBOS CHECKSUM_OFFLOAD_SWITCH */
+#endif /* GAZELLE_ENABLE CHECKSUM_OFFLOAD_SWITCH */
};
@@ -283,7 +283,7 @@ void pbuf_free_ooseq(void);
/** In case the user needs to store data custom data on a pbuf */
LWIP_PBUF_CUSTOM_DATA
@@ -287,7 +287,7 @@ void pbuf_free_ooseq(void);
/* Initializes the pbuf module. This call is empty for now, but may not be in future. */
#define pbuf_init()
@ -1847,19 +1856,19 @@ index b451554..f7ffc5e 100644
#endif /* LWIP_TIMERS */
diff --git a/src/include/lwiplog.h b/src/include/lwiplog.h
index 6fccac8..d05cfc3 100644
index 011ed21..f278ff4 100644
--- a/src/include/lwiplog.h
+++ b/src/include/lwiplog.h
@@ -42,7 +42,7 @@
@@ -41,7 +41,7 @@
extern int gettid(void);
#include "lwipopts.h"
-#if USE_DPDK_LOG
+#if GAZELLE_USE_DPDK_LOG
#define LWIP_LOG_WARN LWIP_DBG_LEVEL_WARNING
#define LWIP_LOG_ERROR LWIP_DBG_LEVEL_SERIOUS
@@ -76,6 +76,6 @@ do { LWIP_PLATFORM_LOG(LWIP_LOG_FATAL, "Assertion \"%s\" failed at line %d in %s
@@ -75,6 +75,6 @@ do { LWIP_PLATFORM_LOG(LWIP_LOG_FATAL, "Assertion \"%s\" failed at line %d in %s
#define LWIP_PLATFORM_LOG(debug, message)
@ -2186,10 +2195,10 @@ index be58ec3..9cc93bc 100644
#endif /* __LWIPOPTS_H__ */
diff --git a/src/include/lwipsock.h b/src/include/lwipsock.h
index b6fd10a..e0a5edc 100644
index a807e3e..f78c9cf 100644
--- a/src/include/lwipsock.h
+++ b/src/include/lwipsock.h
@@ -60,7 +60,7 @@ union lwip_sock_lastdata {
@@ -59,7 +59,7 @@ union lwip_sock_lastdata {
struct pbuf *pbuf;
};
@ -2198,7 +2207,7 @@ index b6fd10a..e0a5edc 100644
struct protocol_stack;
struct wakeup_poll;
struct rte_ring;
@@ -93,7 +93,7 @@ struct lwip_sock {
@@ -92,7 +92,7 @@ struct lwip_sock {
#define LWIP_SOCK_FD_FREE_FREE 2
#endif
@ -2207,7 +2216,7 @@ index b6fd10a..e0a5edc 100644
char pad0 __rte_cache_aligned;
/* app thread use */
struct pbuf *recv_lastdata; /* unread data in one pbuf */
@@ -132,7 +132,7 @@ struct lwip_sock {
@@ -131,7 +131,7 @@ struct lwip_sock {
* --------------- LIBNET references ----------------
* --------------------------------------------------
*/
@ -2216,7 +2225,7 @@ index b6fd10a..e0a5edc 100644
extern uint32_t sockets_num;
extern struct lwip_sock *sockets;
extern void gazelle_connected_callback(struct netconn *conn);
@@ -142,7 +142,7 @@ extern struct pbuf *write_lwip_data(struct lwip_sock *sock, uint16_t remain_size
@@ -141,7 +141,7 @@ extern struct pbuf *write_lwip_data(struct lwip_sock *sock, uint16_t remain_size
extern void gazelle_init_sock(int32_t fd);
extern void gazelle_clean_sock(int32_t fd);
extern void write_lwip_over(struct lwip_sock *sock);

View File

@ -1,6 +1,6 @@
From 065ce96161dd13655befe0b300213213da9db777 Mon Sep 17 00:00:00 2001
From d3d6f7fa6e755992fd4b75b56681b5e14aa8ba14 Mon Sep 17 00:00:00 2001
From: jiangheng12 <jiangheng14@huawei.com>
Date: Fri, 10 Mar 2023 20:31:26 +0800
Date: Fri, 10 Mar 2023 19:32:48 +0800
Subject: [PATCH] reduce cpu usage when send
---
@ -8,7 +8,7 @@ Subject: [PATCH] reduce cpu usage when send
1 file changed, 2 insertions(+)
diff --git a/src/include/lwipsock.h b/src/include/lwipsock.h
index e0a5edc..399b701 100644
index f78c9cf..810e98f 100644
--- a/src/include/lwipsock.h
+++ b/src/include/lwipsock.h
@@ -33,6 +33,7 @@
@ -16,10 +16,10 @@ index e0a5edc..399b701 100644
#define __LWIPSOCK_H__
+#include <semaphore.h>
#include <stdbool.h>
#include "lwip/opt.h"
#include "lwip/api.h"
@@ -111,6 +112,7 @@ struct lwip_sock {
@@ -110,6 +111,7 @@ struct lwip_sock {
struct list_node send_list;
struct pbuf *send_lastdata;
struct pbuf *send_pre_del;

View File

@ -7,11 +7,12 @@ Subject: [PATCH] add pbuf lock when aggregate pbuf
src/include/lwip/pbuf.h | 3 ++-
src/include/lwipsock.h | 3 +--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/include/lwip/pbuf.h b/src/include/lwip/pbuf.h
index 4f5c8ef..50d88af 100644
index a2e8e01..8807a49 100644
--- a/src/include/lwip/pbuf.h
+++ b/src/include/lwip/pbuf.h
@@ -230,9 +230,10 @@ struct pbuf {
@@ -231,9 +231,10 @@ struct pbuf {
u64_t l4_len:8;
u8_t header_off;
u8_t rexmit;
@ -21,13 +22,13 @@ index 4f5c8ef..50d88af 100644
struct pbuf *last;
+ pthread_spinlock_t pbuf_lock;
#endif /* GAZELLE_ENABLE CHECKSUM_OFFLOAD_SWITCH */
};
/** In case the user needs to store data custom data on a pbuf */
diff --git a/src/include/lwipsock.h b/src/include/lwipsock.h
index 399b701..affb598 100644
index 810e98f..7e16ec8 100644
--- a/src/include/lwipsock.h
+++ b/src/include/lwipsock.h
@@ -105,11 +105,10 @@ struct lwip_sock {
@@ -104,11 +104,10 @@ struct lwip_sock {
char pad1 __rte_cache_aligned;
/* app and stack thread all use */

View File

@ -1,6 +1,6 @@
From 1e11d1ee2f26af10f73d779039d48e564b024234 Mon Sep 17 00:00:00 2001
From: jiangheng <jiangheng14@huawei.com>
Date: Mon, 13 Mar 2023 19:08:56 +0800
From 8a68ee510f5da20edf7fa06da701713ef10db930 Mon Sep 17 00:00:00 2001
From: jiangheng12 <jiangheng14@huawei.com>
Date: Thu, 16 Mar 2023 19:59:26 +0800
Subject: [PATCH] same node & gazellectl -a
---
@ -11,13 +11,14 @@ Subject: [PATCH] same node & gazellectl -a
src/core/tcp.c | 39 +++++++++++++++++++++++++++++++++++++++
src/core/tcp_in.c | 6 ++++++
src/core/tcp_out.c | 11 +++++++++++
src/include/lwip/pbuf.h | 5 ++++-
src/include/lwip/pbuf.h | 3 +++
src/include/lwip/tcp.h | 10 ++++++++++
src/include/lwipopts.h | 7 +++++++
src/include/lwipsock.h | 37 +++++++++++++++++++++++++++++++++++++
11 files changed, 149 insertions(+), 4 deletions(-)
11 files changed, 148 insertions(+), 3 deletions(-)
diff --git a/src/api/sockets.c b/src/api/sockets.c
index 484d10a..30e5745 100644
index 356e345..7a5da26 100644
--- a/src/api/sockets.c
+++ b/src/api/sockets.c
@@ -605,6 +605,10 @@ alloc_socket(struct netconn *newconn, int accepted, int flags)
@ -93,10 +94,10 @@ index f15b798..e01ea51 100644
/* Add it to end of rambuf's chain, but using pbuf_cat, not pbuf_chain
* so that it is removed when pbuf_dechain is later called on rambuf.
diff --git a/src/core/netif.c b/src/core/netif.c
index 1a4ea1d..eda8bc0 100644
index 70392cb..86b74a0 100644
--- a/src/core/netif.c
+++ b/src/core/netif.c
@@ -1058,7 +1058,7 @@ netif_set_link_callback(struct netif *netif, netif_status_callback_fn link_callb
@@ -1065,7 +1065,7 @@ netif_set_link_callback(struct netif *netif, netif_status_callback_fn link_callb
}
#endif /* LWIP_NETIF_LINK_CALLBACK */
@ -105,7 +106,7 @@ index 1a4ea1d..eda8bc0 100644
/**
* @ingroup netif
* Send an IP packet to be received on the same netif (loopif-like).
@@ -1166,6 +1166,7 @@ netif_loop_output(struct netif *netif, struct pbuf *p)
@@ -1184,6 +1184,7 @@ netif_loop_output(struct netif *netif, struct pbuf *p)
return ERR_OK;
}
@ -113,7 +114,7 @@ index 1a4ea1d..eda8bc0 100644
#if LWIP_HAVE_LOOPIF
#if LWIP_IPV4
@@ -1187,7 +1188,7 @@ netif_loop_output_ipv6(struct netif *netif, struct pbuf *p, const ip6_addr_t *ad
@@ -1205,7 +1206,7 @@ netif_loop_output_ipv6(struct netif *netif, struct pbuf *p, const ip6_addr_t *ad
#endif /* LWIP_IPV6 */
#endif /* LWIP_HAVE_LOOPIF */
@ -122,7 +123,7 @@ index 1a4ea1d..eda8bc0 100644
/**
* Call netif_poll() in the main loop of your application. This is to prevent
* reentering non-reentrant functions like tcp_input(). Packets passed to
@@ -1259,6 +1260,7 @@ netif_poll(struct netif *netif)
@@ -1277,6 +1278,7 @@ netif_poll(struct netif *netif)
}
SYS_ARCH_UNPROTECT(lev);
}
@ -130,7 +131,7 @@ index 1a4ea1d..eda8bc0 100644
#if !LWIP_NETIF_LOOPBACK_MULTITHREADING
/**
@@ -1274,7 +1276,6 @@ netif_poll_all(void)
@@ -1292,7 +1294,6 @@ netif_poll_all(void)
}
}
#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */
@ -139,7 +140,7 @@ index 1a4ea1d..eda8bc0 100644
#if LWIP_NUM_NETIF_CLIENT_DATA > 0
/**
diff --git a/src/core/pbuf.c b/src/core/pbuf.c
index 65c6287..6d8f247 100644
index dd71519..2385e57 100644
--- a/src/core/pbuf.c
+++ b/src/core/pbuf.c
@@ -69,6 +69,7 @@
@ -173,7 +174,7 @@ index 65c6287..6d8f247 100644
#endif /* LWIP_SUPPORT_CUSTOM_PBUF */
{
diff --git a/src/core/tcp.c b/src/core/tcp.c
index 88ceca7..656d484 100644
index 69a39f6..538a664 100644
--- a/src/core/tcp.c
+++ b/src/core/tcp.c
@@ -116,6 +116,8 @@
@ -204,7 +205,7 @@ index 88ceca7..656d484 100644
vdev_unreg_done(pcb);
release_port(pcb->local_port);
#endif
@@ -995,6 +1009,15 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
@@ -996,6 +1010,15 @@ tcp_listen_with_backlog_and_err(struct tcp_pcb *pcb, u8_t backlog, err_t *err)
/* pcb transfer to lpcb and reg into tcp_listen_pcbs. freeing pcb shouldn't release sock table in here.
* local_port=0 avoid to release sock table in tcp_free */
pcb->local_port = 0;
@ -220,7 +221,7 @@ index 88ceca7..656d484 100644
#endif
tcp_free(pcb);
#if LWIP_CALLBACK_API
@@ -1261,6 +1284,16 @@ tcp_connect(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port,
@@ -1262,6 +1285,16 @@ tcp_connect(struct tcp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port,
#endif /* SO_REUSE */
}
@ -237,7 +238,7 @@ index 88ceca7..656d484 100644
iss = tcp_next_iss(pcb);
pcb->rcv_nxt = 0;
pcb->snd_nxt = iss;
@@ -2089,7 +2122,13 @@ tcp_alloc(u8_t prio)
@@ -2090,7 +2123,13 @@ tcp_alloc(u8_t prio)
pcb->keep_intvl = TCP_KEEPINTVL_DEFAULT;
pcb->keep_cnt = TCP_KEEPCNT_DEFAULT;
#endif /* LWIP_TCP_KEEPALIVE */
@ -252,7 +253,7 @@ index 88ceca7..656d484 100644
}
diff --git a/src/core/tcp_in.c b/src/core/tcp_in.c
index dfd5ce7..7a67a23 100644
index dd83260..719cf04 100644
--- a/src/core/tcp_in.c
+++ b/src/core/tcp_in.c
@@ -42,6 +42,7 @@
@ -276,7 +277,7 @@ index dfd5ce7..7a67a23 100644
/* Parse any options in the SYN. */
diff --git a/src/core/tcp_out.c b/src/core/tcp_out.c
index 202a3aa..5b822d6 100644
index 8100e18..b1c317d 100644
--- a/src/core/tcp_out.c
+++ b/src/core/tcp_out.c
@@ -725,6 +725,10 @@ tcp_write(struct tcp_pcb *pcb, const void *arg, u16_t len, u8_t apiflags)
@ -319,18 +320,18 @@ index 202a3aa..5b822d6 100644
if (pcb == NULL || pcb->pcb_if == NULL) {
diff --git a/src/include/lwip/pbuf.h b/src/include/lwip/pbuf.h
index 50d88af..ecc51ce 100644
index 6c4ca44..9321afc 100644
--- a/src/include/lwip/pbuf.h
+++ b/src/include/lwip/pbuf.h
@@ -234,6 +234,7 @@ struct pbuf {
@@ -235,6 +235,7 @@ struct pbuf {
u8_t head;
struct pbuf *last;
pthread_spinlock_t pbuf_lock;
+ struct tcp_pcb *pcb;
#endif /* GAZELLE_ENABLE CHECKSUM_OFFLOAD_SWITCH */
};
@@ -259,7 +260,9 @@ struct pbuf_custom {
/** In case the user needs to store data custom data on a pbuf */
@@ -263,7 +264,9 @@ struct pbuf_custom {
/** The actual pbuf */
struct pbuf pbuf;
/** This function is called when pbuf_free deallocates this pbuf(_custom) */
@ -385,10 +386,10 @@ index 414ead4..0d2a6d9 100644
+
#endif /* __LWIPOPTS_H__ */
diff --git a/src/include/lwipsock.h b/src/include/lwipsock.h
index affb598..0ae5896 100644
index 7e16ec8..f917d8a 100644
--- a/src/include/lwipsock.h
+++ b/src/include/lwipsock.h
@@ -66,7 +66,19 @@ struct protocol_stack;
@@ -65,7 +65,19 @@ struct protocol_stack;
struct wakeup_poll;
struct rte_ring;
#include <rte_common.h>
@ -408,7 +409,7 @@ index affb598..0ae5896 100644
/** Contains all internal pointers and states used for a socket */
struct lwip_sock {
/** sockets currently are built on netconns, each socket has one netconn */
@@ -121,9 +133,25 @@ struct lwip_sock {
@@ -120,9 +132,25 @@ struct lwip_sock {
struct protocol_stack *stack;
struct rte_ring *recv_ring;
struct rte_ring *send_ring;
@ -434,7 +435,7 @@ index affb598..0ae5896 100644
#ifndef set_errno
#define set_errno(err) do { if (err) { errno = (err); } } while(0)
#endif
@@ -143,6 +171,15 @@ extern struct pbuf *write_lwip_data(struct lwip_sock *sock, uint16_t remain_size
@@ -142,6 +170,15 @@ extern struct pbuf *write_lwip_data(struct lwip_sock *sock, uint16_t remain_size
extern void gazelle_init_sock(int32_t fd);
extern void gazelle_clean_sock(int32_t fd);
extern void write_lwip_over(struct lwip_sock *sock);
@ -451,5 +452,5 @@ index affb598..0ae5896 100644
struct lwip_sock *get_socket(int s);
--
2.33.0
2.23.0

View File

@ -1,17 +1,17 @@
From c9160774740e802c678acaa9602400ea5c506304 Mon Sep 17 00:00:00 2001
From: FanBin <fanbin12@huawei.com>
Date: Tue, 21 Mar 2023 10:23:27 +0800
Subject: [PATCH] lwip send/recv thread bind numa
From 0e16f4ec71b0794f48cb7b9e99712c36e40d4d48 Mon Sep 17 00:00:00 2001
From: kircher <majun65@huawei.com>
Date: Wed, 22 Mar 2023 15:16:04 +0800
Subject: [PATCH] lwip-send-recv-thread-bind-numa
---
src/include/lwipsock.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/include/lwipsock.h b/src/include/lwipsock.h
index 0ae5896..769644f 100644
index f917d8a..f8480c5 100644
--- a/src/include/lwipsock.h
+++ b/src/include/lwipsock.h
@@ -139,6 +139,7 @@ struct lwip_sock {
@@ -138,6 +138,7 @@ struct lwip_sock {
const struct rte_memzone *same_node_rx_ring_mz;
struct same_node_ring *same_node_tx_ring;
const struct rte_memzone *same_node_tx_ring_mz;

View File

@ -1,7 +1,7 @@
From df56c06ad1bab9d33a26fac4046265a202766693 Mon Sep 17 00:00:00 2001
From d9ef907e03f44c30e26190b0c5ad895de716ac5c Mon Sep 17 00:00:00 2001
From: kircher <majun65@huawei.com>
Date: Sat, 13 May 2023 14:56:33 +0800
Subject: [PATCH] udp
Date: Fri, 12 May 2023 20:54:51 +0800
Subject: [PATCH] add udp multicast in support
---
src/api/api_msg.c | 5 +++++
@ -16,7 +16,7 @@ Subject: [PATCH] udp
9 files changed, 78 insertions(+), 8 deletions(-)
diff --git a/src/api/api_msg.c b/src/api/api_msg.c
index f059759..bc66eb5 100644
index 1840c9d..0287c06 100644
--- a/src/api/api_msg.c
+++ b/src/api/api_msg.c
@@ -282,8 +282,13 @@ recv_udp(void *arg, struct udp_pcb *pcb, struct pbuf *p,
@ -34,7 +34,7 @@ index f059759..bc66eb5 100644
}
#endif /* LWIP_UDP */
diff --git a/src/api/sockets.c b/src/api/sockets.c
index 30e5745..706c892 100644
index 7a5da26..a0f9d50 100644
--- a/src/api/sockets.c
+++ b/src/api/sockets.c
@@ -54,6 +54,7 @@
@ -45,7 +45,7 @@ index 30e5745..706c892 100644
#if LWIP_CHECKSUM_ON_COPY
#include "lwip/inet_chksum.h"
#endif
@@ -1188,7 +1189,7 @@ lwip_recv_tcp_done:
@@ -1187,7 +1188,7 @@ lwip_recv_tcp_done:
#endif
/* Convert a netbuf's address data to struct sockaddr */
@ -54,7 +54,7 @@ index 30e5745..706c892 100644
lwip_sock_make_addr(struct netconn *conn, ip_addr_t *fromaddr, u16_t port,
struct sockaddr *from, socklen_t *fromlen)
{
@@ -1275,6 +1276,7 @@ lwip_recvfrom_udp_raw(struct lwip_sock *sock, int flags, struct msghdr *msg, u16
@@ -1274,6 +1275,7 @@ lwip_recvfrom_udp_raw(struct lwip_sock *sock, int flags, struct msghdr *msg, u16
apiflags = 0;
}
@ -62,7 +62,7 @@ index 30e5745..706c892 100644
LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_recvfrom_udp_raw[UDP/RAW]: top sock->lastdata=%p\n", (void *)sock->lastdata.netbuf));
/* Check if there is data left from the last recv operation. */
buf = sock->lastdata.netbuf;
@@ -1362,6 +1364,18 @@ lwip_recvfrom_udp_raw(struct lwip_sock *sock, int flags, struct msghdr *msg, u16
@@ -1361,6 +1363,18 @@ lwip_recvfrom_udp_raw(struct lwip_sock *sock, int flags, struct msghdr *msg, u16
sock->lastdata.netbuf = NULL;
netbuf_delete(buf);
}
@ -81,7 +81,7 @@ index 30e5745..706c892 100644
if (datagram_len) {
*datagram_len = buflen;
}
@@ -1410,6 +1424,7 @@ lwip_recvfrom(int s, void *mem, size_t len, int flags,
@@ -1409,6 +1423,7 @@ lwip_recvfrom(int s, void *mem, size_t len, int flags,
done_socket(sock);
return -1;
}
@ -89,7 +89,7 @@ index 30e5745..706c892 100644
ret = (ssize_t)LWIP_MIN(LWIP_MIN(len, datagram_len), SSIZE_MAX);
if (fromlen) {
*fromlen = msg.msg_namelen;
@@ -3950,6 +3965,10 @@ lwip_ioctl(int s, long cmd, ...)
@@ -3956,6 +3971,10 @@ lwip_ioctl(int s, long cmd, ...)
struct lwip_sock *sock = posix_api->get_socket(s);
u8_t val;
@ -113,7 +113,7 @@ index ebc01a5..57a9670 100644
$(eval $(call register_dir, core, $(SRC)))
diff --git a/src/core/udp.c b/src/core/udp.c
index 238e5a4..3c04f7b 100644
index a5f76b9..1398537 100644
--- a/src/core/udp.c
+++ b/src/core/udp.c
@@ -65,6 +65,12 @@
@ -192,11 +192,11 @@ index 238e5a4..3c04f7b 100644
NETIF_RESET_HINTS(netif);
diff --git a/src/include/dpdk_cksum.h b/src/include/dpdk_cksum.h
index da3ca04..b317811 100644
index df2e2a5..e41644b 100644
--- a/src/include/dpdk_cksum.h
+++ b/src/include/dpdk_cksum.h
@@ -83,6 +83,10 @@ static inline void tcph_cksum_set(struct pbuf *p, u16_t len) {
p->ol_flags |= PKT_TX_TCP_CKSUM;
@@ -82,6 +82,10 @@ static inline void tcph_cksum_set(struct pbuf *p, u16_t len) {
p->ol_flags |= RTE_MBUF_F_TX_TCP_CKSUM;
}
+static inline void udph_cksum_set(struct pbuf *p, u16_t len) {
@ -207,7 +207,7 @@ index da3ca04..b317811 100644
const ip_addr_t *src, const ip_addr_t *dst)
{
diff --git a/src/include/lwip/opt.h b/src/include/lwip/opt.h
index 00e5565..34cd846 100644
index 0376f60..38c6e9b 100644
--- a/src/include/lwip/opt.h
+++ b/src/include/lwip/opt.h
@@ -133,6 +133,7 @@
@ -227,7 +227,7 @@ index 00e5565..34cd846 100644
#endif
#if !LWIP_IPV4
#undef LWIP_IGMP
@@ -2025,7 +2026,7 @@
@@ -2030,7 +2031,7 @@
* LWIP_SO_RCVBUF==1: Enable SO_RCVBUF processing.
*/
#if !defined LWIP_SO_RCVBUF || defined __DOXYGEN__
@ -237,7 +237,7 @@ index 00e5565..34cd846 100644
/**
diff --git a/src/include/lwip/pbuf.h b/src/include/lwip/pbuf.h
index ecc51ce..dfbb74c 100644
index 9321afc..fb21134 100644
--- a/src/include/lwip/pbuf.h
+++ b/src/include/lwip/pbuf.h
@@ -40,6 +40,8 @@
@ -249,15 +249,15 @@ index ecc51ce..dfbb74c 100644
#ifdef __cplusplus
extern "C" {
@@ -235,6 +237,8 @@ struct pbuf {
@@ -236,6 +238,8 @@ struct pbuf {
struct pbuf *last;
pthread_spinlock_t pbuf_lock;
struct tcp_pcb *pcb;
+ ip_addr_t addr;
+ u16_t port;
#endif /* GAZELLE_ENABLE CHECKSUM_OFFLOAD_SWITCH */
};
/** In case the user needs to store data custom data on a pbuf */
diff --git a/src/include/lwip/sockets.h b/src/include/lwip/sockets.h
index 58acf0f..36a47eb 100644
--- a/src/include/lwip/sockets.h

View File

@ -0,0 +1,29 @@
From 21f7f9a5bdfd5d2f592af19e73647a48fdbb7bf1 Mon Sep 17 00:00:00 2001
From: kircher <majun65@huawei.com>
Date: Tue, 16 May 2023 19:07:42 +0800
Subject: [PATCH] fix pbuf leak in udp connection
---
src/core/udp.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/core/udp.c b/src/core/udp.c
index 1398537..9c3cdaa 100644
--- a/src/core/udp.c
+++ b/src/core/udp.c
@@ -933,8 +933,11 @@ udp_sendto_if_src_chksum(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *d
/* @todo: must this be increased even if error occurred? */
MIB2_STATS_INC(mib2.udpoutdatagrams);
+#if !GAZELLE_ENABLE
/* did we chain a separate header pbuf earlier? */
- if (q != p) {
+ if (q != p)
+#endif
+ {
/* free the header pbuf */
pbuf_free(q);
q = NULL;
--
2.33.0

View File

@ -0,0 +1,249 @@
From 2e51934e230013c9df58971df53a08dad108becf Mon Sep 17 00:00:00 2001
From: kircher <majun65@huawei.com>
Date: Mon, 29 May 2023 19:58:52 +0800
Subject: [PATCH] drop-netbuf-in-recv_udp-to-fix-mem-overflow
---
src/api/api_lib.c | 14 ++++++++++++++
src/api/api_msg.c | 15 ++++++++++++---
src/api/sockets.c | 6 +++---
src/core/udp.c | 8 ++++++++
src/include/lwip/api.h | 3 +++
src/include/lwip/pbuf.h | 4 ++++
src/include/lwip/sockets.h | 8 ++++----
src/include/lwipopts.h | 4 ++++
8 files changed, 52 insertions(+), 10 deletions(-)
diff --git a/src/api/api_lib.c b/src/api/api_lib.c
index ffa14d6..afdfc11 100644
--- a/src/api/api_lib.c
+++ b/src/api/api_lib.c
@@ -655,7 +655,11 @@ netconn_recv_data(struct netconn *conn, void **new_buf, u8_t apiflags)
#if (LWIP_UDP || LWIP_RAW)
{
LWIP_ASSERT("buf != NULL", buf != NULL);
+#if GAZELLE_UDP_ENABLE
+ len = ((struct pbuf *)buf)->tot_len;
+#else /* GAZELLE_UDP_ENABLE */
len = netbuf_len((struct netbuf *)buf);
+#endif /* GAZELLE_UDP_ENABLE */
}
#endif /* (LWIP_UDP || LWIP_RAW) */
@@ -827,6 +831,16 @@ netconn_recv_udp_raw_netbuf(struct netconn *conn, struct netbuf **new_buf)
return netconn_recv_data(conn, (void **)new_buf, 0);
}
+#if GAZELLE_UDP_ENABLE
+err_t
+netconn_recv_udp_raw_pbuf_flags(struct netconn *conn, struct pbuf **new_buf, u8_t apiflags)
+{
+ LWIP_ERROR("netconn_recv_udp_raw_pbuf: invalid conn", (conn != NULL) &&
+ NETCONNTYPE_GROUP(netconn_type(conn)) != NETCONN_TCP, return ERR_ARG;);
+ return netconn_recv_data(conn, (void **)new_buf, apiflags);
+}
+#endif /* GAZELLE_UDP_ENABLE */
+
/**
* Receive data (in form of a netbuf) from a UDP or RAW netconn
*
diff --git a/src/api/api_msg.c b/src/api/api_msg.c
index 30929be..b82ebf2 100644
--- a/src/api/api_msg.c
+++ b/src/api/api_msg.c
@@ -253,6 +253,14 @@ recv_udp(void *arg, struct udp_pcb *pcb, struct pbuf *p,
return;
}
+#if GAZELLE_UDP_ENABLE
+ LWIP_UNUSED_ARG(buf);
+ ip_addr_set(&p->addr, addr);
+ p->port = port;
+ len = p->tot_len;
+ if (sys_mbox_trypost(&conn->recvmbox, p) != ERR_OK) {
+ return;
+#else /* GAZELLE_UDP_ENABLE */
buf = (struct netbuf *)memp_malloc(MEMP_NETBUF);
if (buf == NULL) {
pbuf_free(p);
@@ -277,17 +285,18 @@ recv_udp(void *arg, struct udp_pcb *pcb, struct pbuf *p,
if (sys_mbox_trypost(&conn->recvmbox, buf) != ERR_OK) {
netbuf_delete(buf);
return;
+#endif /* GAZELLE_UDP_ENABLE */
} else {
#if LWIP_SO_RCVBUF
SYS_ARCH_INC(conn->recv_avail, len);
#endif /* LWIP_SO_RCVBUF */
-#if GAZELLE_ENABLE
+#if GAZELLE_UDP_ENABLE
add_recv_list(conn->socket);
LWIP_UNUSED_ARG(len);
-#else
+#else /* GAZELLE_UDP_ENABLE */
/* Register event with callback */
API_EVENT(conn, NETCONN_EVT_RCVPLUS, len);
-#endif
+#endif /* GAZELLE_UDP_ENABLE */
}
}
#endif /* LWIP_UDP */
diff --git a/src/api/sockets.c b/src/api/sockets.c
index dee9230..17691f7 100644
--- a/src/api/sockets.c
+++ b/src/api/sockets.c
@@ -1179,7 +1179,7 @@ lwip_recvfrom_udp_raw(struct lwip_sock *sock, int flags, struct msghdr *msg, u16
apiflags = 0;
}
-#if !GAZELLE_ENABLE
+#if !GAZELLE_UDP_ENABLE
LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_recvfrom_udp_raw[UDP/RAW]: top sock->lastdata=%p\n", (void *)sock->lastdata.netbuf));
/* Check if there is data left from the last recv operation. */
buf = sock->lastdata.netbuf;
@@ -1267,7 +1267,7 @@ lwip_recvfrom_udp_raw(struct lwip_sock *sock, int flags, struct msghdr *msg, u16
sock->lastdata.netbuf = NULL;
netbuf_delete(buf);
}
-#else /* GAZELLE_ENABLE */
+#else /* GAZELLE_UDP_ENABLE */
LWIP_UNUSED_ARG(copylen);
LWIP_UNUSED_ARG(buf);
LWIP_UNUSED_ARG(err);
@@ -1278,7 +1278,7 @@ lwip_recvfrom_udp_raw(struct lwip_sock *sock, int flags, struct msghdr *msg, u16
return ERR_BUF;
}
-#endif /* GAZELLE_ENABLE */
+#endif /* GAZELLE_UDP_ENABLE */
if (datagram_len) {
*datagram_len = buflen;
}
diff --git a/src/core/udp.c b/src/core/udp.c
index 170c911..1eb459d 100644
--- a/src/core/udp.c
+++ b/src/core/udp.c
@@ -599,6 +599,7 @@ udp_sendto_chksum(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip,
UDP_STATS_INC(udp.rterr);
return ERR_RTE;
}
+#if GAZELLE_UDP_ENABLE
uint8_t apiflags = 0;
struct pbuf *udp_pbuf = write_lwip_data((struct lwip_sock *)(p->payload), p->tot_len, &apiflags);
@@ -611,14 +612,21 @@ udp_sendto_chksum(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip,
}
if (p->port) {
+#if LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP
+ return udp_sendto_if_chksum(pcb, p, &(p->addr), p->port, netif, have_chksum, chksum);
+#else /* LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP */
return udp_sendto_if(pcb, p, &(p->addr), p->port, netif);
+#endif /* LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP */
} else {
+#endif /* GAZELLE_UDP_ENABLE */
#if LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP
return udp_sendto_if_chksum(pcb, p, dst_ip, dst_port, netif, have_chksum, chksum);
#else /* LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP */
return udp_sendto_if(pcb, p, dst_ip, dst_port, netif);
#endif /* LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP */
+#if GAZELLE_UDP_ENABLE
}
+#endif /* GAZELLE_UDP_ENABLE */
}
/**
diff --git a/src/include/lwip/api.h b/src/include/lwip/api.h
index d3c4f02..6090cab 100644
--- a/src/include/lwip/api.h
+++ b/src/include/lwip/api.h
@@ -338,6 +338,9 @@ err_t netconn_accept(struct netconn *conn, struct netconn **new_conn);
err_t netconn_recv(struct netconn *conn, struct netbuf **new_buf);
err_t netconn_recv_udp_raw_netbuf(struct netconn *conn, struct netbuf **new_buf);
err_t netconn_recv_udp_raw_netbuf_flags(struct netconn *conn, struct netbuf **new_buf, u8_t apiflags);
+#if GAZELLE_UDP_ENABLE
+err_t netconn_recv_udp_raw_pbuf_flags(struct netconn *conn, struct pbuf **new_buf, u8_t apiflags);
+#endif /* GAZELLE_UDP_ENABLE */
err_t netconn_recv_tcp_pbuf(struct netconn *conn, struct pbuf **new_buf);
err_t netconn_recv_tcp_pbuf_flags(struct netconn *conn, struct pbuf **new_buf, u8_t apiflags);
err_t netconn_tcp_recvd(struct netconn *conn, size_t len);
diff --git a/src/include/lwip/pbuf.h b/src/include/lwip/pbuf.h
index 728c5e4..4747f39 100644
--- a/src/include/lwip/pbuf.h
+++ b/src/include/lwip/pbuf.h
@@ -40,8 +40,10 @@
#include "lwip/opt.h"
#include "lwip/err.h"
+#if GAZELLE_UDP_ENABLE
#include "lwip/ip_addr.h"
#include "lwip/ip6_addr.h"
+#endif /* GAZELLE_UDP_ENABLE */
#ifdef __cplusplus
extern "C" {
@@ -238,8 +240,10 @@ struct pbuf {
struct pbuf *last;
pthread_spinlock_t pbuf_lock;
struct tcp_pcb *pcb;
+#if GAZELLE_UDP_ENABLE
ip_addr_t addr;
u16_t port;
+#endif /* GAZELLE_UDP_ENABLE */
#endif /* GAZELLE_ENABLE CHECKSUM_OFFLOAD_SWITCH */
/** In case the user needs to store data custom data on a pbuf */
diff --git a/src/include/lwip/sockets.h b/src/include/lwip/sockets.h
index 643093a..2b6e6be 100644
--- a/src/include/lwip/sockets.h
+++ b/src/include/lwip/sockets.h
@@ -330,7 +330,7 @@ struct linger {
#if LWIP_MULTICAST_TX_OPTIONS
-#if GAZELLE_ENABLE
+#if GAZELLE_UDP_ENABLE
#define IP_MULTICAST_IF 32
#define IP_MULTICAST_TTL 33
#define IP_MULTICAST_LOOP 34
@@ -341,11 +341,11 @@ struct linger {
#define IP_MULTICAST_TTL 5
#define IP_MULTICAST_IF 6
#define IP_MULTICAST_LOOP 7
-#endif /* GAZELLE_ENABLE */
+#endif /* GAZELLE_UDP_ENABLE */
#endif /* LWIP_MULTICAST_TX_OPTIONS */
#if LWIP_IGMP
-#if GAZELLE_ENABLE
+#if GAZELLE_UDP_ENABLE
#define IP_ADD_MEMBERSHIP 35
#define IP_DROP_MEMBERSHIP 36
#else
@@ -354,7 +354,7 @@ struct linger {
*/
#define IP_ADD_MEMBERSHIP 3
#define IP_DROP_MEMBERSHIP 4
-#endif /* GAZELLE_ENABLE */
+#endif /* GAZELLE_UDP_ENABLE */
typedef struct ip_mreq {
struct in_addr imr_multiaddr; /* IP multicast address of group */
diff --git a/src/include/lwipopts.h b/src/include/lwipopts.h
index 6b5a2d1..9804aed 100644
--- a/src/include/lwipopts.h
+++ b/src/include/lwipopts.h
@@ -63,6 +63,10 @@
#define GAZELLE_TCP_MIN_TSO_SEG_LEN 256
+
+#define GAZELLE_UDP_ENABLE 1
+
+
/*
----------------------------------
---------- NIC offloads ----------
--
2.33.0

View File

@ -0,0 +1,169 @@
From 71d82a830005540ef92b2bcd7c121c9ff85beb64 Mon Sep 17 00:00:00 2001
From: j00660176 <jiangheng14@huawei.com>
Date: Mon, 12 Jun 2023 20:21:23 +0800
Subject: [PATCH] fix udp send/recv in multiple queue
---
src/core/udp.c | 73 +++++++++++++++++++++++++++++++++++++++---
src/include/lwip/udp.h | 4 +++
2 files changed, 73 insertions(+), 4 deletions(-)
diff --git a/src/core/udp.c b/src/core/udp.c
index fba645b..0b1fa65 100644
--- a/src/core/udp.c
+++ b/src/core/udp.c
@@ -65,10 +65,12 @@
#include <string.h>
-#if GAZELLE_ENABLE
-#include "lwipsock.h"
+#if GAZELLE_UDP_ENABLE
+#include <pthread.h>
#include <rte_prefetch.h>
+#include "lwipsock.h"
#include "dpdk_cksum.h"
+#include "reg_sock.h"
#endif
#ifndef UDP_LOCAL_PORT_RANGE_START
@@ -81,10 +83,24 @@
/* last local UDP port */
static u16_t udp_port = UDP_LOCAL_PORT_RANGE_START;
+#if GAZELLE_UDP_ENABLE
+static pthread_mutex_t g_udp_port_mutex = PTHREAD_MUTEX_INITIALIZER;
+static u8_t port_state[UDP_LOCAL_PORT_RANGE_END - UDP_LOCAL_PORT_RANGE_START + 1] = {0};
+static void udp_release_port(u16_t port)
+{
+ if (port >= UDP_LOCAL_PORT_RANGE_START && port <= UDP_LOCAL_PORT_RANGE_END) {
+ port_state[port - UDP_LOCAL_PORT_RANGE_START] = 0;
+ }
+}
+#endif
/* The list of UDP PCBs */
/* exported in udp.h (was static) */
+#if GAZELLE_UDP_ENABLE
+PER_THREAD struct udp_pcb *udp_pcbs;
+#else
struct udp_pcb *udp_pcbs;
+#endif
/**
* Initialize this module.
@@ -102,6 +118,37 @@ udp_init(void)
*
* @return a new (free) local UDP port number
*/
+#if GAZELLE_UDP_ENABLE
+static u16_t
+udp_new_port(struct udp_pcb *dst_pcb)
+{
+ u16_t n = 0;
+ u16_t tmp_port = 0;
+
+ pthread_mutex_lock(&g_udp_port_mutex);
+ do {
+ if (udp_port++ == UDP_LOCAL_PORT_RANGE_END) {
+ udp_port = UDP_LOCAL_PORT_RANGE_START;
+ }
+
+ if (__atomic_load_n(&port_state[udp_port - UDP_LOCAL_PORT_RANGE_START], __ATOMIC_ACQUIRE) == 0) {
+ if (port_in_stack_queue(dst_pcb->remote_ip.addr, dst_pcb->local_ip.addr, dst_pcb->remote_port, udp_port)) {
+ tmp_port = udp_port;
+ __atomic_store_n(&port_state[udp_port - UDP_LOCAL_PORT_RANGE_START], 1, __ATOMIC_RELEASE);
+ break;
+ }
+ }
+ n++;
+ if (n > UDP_LOCAL_PORT_RANGE_END - UDP_LOCAL_PORT_RANGE_START) {
+ break;
+ }
+ } while (tmp_port == 0);
+
+ pthread_mutex_unlock(&g_udp_port_mutex);
+
+ return tmp_port;
+}
+#else
static u16_t
udp_new_port(void)
{
@@ -123,6 +170,7 @@ again:
}
return udp_port;
}
+#endif
/** Common code to see if the current input packet matches the pcb
* (current input packet is accessed via ip(4/6)_current_* macros)
@@ -789,7 +837,21 @@ udp_sendto_if_src_chksum(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *d
/* if the PCB is not yet bound to a port, bind it here */
if (pcb->local_port == 0) {
LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_send: not yet bound to a port, binding now\n"));
+#if GAZELLE_UDP_ENABLE
+ ip_addr_t tmp_local_ip = pcb->local_ip;
+ ip_addr_t tmp_remote_ip = pcb->remote_ip;
+ u16_t tmp_remote_port = pcb->remote_port;
+
+ pcb->local_ip = netif->ip_addr;
+ pcb->remote_port = dst_port;
+ pcb->remote_ip = *dst_ip;
+#endif
err = udp_bind(pcb, &pcb->local_ip, pcb->local_port);
+#if GAZELLE_UDP_ENABLE
+ pcb->local_ip = tmp_local_ip;
+ pcb->remote_ip = tmp_remote_ip;
+ pcb->remote_port = tmp_remote_port;
+#endif
if (err != ERR_OK) {
LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: forced port bind failed\n"));
return err;
@@ -941,7 +1003,7 @@ udp_sendto_if_src_chksum(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *d
/* @todo: must this be increased even if error occurred? */
MIB2_STATS_INC(mib2.udpoutdatagrams);
-#if !GAZELLE_ENABLE
+#if !GAZELLE_UDP_ENABLE
/* did we chain a separate header pbuf earlier? */
if (q != p)
#endif
@@ -1026,7 +1088,7 @@ udp_bind(struct udp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
/* no port specified? */
if (port == 0) {
- port = udp_new_port();
+ port = udp_new_port(pcb);
if (port == 0) {
/* no more ports available in local range */
LWIP_DEBUGF(UDP_DEBUG, ("udp_bind: out of free UDP ports\n"));
@@ -1252,6 +1314,9 @@ udp_remove(struct udp_pcb *pcb)
}
}
}
+#if GAZELLE_UDP_ENABLE
+ udp_release_port(pcb->local_port);
+#endif
memp_free(MEMP_UDP_PCB, pcb);
}
diff --git a/src/include/lwip/udp.h b/src/include/lwip/udp.h
index b1c78e5..f588d90 100644
--- a/src/include/lwip/udp.h
+++ b/src/include/lwip/udp.h
@@ -112,7 +112,11 @@ struct udp_pcb {
void *recv_arg;
};
/* udp_pcbs export for external reference (e.g. SNMP agent) */
+#if GAZELLE_UDP_ENABLE
+extern PER_THREAD struct udp_pcb *udp_pcbs;
+#else
extern struct udp_pcb *udp_pcbs;
+#endif
/* The following functions is the application layer interface to the
UDP code. */
--
2.33.0

View File

@ -0,0 +1,24 @@
From b94a7024bc7dc4984039b4f54aff3dbdcd21d8b8 Mon Sep 17 00:00:00 2001
From: jiangheng12 <jiangheng14@huawei.com>
Date: Wed, 14 Jun 2023 18:34:12 +0800
Subject: [PATCH] fix udp recvmbox size not set
---
src/include/lwipopts.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/include/lwipopts.h b/src/include/lwipopts.h
index 6b5c769..f0df0e3 100644
--- a/src/include/lwipopts.h
+++ b/src/include/lwipopts.h
@@ -180,6 +180,7 @@
---------------------------------
*/
#define LWIP_UDP 1
+#define DEFAULT_UDP_RECVMBOX_SIZE 4096
/*
--
2.23.0

View File

@ -0,0 +1,144 @@
From a8ca1b0361d5b31e437fd70d17860248dd44ddf7 Mon Sep 17 00:00:00 2001
From: Lemmy Huang <huangliming5@huawei.com>
Date: Thu, 15 Jun 2023 09:06:58 +0800
Subject: [PATCH] adapt to dpdk-19.11 and dpdk-21.11
Signed-off-by: Lemmy Huang <huangliming5@huawei.com>
---
src/Makefile | 3 +++
src/include/arch/sys_arch.h | 1 +
src/include/dpdk_cksum.h | 3 +++
src/include/dpdk_version.h | 52 +++++++++++++++++++++++++++++++++++++
src/include/eventpoll.h | 1 +
src/include/reg_sock.h | 2 ++
6 files changed, 62 insertions(+)
create mode 100644 src/include/dpdk_version.h
diff --git a/src/Makefile b/src/Makefile
index f445601b..480470fb 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -19,6 +19,9 @@ ARFLAGS = crDP
ifeq ($(shell $(CC) -dumpmachine | cut -d"-" -f1), x86_64)
CFLAGS += -mssse3
endif
+ifeq ($(DPDK_VERSION_1911), 1)
+ CFLAGS += -DDPDK_VERSION_1911=1
+endif
SRCS =
DIRS = api core netif
diff --git a/src/include/arch/sys_arch.h b/src/include/arch/sys_arch.h
index 04e3192a..5e95f3d3 100644
--- a/src/include/arch/sys_arch.h
+++ b/src/include/arch/sys_arch.h
@@ -79,6 +79,7 @@ typedef struct sys_thread *sys_thread_t;
#if GAZELLE_ENABLE
extern int eth_dev_poll(void);
#include <rte_ring.h>
+#include "dpdk_version.h"
/*
gazelle custom rte ring interface
diff --git a/src/include/dpdk_cksum.h b/src/include/dpdk_cksum.h
index e41644b5..b48c9267 100644
--- a/src/include/dpdk_cksum.h
+++ b/src/include/dpdk_cksum.h
@@ -34,8 +34,11 @@
#define __DPDK_CKSUM_H__
#include "lwipopts.h"
+
#if GAZELLE_ENABLE
+#include <stdbool.h>
#include <rte_ethdev.h>
+#include "dpdk_version.h"
#if CHECKSUM_OFFLOAD_ALL
#include <rte_mbuf_core.h>
diff --git a/src/include/dpdk_version.h b/src/include/dpdk_version.h
new file mode 100644
index 00000000..43b254a8
--- /dev/null
+++ b/src/include/dpdk_version.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ *
+ * This file is part of the lwIP TCP/IP stack.
+ *
+ * Author: Huawei Technologies
+ *
+ */
+
+#ifndef __DPDK_VERSION_H__
+#define __DPDK_VERSION_H__
+
+#if DPDK_VERSION_1911
+#define __rte_ring_enqueue_elems(r, prod_head, obj_table, esize, n) \
+ ENQUEUE_PTRS(r, &r[1], prod_head, (obj_table), n, void *)
+
+#define __rte_ring_dequeue_elems(r, cons_head, obj_table, esize, n) \
+ DEQUEUE_PTRS(r, &r[1], cons_head, (obj_table), n, void *)
+
+#define RTE_MBUF_F_RX_IP_CKSUM_BAD PKT_RX_IP_CKSUM_BAD
+#define RTE_MBUF_F_RX_L4_CKSUM_BAD PKT_RX_L4_CKSUM_BAD
+#define RTE_MBUF_F_TX_IPV4 PKT_TX_IPV4
+#define RTE_MBUF_F_TX_IP_CKSUM PKT_TX_IP_CKSUM
+#define RTE_MBUF_F_TX_TCP_CKSUM PKT_TX_TCP_CKSUM
+#define RTE_MBUF_F_TX_TCP_SEG PKT_TX_TCP_SEG
+
+#endif /* DPDK_VERSION_1911 */
+
+#endif /* __DPDK_VERSION_H__ */
diff --git a/src/include/eventpoll.h b/src/include/eventpoll.h
index a10c84bf..dd65a4d5 100644
--- a/src/include/eventpoll.h
+++ b/src/include/eventpoll.h
@@ -35,6 +35,7 @@
#include <sys/epoll.h>
+#include "arch/sys_arch.h"
#include "lwip/api.h"
#include "list.h"
diff --git a/src/include/reg_sock.h b/src/include/reg_sock.h
index e349e854..5d5710d7 100644
--- a/src/include/reg_sock.h
+++ b/src/include/reg_sock.h
@@ -33,6 +33,8 @@
#ifndef __REG_SOCK_H__
#define __REG_SOCK_H__
+#include <stdbool.h>
+
enum reg_ring_type {
REG_RING_TCP_LISTEN = 0,
REG_RING_TCP_LISTEN_CLOSE,
--
2.22.0.windows.1

View File

@ -1,34 +0,0 @@
From ffbe075d5623c44bbf37618cce78d09ccd4e6760 Mon Sep 17 00:00:00 2001
From: Florent Matignon <florent.matignon@gmail.com>
Date: Thu, 20 Sep 2018 16:40:34 +0200
Subject: [PATCH] bug #54700: Unexpected expiry of pending ARP table entry
New etharp queries should restart the 5 second timeout on the ARP
table entry if it is still pending.
Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>
Conflict: NA
Reference: https://git.savannah.gnu.org/cgit/lwip.git/commit/?id=ffbe075d5623c44bbf37618cce78d09ccd4e6760
---
src/core/ipv4/etharp.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/core/ipv4/etharp.c b/src/core/ipv4/etharp.c
index 442aac0..c3a5a10 100644
--- a/src/core/ipv4/etharp.c
+++ b/src/core/ipv4/etharp.c
@@ -983,6 +983,14 @@ etharp_query(struct netif *netif, const ip4_addr_t *ipaddr, struct pbuf *q)
/* We don't re-send arp request in etharp_tmr, but we still queue packets,
since this failure could be temporary, and the next packet calling
etharp_query again could lead to sending the queued packets. */
+ } else {
+ /* ARP request successfully sent */
+ if ((arp_table[i].state == ETHARP_STATE_PENDING) && !is_new_entry) {
+ /* A new ARP request has been sent for a pending entry. Reset the ctime to
+ not let it expire too fast. */
+ LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: reset ctime for entry %"S16_F"\n", (s16_t)i));
+ arp_table[i].ctime = 0;
+ }
}
if (q == NULL) {
return result;
--
1.8.3.1

View File

@ -1,24 +0,0 @@
From e80d4ff2cc5f8f864e9e996c72b47ebefd2a5175 Mon Sep 17 00:00:00 2001
From: Erik Ekman <erik@kryo.se>
Date: Fri, 19 Jun 2020 15:00:25 +0200
Subject: [PATCH] tcp: Fix double free in tcp_split_unsent_seg()
Fixes bug #57377 (found by Hiromasa Ito).
Conflict: NA
Reference: https://git.savannah.gnu.org/cgit/lwip.git/commit/?id=e80d4ff2cc5f8f864e9e996c72b47ebefd2a5175
---
src/core/tcp_out.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/core/tcp_out.c b/src/core/tcp_out.c
index bfb033b1..d9d1b57b 100644
--- a/src/core/tcp_out.c
+++ b/src/core/tcp_out.c
@@ -913,6 +913,7 @@ tcp_split_unsent_seg(struct tcp_pcb *pcb, u16_t split)
seg = tcp_create_segment(pcb, p, remainder_flags, lwip_ntohl(useg->tcphdr->seqno) + split, optflags);
if (seg == NULL) {
+ p = NULL; /* Freed by tcp_create_segment */
LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS,
("tcp_split_unsent_seg: could not create new TCP segment\n"));
goto memerr;
--
2.28.0.windows.1

Binary file not shown.

BIN
lwip-2.1.3.zip Normal file

Binary file not shown.

336
lwip.spec
View File

@ -3,76 +3,81 @@
Summary: lwip is a small independent implementation of the TCP/IP protocol suite
Name: lwip
Version: 2.1.2
Release: 40
Version: 2.1.3
Release: 70
License: BSD
URL: http://savannah.nongnu.org/projects/lwip/
Source0: http://download.savannah.nongnu.org/releases/lwip/%{name}-%{version}.zip
Patch6001: backport-bug-54700-Unexpected-expiry-of-pending-ARP-table-ent.patch
Patch6002: backport-tcp-Fix-double-free-in-tcp_split_unsent_seg.patch
Patch6003: backport-tcp-fix-sequence-number-comparison.patch
Patch6004: backport-tcp-tighten-up-checks-for-received-SYN.patch
Patch6001: backport-tcp-fix-sequence-number-comparison.patch
Patch6002: backport-tcp-tighten-up-checks-for-received-SYN.patch
Patch9001: 0001-add-makefile.patch
Patch9002: 0002-adapt-lstack.patch
Patch9003: 0003-fix-the-occasional-coredump-when-the-lwip-exits.patch
Patch9004: 0004-fix-error-of-deleting-conn-table-in-connect.patch
Patch9005: 0005-syn-rcvd-state-reg-conn-into-conntable.patch
Patch9006: 0006-fix-coredump-in-etharp.patch
Patch9007: 0007-gazelle-fix-epoll_ctl-EPOLLET-mode-error.patch
Patch9008: 0008-gazelle-fix-lwip_accept-memcpy-sockaddr-large.patch
Patch9009: 0009-fix-stack-buffer-overflow-when-memcpy-addr.patch
Patch9010: 0010-fix-the-incomplete-release-of-the-conntable.patch
Patch9011: 0011-remove-gazelle-tcp-conn-func.patch
Patch9012: 0012-fix-incomplete-resource-release-in-lwip-close.patch
Patch9013: 0013-remove-gazelle-syscall-thread.patch
Patch9014: 0014-fix-some-compile-errors.patch
Patch9015: 0015-fix-tcp-port-alloc-issue.patch
Patch9016: 0016-lstack-support-mysql-mode.patch
Patch9017: 0017-support-REUSEPOR-option.patch
Patch9018: 0018-exec-gazelle_init_sock-before-read-event.patch
Patch9019: 0019-gazelle-reduce-copy-in-send.patch
Patch9020: 0020-remove-chose_dlsym_handle-function-set-handle-to-RTL.patch
Patch9021: 0021-refactor-event-if-ring-is-full-the-node-is-added-to-.patch
Patch9022: 0022-notify-app-that-sock-state-changes-to-CLOSE_WAIT.patch
Patch9023: 0023-refactor-event-and-checksum-offload-support.patch
Patch9024: 0024-refactor-pkt-read-send-performance.patch
Patch9025: 0025-del-redundant-wait_close-and-move-epoll_events-pos.patch
Patch9026: 0026-modify-EISCONN-condition.patch
Patch9027: 0027-per-thread-reassdata-variables.patch
Patch9028: 0028-fix-EISCONN-err-and-remove-same-customized-modificat.patch
Patch9029: 0029-refactor-tcp-new-port.patch
Patch9030: 0030-refactor-add-event-limit-send-pkts-num.patch
Patch9031: 0031-fix-free-pbuf-miss-data.patch
Patch9032: 0032-alloc-socket-fail-clean-sock.patch
Patch9000: 0001-add-makefile.patch
Patch9001: 0002-adapt-lstack.patch
Patch9002: 0003-fix-the-occasional-coredump-when-the-lwip-exits.patch
Patch9003: 0004-fix-error-of-deleting-conn-table-in-connect.patch
Patch9004: 0005-syn-rcvd-state-reg-conn-into-conntable.patch
Patch9005: 0006-fix-coredump-in-etharp.patch
Patch9006: 0007-gazelle-fix-epoll_ctl-EPOLLET-mode-error.patch
Patch9007: 0008-gazelle-fix-lwip_accept-memcpy-sockaddr-large.patch
Patch9008: 0009-fix-stack-buffer-overflow-when-memcpy-addr.patch
Patch9009: 0010-fix-the-incomplete-release-of-the-conntable.patch
Patch9010: 0011-remove-gazelle-tcp-conn-func.patch
Patch9011: 0012-fix-incomplete-resource-release-in-lwip-close.patch
Patch9012: 0013-remove-gazelle-syscall-thread.patch
Patch9013: 0014-fix-some-compile-errors.patch
Patch9014: 0015-fix-tcp-port-alloc-issue.patch
Patch9015: 0016-lstack-support-mysql-mode.patch
Patch9016: 0017-support-REUSEPOR-option.patch
Patch9017: 0018-exec-gazelle_init_sock-before-read-event.patch
Patch9018: 0019-gazelle-reduce-copy-in-send.patch
Patch9019: 0020-remove-chose_dlsym_handle-function-set-handle-to-RTL.patch
Patch9020: 0021-refactor-event-if-ring-is-full-the-node-is-added-to-.patch
Patch9021: 0022-notify-app-that-sock-state-changes-to-CLOSE_WAIT.patch
Patch9022: 0023-refactor-event-and-checksum-offload-support.patch
Patch9023: 0024-refactor-pkt-read-send-performance.patch
Patch9024: 0025-Replace-gettid-with-syscall-SYS_gettid.patch
Patch9025: 0026-del-redundant-wait_close-and-move-epoll_events-pos.patch
Patch9026: 0027-modify-EISCONN-condition.patch
Patch9027: 0028-per-thread-reassdata-variables.patch
Patch9028: 0029-fix-EISCONN-err-and-remove-same-customized-modificat.patch
Patch9029: 0030-refactor-tcp-new-port.patch
Patch9030: 0031-refactor-add-event-limit-send-pkts-num.patch
Patch9031: 0032-fix-free-pbuf-miss-data.patch
Patch9032: 0033-alloc-socket-fail-clean-sock.patch
Patch9033: 0034-add-accept4-and-epoll_create1.patch
Patch9034: 0035-add-writev-and-readv.patch
Patch9035: 0036-enable-ARP-QUEUE-to-avoid-sync-packet-dropped.patch
Patch9036: 0037-add-tso.patch
Patch9037: 0038-optimize-app-thread-write-buff-block.patch
Patch9038: 0039-add-huge-snd_buf.patch
Patch9039: 0040-optimite-pcb-list-limit-send-size-and-ack-now.patch
Patch9040: 0041-expand-recv-win.patch
Patch9041: 0042-add-prefetch.patch
Patch9042: 0043-skip-unnecessary-tcp_route.patch
Patch9043: 0044-add-variable-in-struct-sock.patch
Patch9044: 0045-add-dataack-when-recv-too-many-acks-with-data.patch
Patch9045: 0046-reduce-struct-pbuf-size.patch
Patch9046: 0047-listen-pcb-also-use-pcb_if.patch
Patch9047: 0048-expand-recv-mbox-size.patch
Patch9048: 0049-lwip-reuse-ip-port.patch
Patch9049: 0050-lwip-add-need_tso_send.patch
Patch9050: 0051-lwip_fnctl-only-support-F_SETFL-F_GETFL.patch
Patch9051: 0052-cleancode-improve-lwipopts.h-readability.patch
Patch9052: 0053-reduce-cpu-usage-when-send.patch
Patch9053: 0054-add-pbuf-lock-when-aggregate-pbuf.patch
Patch9054: 0055-fix-tso-small-packet-drop-in-kernel-server.patch
Patch9055: 0056-same-node-gazellectl-a.patch
Patch9056: 0057-lwip-send-recv-thread-bind-numa.patch
Patch9057: 0058-fix-last_unsent-last_unacked.patch
Patch9058: 0059-lwip-add-udp-multicast.patch
Patch9059: 0060-optimize-avoid-too-many-empty-acks-in-tcp_input.patch
Patch9035: 0036-add-fs-secure-compilation-option.patch
Patch9036: 0037-enable-ARP-QUEUE-to-avoid-sync-packet-dropped.patch
Patch9037: 0038-add-tso.patch
Patch9038: 0039-optimize-app-thread-write-buff-block.patch
Patch9039: 0040-add-huge-snd_buf.patch
Patch9040: 0041-optimite-pcb-list-limit-send-size-and-ack-now.patch
Patch9041: 0042-expand-recv-win.patch
Patch9042: 0043-add-prefetch.patch
Patch9043: 0044-skip-unnecessary-tcp_route.patch
Patch9044: 0045-add-variable-in-struct-sock.patch
Patch9045: 0046-add-dataack-when-recv-too-many-acks-with-data.patch
Patch9046: 0047-reduce-struct-pbuf-size.patch
Patch9047: 0048-listen-pcb-also-use-pcb_if.patch
Patch9048: 0049-expand-recv-mbox-size.patch
Patch9049: 0050-lwip-reuse-ip-port.patch
Patch9050: 0051-lwip-add-need_tso_send.patch
Patch9051: 0052-lwip_fnctl-only-support-F_SETFL-F_GETFL.patch
Patch9052: 0053-cleancode-improve-lwipopts.h-readability.patch
Patch9053: 0054-reduce-cpu-usage-when-send.patch
Patch9054: 0055-add-pbuf-lock-when-aggregate-pbuf.patch
Patch9055: 0056-fix-tso-small-packet-drop-in-kernel-server.patch
Patch9056: 0057-same-node-gazellectl-a.patch
Patch9057: 0058-lwip-send-recv-thread-bind-numa.patch
Patch9058: 0059-fix-last_unsent-last_unacked.patch
Patch9059: 0060-lwip-add-udp-multicast.patch
Patch9060: 0061-fix-pbuf-leak-in-udp-connection.patch
Patch9061: 0062-drop-netbuf-in-recv_udp-to-fix-mem-overflow.patch
Patch9062: 0063-optimize-avoid-too-many-empty-acks-in-tcp_input.patch
Patch9063: 0064-fix-udp-send-recv-in-multiple-queue.patch
Patch9064: 0065-fix-udp-recvmbox-size-not-set.patch
Patch9065: 0066-adapt-to-dpdk-19.11-and-dpdk-21.11.patch
BuildRequires: gcc-c++ dos2unix dpdk-devel
@ -89,8 +94,7 @@ find %{_builddir}/%{name}-%{version} -type f -exec dos2unix -q {} \;
%patch6001 -p1
%patch6002 -p1
%patch6003 -p1
%patch6004 -p1
%patch9000 -p1
%patch9001 -p1
%patch9002 -p1
%patch9003 -p1
@ -150,8 +154,15 @@ find %{_builddir}/%{name}-%{version} -type f -exec dos2unix -q {} \;
%patch9057 -p1
%patch9058 -p1
%patch9059 -p1
%patch9060 -p1
%patch9061 -p1
%patch9062 -p1
%patch9063 -p1
%patch9064 -p1
%patch9065 -p1
%build
export DPDK_VERSION_1911=1
cd %{_builddir}/%{name}-%{version}/src
%make_build
@ -165,127 +176,228 @@ cd %{_builddir}/%{name}-%{version}/src
%{_libdir}/liblwip.a
%changelog
* Sat Jun 10 2023 Lemmy Huang <huangliming5@huawei.com> - 2.1.2-40
* Thu Jun 15 2023 Lemmy Huang <huangliming5@huawei.com> - 2.1.3-70
- adapt to dpdk-19.11 and dpdk-21.11
* Wed Jun 14 2023 jiangheng <jiangheng14@huawei.com> - 2.1.3-69
- fix udp recvmbox size not set
* Wed Jun 14 2023 jiangheng <jiangheng14@huawei.com> - 2.1.3-68
- fix udp send/recv in mutiple queue
* Thu Jun 07 2023 Lemmy Huang <huangliming5@huawei.com> - 2.1.3-67
- optimize: avoid too many empty acks in tcp_input
* Sat May 13 2023 kircher <majun65@huawei.com> - 2.1.2-39
* Tue Jun 06 2023 jiangheng <jiangheng14@huawei.com> - 2.1.3-66
- revert cleancode series patches
* Mon May 29 2023 kircher <majun65@huawei.com> - 2.1.3-65
- drop netbuf in recv_udp to fix mem overflow
* Mon May 29 2023 Lemmy Huang <huangliming5@huawei.com> - 2.1.3-64
- cleancode: refactor memp
* Mon May 29 2023 Lemmy Huang <huangliming5@huawei.com> - 2.1.3-63
- cleancode: refactor OFFLOAD_CHECKSUM GAZELLE_TCP_DATAACKS_REXMIT GAZELLE_TCP_NEW_PORT
* Mon May 29 2023 Lemmy Huang <huangliming5@huawei.com> - 2.1.3-62
- fix spec patch9069
* Mon May 29 2023 Lemmy Huang <huangliming5@huawei.com> - 2.1.3-61
- cleancode: refactor sys_now and lwip_ioctl
* Mon May 29 2023 Lemmy Huang <huangliming5@huawei.com> - 2.1.3-60
- cleancode: refactor GAZELLE_TCP_PCB_HASH
* Mon May 29 2023 Lemmy Huang <huangliming5@huawei.com> - 2.1.3-59
- cleancode: refactor options define
* Thu May 25 2023 Lemmy Huang <huangliming5@huawei.com> - 2.1.3-58
- cleancode: refactor gazelle_hlist.h
* Thu May 25 2023 Lemmy Huang <huangliming5@huawei.com> - 2.1.3-57
- cleancode: refactor gazelle_list.h
* Wed May 24 2023 Lemmy Huang <huangliming5@huawei.com> - 2.1.3-56
- cleancode: refactor gazelle_posix_api.h
* Tue May 23 2023 Lemmy Huang <huangliming5@huawei.com> - 2.1.3-55
- cleancode: refactor lwipsock.h
* Tue May 23 2023 Lemmy Huang <huangliming5@huawei.com> - 2.1.3-54
- cleancode: remove perf
- cleancode: rename gazelle files in lwip
* Tue May 23 2023 Lemmy Huang <huangliming5@huawei.com> - 2.1.3-53
- cleancode: improving makefile readability
* Mon May 16 2023 kircher <majun65@huawei.com> - 2.1.3-52
- fix pbuf leak in udp connection
* Fri May 12 2023 kircher <majun65@huawei.com> - 2.1.3-51
- add udp multicast support in lwip
* Sat Apr 01 2023 jiangheng <jiangheng14@huawei.com> - 2.1.2-38
* Sat Apr 01 2023 jiangheng <jiangheng14@huawei.com> - 2.1.3-50
- fix last_unsent/last_unacked error
- fix send failed due to pcb->nrtx > TCP_MAXRTX
* Tue Mar 21 2023 kircher <majun65@huawei.com> - 2.1.2-37
- lwip send/recv thread bind numa
* Wed Mar 22 2023 kircher <majun65@huawei.com> - 2.1.3-49
- lwip send recv thread bind numa
* Mon Mar 13 2023 jiangheng <jiangheng14@huawei.com> - 2.1.2-36
* Mon Mar 13 2023 jiangheng <jiangheng14@huawei.com> - 2.1.3-48
- add same node ring & gazellectl -a
* Mon Mar 13 2023 jiangheng <jiangheng14@huawei.com> - 2.1.2-35
* Mon Mar 13 2023 jiangheng <jiangheng14@huawei.com> - 2.1.3-47
- fix tso small packet drop in kernel server
* Mon Mar 13 2023 jiangheng <jiangheng14@huawei.com> - 2.1.2-34
- add pbuf lock when aggregate pbuf
* Mon Mar 13 2023 jiangheng <jiangheng14@huawei.com> - 2.1.3-46
- use pbuf lock when aggregate pbuf
* Fri Mar 10 2023 jiangheng <jiangheng14@huawei.com> - 2.1.2-33
* Fri Mar 10 2023 jiangheng <jiangheng14@huawei.com> - 2.1.3-45
- reduce cpu usage when send
* Thu Mar 9 2023 Lemmy Huang <huangliming5@huawei.com> - 2.1.2-32
* Thu Mar 9 2023 Lemmy Huang <huangliming5@huawei.com> - 2.1.3-44
- cleancode: improve lwipopts.h readability
* Tue Wed 22 2023 jiangheng <jiangheng14@huawei.com> - 2.1.2-31
* Tue Wed 22 2023 jiangheng <jiangheng14@huawei.com> - 2.1.3-43
- lwip_fnctl only suport F_SETFL,F_GETFL, other opt return 0 for compitable
* Tue Feb 21 2023 majun<majun65@huawei.com> - 2.1.2-30
* Tue Feb 21 2023 majun<majun65@huawei.com> - 2.1.3-42
- add lwip need_tso_send
* Tue Feb 14 2023 majun<majun65@huawei.com> - 2.1.2-29
* Tue Feb 14 2023 majun<majun65@huawei.com> - 2.1.3-41
- add lwip reuse ip port
* Sat Feb 11 2023 majun<majun65@huawei.com> - 2.1.2-28
* Sat Feb 11 2023 majun<majun65@huawei.com> - 2.1.3-40
- fix TSO snd_nxt incorrectly update
* Fri Dec 30 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.2-27
* Fri Dec 30 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.3-39
- expand recv mbox size
* Wed Dec 21 2022 jiangheng<jiangheng14@huawei.com> - 2.1.2-26
- move pcb_if to ip_pcb to let listen pcb use it
* Wed Dec 21 2022 jiangheng <jiangheng14@huawei.com> - 2.1.3-38
- move pcb_if to ip_pcb to let listen pcb can use it
* Wed Dec 21 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.2-25
* Wed Dec 21 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.3-37
- reduce struct pbuf size
* Wed Dec 21 2022 kircher<majun65@huawei.com> - 2.1.2-24
* Wed Dec 21 2022 kircher<majun65@huawei.com> - 2.1.3-36
- do not update cwnd when send dataack
* Tue Dec 20 2022 kircher<majun65@huawei.com> - 2.1.2-23
- fix dataack is always lower than 256
* Tue Dec 20 2022 kircher<majun65@huawei.com> - 2.1.3-35
- fix the dataack is always lower than 256
* Tue Dec 20 2022 kircher<majun65@huawei.com> - 2.1.2-22
* Tue Dec 20 2022 kircher<majun65@huawei.com> - 2.1.3-34
- add dataack when recv too many acks with data
* Tue Dec 20 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.2-21
* Tue Dec 20 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.3-33
- add variable in struct sock
* Mon Dec 19 2022 kircher<majun65@huawei.com> - 2.1.2-20
* Mon Dec 19 2022 kircher<majun65@huawei.com> - 2.1.3-32
- skip unnecessary tcp_route
* Sun Dec 18 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.2-19
- expand rcv wnd size and prefetch
* Sun Dec 18 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.3-31
- expand rcv wnd size and add prefetch
* Tue Dec 13 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.2-18
* Tue Dec 13 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.3-30
- optimite pcb unsent and unacked list
fast rexmit all pkts
* Wed Dec 7 2022 zhujunhao<zhujunhao11@huawei.com> - 2.1.2-17
- add huge snd buf
* Tue Dec 6 2022 zhujunhao<zhujunhao11@huawei.com> - 2.1.3-29
- add huge snd_buf
* Sat Dec 3 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.2-16
* Sat Dec 3 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.3-28
- add tso define
* Wed Nov 23 2022 jiangheng<jiangheng14@huawei.com> - 2.1.2-15
* Thu Dec 01 2022 jiangheng<jiangheng14@huawei.com> - 2.1.3-27
- remove lwip-2.1.3.tar.gz
* Sat Nov 26 2022 jiangheng<jiangheng14@huawei.com> - 2.1.3-26
- replace lwip-2.1.3.tar.gz to lwip-2.1.3.zip
* Wed Nov 23 2022 jiangheng<jiangheng14@huawei.com> - 2.1.3-25
- enable ARP QUEUE to avoid packet dropped
* Wed Oct 19 2022 zhujunhao<zhujunhao11@huawei.com> - 2.1.2-14
* Sat Oct 22 2022 jiangheng<jiangheng14@huawei.com> - 2.1.3-24
- add fs secure compilation option
* Wed Oct 19 2022 zhujunhao<zhujunhao11@huawei.com> - 2.1.3-23
- add writev and readv
* Sat Oct 15 2022 zhujunhao<zhujunhao11@huawei.com> - 2.1.2-13
* Sat Oct 15 2022 zhujunhao<zhujunhao11@huawei.com> - 2.1.3-22
- add epoll_create1 and accetp4
* Tue Oct 11 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.2-12
* Tue Oct 11 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.3-21
- alloc socket fail clean sock
* Thu Oct 6 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.2-11
* Thu Oct 6 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.3-20
- fix miss data due to free pbuf
close debug
* Thu Oct 6 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.2-10
* Thu Oct 6 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.3-19
- refactor add event
limit send pkts num max 10
* Thu Oct 6 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.2-9
* Thu Oct 6 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.3-18
- fix multithread duplicate port num
support select appropriate port num to rss same as nic
* Thu Oct 6 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.2-8
* Thu Oct 6 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.3-17
- fix EISCONN conditon err
remove same customized modification
* Thu Oct 6 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.2-7
* Thu Oct 6 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.3-16
- per thread reassdata variables
* Thu Sep 22 2022 zhujunhao<zhujunhao11@huawei.com> - 2.1.2-6
* Thu Oct 6 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.3-15
- modify EISCONN path condition
add in_send and send_flag value for gazelle
add in_send and send_flag value in sock
* Tue Jul 26 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.2-5
* Tue Jul 26 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.3-14
- del redundant wait_close in lwip_sock
move epoll_events into cache aligned area
* Fri Jul 8 2022 xiusailong<xiusailong@huawei.com> - 2.1.2-4
- refactor pkt read send performance
* Tue Jul 12 2022 Honggang Li <honggangli@163.com> - 2.1.3-13
- Replace gettid() with syscall()
* Tue Jun 07 2022 xiusailong<xiusailong@huawei.com> - 2.1.2-3
- support gazelle feature
* Fri Jul 8 2022 xiusailong<xiusailong@huawei.com> - 2.1.3-12
- sync two patches from 20.03-LTS-SP1
* Thu Jul 7 2022 wuchangsheng<wuchangsheng2@huawei.com> - 2.1.3-11
- refactor refactor pkt read send performance
* Tue Mar 29 2022 jiangheng<jiangheng12@huawei.com> - 2.1.3-10
- refactor event
- add HW checksum offload support
* Tue Mar 15 2022 jiangheng<jiangheng12@huawei.com> - 2.1.3-9
- notify app that sock state changes to CLOSE_WAIT
* Tue Mar 15 2022 jiangheng<jiangheng12@huawei.com> - 2.1.3-8
- refactor event,if ring is full, node is added to list
* Mon Mar 07 2022 jiangheng<jiangheng12@huawei.com> - 2.1.3-7
- remove chose_dlsym_handle function as it is redundant
* Mon Mar 07 2022 wu-changsheng<wuchangsheng2@huawei.com> - 2.1.3-6
- gazelle reduce copy in send
* Mon Mar 07 2022 jiangheng<jiangheng12@huawei.com> - 2.1.3-5
- exec gazelle_sock_init before read event
* Thu Mar 03 2022 jiangheng<jiangheng12@huawei.com> - 2.1.3-4
- support REUSEPOR option
- fix rpc msg too much
- fix recrruing events
* Thu Feb 24 2022 jiangheng<jiangheng12@huawei.com> - 2.1.3-3
- remove kernel socket interface
- support the mode that listen and accept thread be separaten
* Fri Dec 31 2021 jiangheng<jiangheng12@huawei.com> - 2.1.3-2
- adapt to lstack
* Fri Nov 26 2021 jiangheng<jiangheng12@huawei.com> - 2.1.3-1
- update to 2.1.3
* Mon Sep 06 2021 jiangheng<jiangheng12@huawei.com> - 2.1.2-2
- backport some patches from community