summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorShahaf Shuler <shahafs@mellanox.com>2019-04-07 08:02:24 +0300
committerFerruh Yigit <ferruh.yigit@intel.com>2019-04-12 11:02:02 +0200
commit401b744da2cf0f87991127e5b422cde6cde3d726 (patch)
treed328e6de752ffdef8377df13baeeb57413827487 /app
parent50cc9d2a6e9de991e1fdcd639693a9d068ad91a6 (diff)
downloaddpdk-401b744da2cf0f87991127e5b422cde6cde3d726.zip
dpdk-401b744da2cf0f87991127e5b422cde6cde3d726.tar.gz
dpdk-401b744da2cf0f87991127e5b422cde6cde3d726.tar.xz
app/testpmd: fix mempool free on exit
Allocated mempools were never free. it is bad practice. Fixes: af75078fece3 ("first public release") Cc: stable@dpdk.org Signed-off-by: Shahaf Shuler <shahafs@mellanox.com> Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
Diffstat (limited to 'app')
-rw-r--r--app/test-pmd/testpmd.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index aeaa74c..b7f70b0 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -188,6 +188,8 @@ struct fwd_engine * fwd_engines[] = {
NULL,
};
+struct rte_mempool *mempools[RTE_MAX_NUMA_NODES];
+
struct fwd_config cur_fwd_config;
struct fwd_engine *cur_fwd_eng = &io_fwd_engine; /**< IO mode by default. */
uint32_t retry_enabled;
@@ -835,7 +837,7 @@ setup_extmem(uint32_t nb_mbufs, uint32_t mbuf_sz, bool huge)
/*
* Configuration initialisation done once at init time.
*/
-static void
+static struct rte_mempool *
mbuf_pool_create(uint16_t mbuf_seg_size, unsigned nb_mbuf,
unsigned int socket_id)
{
@@ -913,6 +915,7 @@ err:
} else if (verbose_level > 0) {
rte_mempool_dump(stdout, rte_mp);
}
+ return rte_mp;
}
/*
@@ -1130,14 +1133,18 @@ init_config(void)
uint8_t i;
for (i = 0; i < num_sockets; i++)
- mbuf_pool_create(mbuf_data_size, nb_mbuf_per_pool,
- socket_ids[i]);
+ mempools[i] = mbuf_pool_create(mbuf_data_size,
+ nb_mbuf_per_pool,
+ socket_ids[i]);
} else {
if (socket_num == UMA_NO_CONFIG)
- mbuf_pool_create(mbuf_data_size, nb_mbuf_per_pool, 0);
+ mempools[0] = mbuf_pool_create(mbuf_data_size,
+ nb_mbuf_per_pool, 0);
else
- mbuf_pool_create(mbuf_data_size, nb_mbuf_per_pool,
- socket_num);
+ mempools[socket_num] = mbuf_pool_create
+ (mbuf_data_size,
+ nb_mbuf_per_pool,
+ socket_num);
}
init_port_config();
@@ -2394,6 +2401,7 @@ pmd_test_exit(void)
struct rte_device *device;
portid_t pt_id;
int ret;
+ int i;
if (test_done == 0)
stop_packet_forwarding();
@@ -2447,6 +2455,10 @@ pmd_test_exit(void)
return;
}
}
+ for (i = 0 ; i < RTE_MAX_NUMA_NODES ; i++) {
+ if (mempools[i])
+ rte_mempool_free(mempools[i]);
+ }
printf("\nBye...\n");
}