From c2c9835319119b5fce2d13eba6c90e97643d7c81 Mon Sep 17 00:00:00 2001 From: Yi Yang Date: Mon, 13 Aug 2018 20:23:05 +0800 Subject: [PATCH] Fix the number of elements in mempool the second parameter of function rte_mempool_create should be "n modulo cache_size == 0" but not (2^q - 1). The issue is some elements will always stay in the pool and will never be used if "n modulo cache_size != 0". Change-Id: I34555faffb09efb744dc34a384eaff152dc675b8 Closes-Bug: #1786767 Signed-off-by: Yi Yang --- dpdk/dpdk_vrouter.c | 15 +-------------- dpdk/vr_dpdk_usocket.c | 4 ---- 2 files changed, 1 insertion(+), 18 deletions(-) diff --git a/dpdk/dpdk_vrouter.c b/dpdk/dpdk_vrouter.c index 0537eff15..3a5a41d1c 100644 --- a/dpdk/dpdk_vrouter.c +++ b/dpdk/dpdk_vrouter.c @@ -178,15 +178,10 @@ vr_dpdk_pktmbuf_init(struct rte_mempool *mp, void *opaque_arg, void *_m, unsigne static int dpdk_mempools_create(void) { -#if (RTE_VERSION >= RTE_VERSION_NUM(17, 11, 0, 0)) - unsigned int rss_mempool_sz = vr_mempool_sz - 1; - unsigned int frag_direct_mempool_sz = VR_DPDK_FRAG_DIRECT_MEMPOOL_SZ - 1; - unsigned int frag_indirect_mempool_sz = VR_DPDK_FRAG_INDIRECT_MEMPOOL_SZ - 1; -#else unsigned int rss_mempool_sz = vr_mempool_sz; unsigned int frag_direct_mempool_sz = VR_DPDK_FRAG_DIRECT_MEMPOOL_SZ; unsigned int frag_indirect_mempool_sz = VR_DPDK_FRAG_INDIRECT_MEMPOOL_SZ; -#endif + /* Create the mbuf pool used for RSS */ vr_dpdk.rss_mempool = rte_mempool_create("rss_mempool", rss_mempool_sz, @@ -226,11 +221,7 @@ dpdk_mempools_create(void) #if VR_DPDK_USE_HW_FILTERING int ret, i; char mempool_name[RTE_MEMPOOL_NAMESIZE]; -#if (RTE_VERSION >= RTE_VERSION_NUM(17, 11, 0, 0)) - unsigned int vm_mempool_sz = VR_DPDK_VM_MEMPOOL_SZ - 1; -#else unsigned int vm_mempool_sz = VR_DPDK_VM_MEMPOOL_SZ; -#endif /* Create a list of free mempools */ vr_dpdk.nb_free_mempools = 0; @@ -509,11 +500,7 @@ dpdk_argv_update(void) char *io_core_mask_str; char *fwd_core_mask_str; static char lcores_string[VR_DPDK_STR_BUF_SZ]; -#if (RTE_VERSION >= RTE_VERSION_NUM(17, 11, 0, 0)) - unsigned int rss_mempool_sz = vr_mempool_sz - 1; -#else unsigned int rss_mempool_sz = vr_mempool_sz; -#endif /* get number of available CPUs */ system_cpus_count = sysconf(_SC_NPROCESSORS_CONF); diff --git a/dpdk/vr_dpdk_usocket.c b/dpdk/vr_dpdk_usocket.c index f0c2537b4..33f366e37 100644 --- a/dpdk/vr_dpdk_usocket.c +++ b/dpdk/vr_dpdk_usocket.c @@ -703,11 +703,7 @@ __usock_read(struct vr_usocket *usockp) static struct vr_usocket * usock_alloc(unsigned short proto, unsigned short type) { -#if (RTE_VERSION >= RTE_VERSION_NUM(17, 11, 0, 0)) - unsigned int pkt0_mempool_sz = PKT0_MBUF_POOL_SIZE - 1; -#else unsigned int pkt0_mempool_sz = PKT0_MBUF_POOL_SIZE; -#endif int sock_fd = -1, domain, ret; /* socket TX buffer size = (hold flow table entries * size of jumbo frame) */ int setsocksndbuff = vr_flow_hold_limit * vr_packet_sz;