net/dpaa2: change Tx queue congestion settings
[dpdk.git] / examples / ipsec-secgw / ipsec-secgw.c
index 60132c4..20d69ba 100644 (file)
@@ -65,6 +65,7 @@ volatile bool force_quit;
 #define CDEV_QUEUE_DESC 2048
 #define CDEV_MAP_ENTRIES 16384
 #define CDEV_MP_CACHE_SZ 64
+#define CDEV_MP_CACHE_MULTIPLIER 1.5 /* from rte_mempool.c */
 #define MAX_QUEUE_PAIRS 1
 
 #define BURST_TX_DRAIN_US 100 /* TX drain every ~100us */
@@ -426,7 +427,8 @@ prepare_one_packet(struct rte_mbuf *pkt, struct ipsec_traffic *t)
         * with the security session.
         */
 
-       if (pkt->ol_flags & PKT_RX_SEC_OFFLOAD) {
+       if (pkt->ol_flags & PKT_RX_SEC_OFFLOAD &&
+                       rte_security_dynfield_is_registered()) {
                struct ipsec_sa *sa;
                struct ipsec_mbuf_metadata *priv;
                struct rte_security_ctx *ctx = (struct rte_security_ctx *)
@@ -436,10 +438,8 @@ prepare_one_packet(struct rte_mbuf *pkt, struct ipsec_traffic *t)
                /* Retrieve the userdata registered. Here, the userdata
                 * registered is the SA pointer.
                 */
-
-               sa = (struct ipsec_sa *)
-                               rte_security_get_userdata(ctx, pkt->udata64);
-
+               sa = (struct ipsec_sa *)rte_security_get_userdata(ctx,
+                               *rte_security_dynfield(pkt));
                if (sa == NULL) {
                        /* userdata could not be retrieved */
                        return;
@@ -2348,12 +2348,10 @@ session_pool_init(struct socket_ctx *ctx, int32_t socket_id, size_t sess_sz)
 
        snprintf(mp_name, RTE_MEMPOOL_NAMESIZE,
                        "sess_mp_%u", socket_id);
-       /*
-        * Doubled due to rte_security_session_create() uses one mempool for
-        * session and for session private data.
-        */
        nb_sess = (get_nb_crypto_sessions() + CDEV_MP_CACHE_SZ *
-               rte_lcore_count()) * 2;
+               rte_lcore_count());
+       nb_sess = RTE_MAX(nb_sess, CDEV_MP_CACHE_SZ *
+                       CDEV_MP_CACHE_MULTIPLIER);
        sess_mp = rte_cryptodev_sym_session_pool_create(
                        mp_name, nb_sess, sess_sz, CDEV_MP_CACHE_SZ, 0,
                        socket_id);
@@ -2376,12 +2374,10 @@ session_priv_pool_init(struct socket_ctx *ctx, int32_t socket_id,
 
        snprintf(mp_name, RTE_MEMPOOL_NAMESIZE,
                        "sess_mp_priv_%u", socket_id);
-       /*
-        * Doubled due to rte_security_session_create() uses one mempool for
-        * session and for session private data.
-        */
        nb_sess = (get_nb_crypto_sessions() + CDEV_MP_CACHE_SZ *
-               rte_lcore_count()) * 2;
+               rte_lcore_count());
+       nb_sess = RTE_MAX(nb_sess, CDEV_MP_CACHE_SZ *
+                       CDEV_MP_CACHE_MULTIPLIER);
        sess_mp = rte_mempool_create(mp_name,
                        nb_sess,
                        sess_sz,
@@ -2989,8 +2985,8 @@ main(int32_t argc, char **argv)
 #endif /* STATS_INTERVAL */
 
        /* launch per-lcore init on every lcore */
-       rte_eal_mp_remote_launch(ipsec_launch_one_lcore, eh_conf, CALL_MASTER);
-       RTE_LCORE_FOREACH_SLAVE(lcore_id) {
+       rte_eal_mp_remote_launch(ipsec_launch_one_lcore, eh_conf, CALL_MAIN);
+       RTE_LCORE_FOREACH_WORKER(lcore_id) {
                if (rte_eal_wait_lcore(lcore_id) < 0)
                        return -1;
        }
@@ -3032,7 +3028,12 @@ main(int32_t argc, char **argv)
                                        " for port %u, err msg: %s\n", portid,
                                        err.message);
                }
-               rte_eth_dev_stop(portid);
+               ret = rte_eth_dev_stop(portid);
+               if (ret != 0)
+                       RTE_LOG(ERR, IPSEC,
+                               "rte_eth_dev_stop: err=%s, port=%u\n",
+                               rte_strerror(-ret), portid);
+
                rte_eth_dev_close(portid);
                printf(" Done\n");
        }