From c216b95d0278eff271f12766cc630baaa21d8af0 Mon Sep 17 00:00:00 2001 From: Mohammad Abdul Awal Date: Thu, 15 Sep 2016 09:03:08 +0100 Subject: allocated all port and all cpu momory together instead of realloc Change-Id: I3240e6afefb5d784e08e3a5a1b70ada7d5b4b223 Signed-off-by: Mohammad Abdul Awal --- examples/udpfwd/Makefile | 1 + examples/udpfwd/main.c | 15 +++++++++++---- examples/udpfwd/parse.c | 4 ++-- examples/udpfwd/parse.h | 5 ++++- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/examples/udpfwd/Makefile b/examples/udpfwd/Makefile index 6816b5e..496a3be 100644 --- a/examples/udpfwd/Makefile +++ b/examples/udpfwd/Makefile @@ -41,5 +41,6 @@ LDLIBS += -ltle_udp EXTRA_CFLAGS += -O3 CFLAGS_parse.o += -D_GNU_SOURCE +CFLAGS_main.o += -D_GNU_SOURCE include $(RTE_SDK)/mk/rte.extapp.mk diff --git a/examples/udpfwd/main.c b/examples/udpfwd/main.c index 1eb4e2a..c260d1c 100644 --- a/examples/udpfwd/main.c +++ b/examples/udpfwd/main.c @@ -500,7 +500,6 @@ calculate_nb_prtq(struct netbe_cfg *cfg) lc = find_initilized_lcore(cfg, prt->lcore[j]); if (lc == NULL) { - NETBE_REALLOC(cfg->cpu, cfg->cpu_num + 1); lc = &cfg->cpu[cfg->cpu_num]; lc->id = prt->lcore[j]; cfg->cpu_num++; @@ -526,22 +525,30 @@ netbe_port_init(struct netbe_cfg *cfg, int argc, char *argv[]) int32_t rc; uint32_t i, n, sid, j; struct netbe_port *prt; + rte_cpuset_t cpuset; + uint32_t nc; n = (uint32_t)argc; + cfg->prt = rte_zmalloc(NULL, sizeof(struct netbe_port) * n, + RTE_CACHE_LINE_SIZE); + cfg->prt_num = n; rc = 0; for (i = 0; i != n; i++) { - NETBE_REALLOC(cfg->prt, cfg->prt_num + 1); - rc = parse_netbe_arg(cfg->prt + i, argv[i]); + rc = parse_netbe_arg(cfg->prt + i, argv[i], &cpuset); if (rc != 0) { RTE_LOG(ERR, USER1, "%s: processing of \"%s\" failed with error code: %d\n", __func__, argv[i], rc); return rc; } - cfg->prt_num++; } + for (i = 0, nc = 0; i < RTE_MAX_LCORE; i++) + nc += CPU_ISSET(i, &cpuset); + cfg->cpu = rte_zmalloc(NULL, sizeof(struct netbe_lcore) * nc, + RTE_CACHE_LINE_SIZE); + /* calculate number of queues per lcore. */ rc = calculate_nb_prtq(cfg); if (rc != 0) { diff --git a/examples/udpfwd/parse.c b/examples/udpfwd/parse.c index 09c4a96..f46c7df 100644 --- a/examples/udpfwd/parse.c +++ b/examples/udpfwd/parse.c @@ -13,7 +13,6 @@ * limitations under the License. */ -#include #include "netbe.h" #include "parse.h" @@ -198,7 +197,7 @@ parse_kvargs(const char *arg, const char *keys_man[], uint32_t nb_man, } int -parse_netbe_arg(struct netbe_port *prt, const char *arg) +parse_netbe_arg(struct netbe_port *prt, const char *arg, rte_cpuset_t *cpuset) { int32_t rc; uint32_t i, j, nc; @@ -247,6 +246,7 @@ parse_netbe_arg(struct netbe_port *prt, const char *arg) for (i = 0, j = 0; i < RTE_MAX_LCORE; i++) if (CPU_ISSET(i, &val[1].cpuset)) prt->lcore[j++] = i; + CPU_OR(cpuset, cpuset, &val[1].cpuset); prt->mtu = val[2].u64; prt->rx_offload = val[3].u64; diff --git a/examples/udpfwd/parse.h b/examples/udpfwd/parse.h index e25e64e..7df7671 100644 --- a/examples/udpfwd/parse.h +++ b/examples/udpfwd/parse.h @@ -16,6 +16,8 @@ #ifndef __PARSE_H__ #define __PARSE_H__ +#include + #define PARSE_LIST_DELIM "-" union parse_val { @@ -68,7 +70,8 @@ format_addr(const struct sockaddr_storage *sp, char buf[], size_t len) return inet_ntop(sp->ss_family, addr, buf, len); } -int parse_netbe_arg(struct netbe_port *prt, const char *arg); +int parse_netbe_arg(struct netbe_port *prt, const char *arg, + rte_cpuset_t *cpuset); int netbe_parse_dest(const char *fname, struct netbe_dest_prm *prm); -- cgit 1.2.3-korg