examples/ipsec-secgw: allow larger burst size for vectors
[dpdk.git] / examples / ipsec-secgw / event_helper.c
index e8600f5..172ab8e 100644 (file)
@@ -716,6 +716,16 @@ eh_initialize_eventdev(struct eventmode_conf *em_conf)
                }
        }
 
+       return 0;
+}
+
+static int
+eh_start_eventdev(struct eventmode_conf *em_conf)
+{
+       struct eventdev_params *eventdev_config;
+       int nb_eventdev = em_conf->nb_eventdev;
+       int i, ret;
+
        /* Start event devices */
        for (i = 0; i < nb_eventdev; i++) {
 
@@ -782,8 +792,8 @@ eh_rx_adapter_configure(struct eventmode_conf *em_conf,
        uint32_t service_id, socket_id, nb_elem;
        struct rte_mempool *vector_pool = NULL;
        uint32_t lcore_id = rte_lcore_id();
+       int ret, portid, nb_ports = 0;
        uint8_t eventdev_id;
-       int ret;
        int j;
 
        /* Get event dev ID */
@@ -796,10 +806,21 @@ eh_rx_adapter_configure(struct eventmode_conf *em_conf,
                return ret;
        }
 
+       RTE_ETH_FOREACH_DEV(portid)
+               if ((em_conf->eth_portmask & (1 << portid)))
+                       nb_ports++;
+
        if (em_conf->ext_params.event_vector) {
                socket_id = rte_lcore_to_socket_id(lcore_id);
-               nb_elem = (nb_bufs_in_pool / em_conf->ext_params.vector_size)
-                         + 1;
+
+               if (em_conf->vector_pool_sz) {
+                       nb_elem = em_conf->vector_pool_sz;
+               } else {
+                       nb_elem = (nb_bufs_in_pool /
+                                  em_conf->ext_params.vector_size) + 1;
+                       if (per_port_pool)
+                               nb_elem = nb_ports * nb_elem;
+               }
 
                vector_pool = rte_event_vector_pool_create(
                        "vector_pool", nb_elem, 0,
@@ -1353,7 +1374,7 @@ eh_display_rx_adapter_conf(struct eventmode_conf *em_conf)
        for (i = 0; i < nb_rx_adapter; i++) {
                adapter = &(em_conf->rx_adapter[i]);
                sprintf(print_buf,
-                       "\tRx adaper ID: %-2d\tConnections: %-2d\tEvent dev ID: %-2d",
+                       "\tRx adapter ID: %-2d\tConnections: %-2d\tEvent dev ID: %-2d",
                        adapter->adapter_id,
                        adapter->nb_connections,
                        adapter->eventdev_id);
@@ -1688,6 +1709,13 @@ eh_devs_init(struct eh_conf *conf)
                return ret;
        }
 
+       /* Start eventdev */
+       ret = eh_start_eventdev(em_conf);
+       if (ret < 0) {
+               EH_LOG_ERR("Failed to start event dev %d", ret);
+               return ret;
+       }
+
        /* Start eth devices after setting up adapter */
        RTE_ETH_FOREACH_DEV(port_id) {