INIT: fix lwip_init failed because of dpdk set errno
(cherry picked from commit 9fc987a4da3ce8350fcb28f23917e05e1993b02e)
This commit is contained in:
parent
66016c9b8d
commit
d3ea9963a6
101
0160-INIT-fix-lwip_init-failed-because-of-dpdk-set-errno.patch
Normal file
101
0160-INIT-fix-lwip_init-failed-because-of-dpdk-set-errno.patch
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
From 70a390384a97bca7048ec98eabd363e4fdf60bcc Mon Sep 17 00:00:00 2001
|
||||||
|
From: yinbin <yinbin8@huawei.com>
|
||||||
|
Date: Sat, 3 Aug 2024 19:31:59 +0800
|
||||||
|
Subject: [PATCH] INIT: fix lwip_init failed because of dpdk set errno
|
||||||
|
|
||||||
|
---
|
||||||
|
src/api/sys_arch.c | 5 ++++-
|
||||||
|
src/core/mem.c | 2 --
|
||||||
|
src/core/memp.c | 5 +----
|
||||||
|
src/include/arch/cc.h | 15 +++++++++++----
|
||||||
|
4 files changed, 16 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/api/sys_arch.c b/src/api/sys_arch.c
|
||||||
|
index 553a1c7..dcfd0a4 100644
|
||||||
|
--- a/src/api/sys_arch.c
|
||||||
|
+++ b/src/api/sys_arch.c
|
||||||
|
@@ -417,9 +417,12 @@ u8_t *sys_hugepage_malloc(const char *name, unsigned size)
|
||||||
|
SYS_FORMAT_NAME(memname, sizeof(memname), "%s_%d", name, rte_gettid());
|
||||||
|
mz = rte_memzone_reserve(memname, size, rte_socket_id(), 0);
|
||||||
|
if (mz == NULL) {
|
||||||
|
- LWIP_DEBUGF(SYS_DEBUG | GAZELLE_DEBUG_SERIOUS, ("sys_hugepage_malloc: failed to reserver memory for mempool[%s]\n", memname));
|
||||||
|
+ LWIP_DEBUGF(SYS_DEBUG | GAZELLE_DEBUG_SERIOUS, ("sys_hugepage_malloc: failed to reserver memory for mempool[%s], errno %d\n", memname, errno));
|
||||||
|
set_errno(ENOMEM);
|
||||||
|
return NULL;
|
||||||
|
+ } else {
|
||||||
|
+ /* Ignore dpdk errno when mem allocation is successful */
|
||||||
|
+ errno = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(mz->addr, 0, mz->len);
|
||||||
|
diff --git a/src/core/mem.c b/src/core/mem.c
|
||||||
|
index b5e50c0..78a1dd4 100644
|
||||||
|
--- a/src/core/mem.c
|
||||||
|
+++ b/src/core/mem.c
|
||||||
|
@@ -518,8 +518,6 @@ mem_init(void)
|
||||||
|
#if GAZELLE_ENABLE
|
||||||
|
/* see LWIP_RAM_HEAP_POINTER */
|
||||||
|
LWIP_MEMORY_INIT_VAR(LWIP_RAM_HEAP_POINTER, MEM_SIZE_ALIGNED + (2U * SIZEOF_STRUCT_MEM));
|
||||||
|
- if (errno != 0)
|
||||||
|
- return;
|
||||||
|
#endif /* GAZELLE_ENABLE */
|
||||||
|
|
||||||
|
struct mem *mem;
|
||||||
|
diff --git a/src/core/memp.c b/src/core/memp.c
|
||||||
|
index 6c858be..01cf362 100644
|
||||||
|
--- a/src/core/memp.c
|
||||||
|
+++ b/src/core/memp.c
|
||||||
|
@@ -228,11 +228,8 @@ void
|
||||||
|
memp_init(void)
|
||||||
|
{
|
||||||
|
#if GAZELLE_ENABLE
|
||||||
|
-#define LWIP_MEMPOOL(name,num,size,desc) LWIP_MEMPOOL_INIT_VAR(name,num,size,desc)
|
||||||
|
+#define LWIP_MEMPOOL(name,num,size,desc) LWIP_MEMPOOL_INIT_VAR(name,num,size,desc);
|
||||||
|
#include "lwip/priv/memp_std.h"
|
||||||
|
-
|
||||||
|
- if (errno != 0)
|
||||||
|
- return;
|
||||||
|
#endif /* GAZELLE_ENABLE */
|
||||||
|
|
||||||
|
u16_t i;
|
||||||
|
diff --git a/src/include/arch/cc.h b/src/include/arch/cc.h
|
||||||
|
index 8527b44..51f87bb 100644
|
||||||
|
--- a/src/include/arch/cc.h
|
||||||
|
+++ b/src/include/arch/cc.h
|
||||||
|
@@ -46,8 +46,12 @@
|
||||||
|
#define LWIP_DECLARE_MEMORY_ALIGNED(variable_name, size) \
|
||||||
|
static PER_THREAD u8_t *variable_name;
|
||||||
|
|
||||||
|
-#define LWIP_MEMORY_INIT_VAR(name, size) \
|
||||||
|
- name = sys_hugepage_malloc(#name, size);
|
||||||
|
+#define LWIP_MEMORY_INIT_VAR(name, size) do { \
|
||||||
|
+ name = sys_hugepage_malloc(#name, size); \
|
||||||
|
+ if (name == NULL) \
|
||||||
|
+ return; \
|
||||||
|
+} while(0)
|
||||||
|
+
|
||||||
|
|
||||||
|
#define LWIP_MEMPOOL_DECLARE(name,num,size,desc) \
|
||||||
|
LWIP_DECLARE_MEMORY_ALIGNED(memp_memory_ ## name ## _base, 0); \
|
||||||
|
@@ -56,13 +60,16 @@
|
||||||
|
\
|
||||||
|
PER_THREAD struct memp_desc memp_ ## name;
|
||||||
|
|
||||||
|
-#define LWIP_MEMPOOL_INIT_VAR(name,num,size,desc) \
|
||||||
|
+#define LWIP_MEMPOOL_INIT_VAR(name,num,size,desc) do { \
|
||||||
|
memp_memory_ ## name ## _base = sys_hugepage_malloc(#name, LWIP_MEM_ALIGN_BUFFER((num) * (MEMP_SIZE + MEMP_ALIGN_SIZE(size)))); \
|
||||||
|
+ if (memp_memory_ ## name ## _base == NULL) \
|
||||||
|
+ return; \
|
||||||
|
sys_mempool_var_init(&memp_ ## name, \
|
||||||
|
desc, size, num, \
|
||||||
|
memp_memory_ ## name ## _base, \
|
||||||
|
&memp_tab_ ## name, \
|
||||||
|
&memp_stat_ ## name); \
|
||||||
|
- memp_pools[MEMP_ ## name] = &memp_ ## name;
|
||||||
|
+ memp_pools[MEMP_ ## name] = &memp_ ## name; \
|
||||||
|
+} while(0)
|
||||||
|
|
||||||
|
#endif /* _LWIP_ARCH_CC_H_ */
|
||||||
|
--
|
||||||
|
2.34.1
|
||||||
|
|
||||||
@ -4,7 +4,7 @@
|
|||||||
Summary: lwip is a small independent implementation of the TCP/IP protocol suite
|
Summary: lwip is a small independent implementation of the TCP/IP protocol suite
|
||||||
Name: lwip
|
Name: lwip
|
||||||
Version: 2.2.0
|
Version: 2.2.0
|
||||||
Release: 50
|
Release: 51
|
||||||
License: BSD
|
License: BSD
|
||||||
URL: http://savannah.nongnu.org/projects/lwip/
|
URL: http://savannah.nongnu.org/projects/lwip/
|
||||||
Source0: http://download.savannah.nongnu.org/releases/lwip/%{name}-%{version}.zip
|
Source0: http://download.savannah.nongnu.org/releases/lwip/%{name}-%{version}.zip
|
||||||
@ -171,6 +171,7 @@ Patch9155: 0156-cleancode-refactor-memp.patch
|
|||||||
Patch9156: 0157-cleancode-refactor-offload.patch
|
Patch9156: 0157-cleancode-refactor-offload.patch
|
||||||
Patch9157: 0158-enable-sys_arch-failed-log.patch
|
Patch9157: 0158-enable-sys_arch-failed-log.patch
|
||||||
Patch9158: 0159-LOOPBACK-fix-loop-coredump.patch
|
Patch9158: 0159-LOOPBACK-fix-loop-coredump.patch
|
||||||
|
Patch9159: 0160-INIT-fix-lwip_init-failed-because-of-dpdk-set-errno.patch
|
||||||
|
|
||||||
BuildRequires: gcc-c++ dos2unix dpdk-devel
|
BuildRequires: gcc-c++ dos2unix dpdk-devel
|
||||||
|
|
||||||
@ -200,6 +201,9 @@ cd %{_builddir}/%{name}-%{version}/src
|
|||||||
%{_libdir}/liblwip.a
|
%{_libdir}/liblwip.a
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sat Aug 3 2024 yinbin <yinbin8@huawei.com> - 2.2.0-51
|
||||||
|
- INIT:fix lwip_init failed because of dpdk set errno
|
||||||
|
|
||||||
* Wed Jul 24 2024 yinbin <yinbin8@huawei.com> - 2.2.0-50
|
* Wed Jul 24 2024 yinbin <yinbin8@huawei.com> - 2.2.0-50
|
||||||
- LOOPBACK: fix loop coredump
|
- LOOPBACK: fix loop coredump
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user