No need to allocate one mempool per port.
The number of mbufs is fixed for simplicity.

Signed-off-by: Thomas Monjalon <tho...@monjalon.net>
---
 examples/ethtool/ethtool-app/main.c | 32 ++++++++---------------------
 1 file changed, 9 insertions(+), 23 deletions(-)

diff --git a/examples/ethtool/ethtool-app/main.c 
b/examples/ethtool/ethtool-app/main.c
index e23d3afd2..e7185ca79 100644
--- a/examples/ethtool/ethtool-app/main.c
+++ b/examples/ethtool/ethtool-app/main.c
@@ -22,7 +22,7 @@
 #define MAX_BURST_LENGTH 32
 #define PORT_RX_QUEUE_SIZE 1024
 #define PORT_TX_QUEUE_SIZE 1024
-#define PKTPOOL_EXTRA_SIZE 512
+#define NUM_MBUFS 8191
 #define PKTPOOL_CACHE 32
 
 
@@ -38,7 +38,6 @@ struct app_port {
        int port_active;
        int port_dirty;
        int idx_port;
-       struct rte_mempool *pkt_pool;
 };
 
 struct app_config {
@@ -89,36 +88,23 @@ void mark_port_newmac(int idx_port)
 static void setup_ports(struct app_config *app_cfg, int cnt_ports)
 {
        int idx_port;
-       int size_pktpool;
        struct rte_eth_conf cfg_port;
-       struct rte_eth_dev_info dev_info;
-       char str_name[16];
        uint16_t nb_rxd = PORT_RX_QUEUE_SIZE;
        uint16_t nb_txd = PORT_TX_QUEUE_SIZE;
+       struct rte_mempool *pkt_pool;
 
        memset(&cfg_port, 0, sizeof(cfg_port));
        cfg_port.txmode.mq_mode = ETH_MQ_TX_NONE;
 
+       pkt_pool = rte_pktmbuf_pool_create("mbuf pool",
+               NUM_MBUFS, PKTPOOL_CACHE, 0, RTE_MBUF_DEFAULT_BUF_SIZE,
+               rte_socket_id());
+       if (pkt_pool == NULL)
+               rte_exit(EXIT_FAILURE, "rte_pktmbuf_pool_create failed");
+
        for (idx_port = 0; idx_port < cnt_ports; idx_port++) {
                struct app_port *ptr_port = &app_cfg->ports[idx_port];
 
-               rte_eth_dev_info_get(idx_port, &dev_info);
-               size_pktpool = dev_info.rx_desc_lim.nb_max +
-                       dev_info.tx_desc_lim.nb_max + PKTPOOL_EXTRA_SIZE;
-
-               snprintf(str_name, 16, "pkt_pool%i", idx_port);
-               ptr_port->pkt_pool = rte_pktmbuf_pool_create(
-                       str_name,
-                       size_pktpool, PKTPOOL_CACHE,
-                       0,
-                       RTE_MBUF_DEFAULT_BUF_SIZE,
-                       rte_socket_id()
-                       );
-               if (ptr_port->pkt_pool == NULL)
-                       rte_exit(EXIT_FAILURE,
-                               "rte_pktmbuf_pool_create failed"
-                               );
-
                printf("Init port %i..\n", idx_port);
                ptr_port->port_active = 1;
                ptr_port->port_dirty = 0;
@@ -135,7 +121,7 @@ static void setup_ports(struct app_config *app_cfg, int 
cnt_ports)
                if (rte_eth_rx_queue_setup(
                            idx_port, 0, nb_rxd,
                            rte_eth_dev_socket_id(idx_port), NULL,
-                           ptr_port->pkt_pool) < 0)
+                           pkt_pool) < 0)
                        rte_exit(EXIT_FAILURE,
                                 "rte_eth_rx_queue_setup failed"
                                );
-- 
2.20.1

Reply via email to