Add option to configure the mempool size at run time instead of
hardcoding it to 16384 * num_ports.

Signed-off-by: Pavan Nikhilesh <pbhagavat...@caviumnetworks.com>
---
 examples/eventdev_pipeline_sw_pmd/main.c            | 12 ++++++++++--
 examples/eventdev_pipeline_sw_pmd/pipeline_common.h |  1 +
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/examples/eventdev_pipeline_sw_pmd/main.c 
b/examples/eventdev_pipeline_sw_pmd/main.c
index 2c7b02b86..bf2a04edb 100644
--- a/examples/eventdev_pipeline_sw_pmd/main.c
+++ b/examples/eventdev_pipeline_sw_pmd/main.c
@@ -144,6 +144,7 @@ static struct option long_options[] = {
        {"sched-mask", required_argument, 0, 'e'},
        {"cq-depth", required_argument, 0, 'c'},
        {"work-cycles", required_argument, 0, 'W'},
+       {"mempool-size", required_argument, 0, 'm'},
        {"queue-priority", no_argument, 0, 'P'},
        {"parallel", no_argument, 0, 'p'},
        {"ordered", no_argument, 0, 'o'},
@@ -173,6 +174,7 @@ usage(void)
                "  -p, --parallel               Use parallel scheduling\n"
                "  -q, --quiet                  Minimize printed output\n"
                "  -a, --use-atq                Use all type queues\n"
+               "  -m, --mempool-size=N         Dictate the mempool size\n"
                "  -D, --dump                   Print detailed statistics 
before exit"
                "\n";
        fprintf(stderr, "%s", usage_str);
@@ -193,7 +195,7 @@ parse_app_args(int argc, char **argv)
        int i;
 
        for (;;) {
-               c = getopt_long(argc, argv, "r:t:e:c:w:n:f:s:paoPqDW:",
+               c = getopt_long(argc, argv, "r:t:e:c:w:n:f:s:m:paoPqDW:",
                                long_options, &option_index);
                if (c == -1)
                        break;
@@ -253,6 +255,9 @@ parse_app_args(int argc, char **argv)
                        popcnt = __builtin_popcountll(sched_lcore_mask);
                        fdata->sched_single = (popcnt == 1);
                        break;
+               case 'm':
+                       cdata.num_mbuf = (uint64_t)atol(optarg);
+                       break;
                default:
                        usage();
                }
@@ -356,8 +361,11 @@ init_ports(unsigned int num_ports)
        uint8_t portid;
        unsigned int i;
 
+       if (!cdata.num_mbuf)
+               cdata.num_mbuf = 16384 * num_ports;
+
        struct rte_mempool *mp = rte_pktmbuf_pool_create("packet_pool",
-                       /* mbufs */ 16384 * num_ports,
+                       /* mbufs */ cdata.num_mbuf,
                        /* cache_size */ 512,
                        /* priv_size*/ 0,
                        /* data_room_size */ RTE_MBUF_DEFAULT_BUF_SIZE,
diff --git a/examples/eventdev_pipeline_sw_pmd/pipeline_common.h 
b/examples/eventdev_pipeline_sw_pmd/pipeline_common.h
index 66553038c..9703396f8 100644
--- a/examples/eventdev_pipeline_sw_pmd/pipeline_common.h
+++ b/examples/eventdev_pipeline_sw_pmd/pipeline_common.h
@@ -70,6 +70,7 @@ struct config_data {
        unsigned int active_cores;
        unsigned int num_workers;
        int64_t num_packets;
+       uint64_t num_mbuf;
        unsigned int num_fids;
        int queue_type;
        int worker_cycles;
-- 
2.15.1

Reply via email to