]> git.droids-corp.org - dpdk.git/commitdiff
examples/ipsec-secgw: fix pool usage for security session
authorAkhil Goyal <akhil.goyal@nxp.com>
Mon, 22 Apr 2019 14:14:16 +0000 (19:44 +0530)
committerAkhil Goyal <akhil.goyal@nxp.com>
Tue, 23 Apr 2019 12:44:26 +0000 (14:44 +0200)
Currently, two separate mempools are being used for creating crypto
sessions and its private data.
crypto sessions are created and initialized separately, so a separate
mempool is passed to each API, but in case of security sessions, where
only one API create and initialize the private data as well.
So if session mempool is passed to create a security session, the
mempool element size is not sufficient enough to hold the private
data as well.
As a perfect solution, the security session create API should take 2
mempools for header and private data and initiatlize accordingly,
but that would mean an API breakage, which will be done in the next
release cycle. So introducing this patch as a workaround to resolve this
issue.

Fixes: 261bbff75e34 ("examples: use separate crypto session mempools")
Cc: stable@dpdk.org
Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
examples/ipsec-secgw/ipsec-secgw.c
examples/ipsec-secgw/ipsec.c

index 2e203393ddbc75b7a83c507a32d42f7436dcc91e..478dd80c22c4d97faa77ec05e0920b27118bc220 100644 (file)
@@ -1791,7 +1791,7 @@ cryptodevs_init(void)
                                rte_eth_dev_get_sec_ctx(port_id)) {
                        int socket_id = rte_eth_dev_socket_id(port_id);
 
-                       if (!socket_ctx[socket_id].session_pool) {
+                       if (!socket_ctx[socket_id].session_priv_pool) {
                                char mp_name[RTE_MEMPOOL_NAMESIZE];
                                struct rte_mempool *sess_mp;
 
@@ -1811,7 +1811,8 @@ cryptodevs_init(void)
                                else
                                        printf("Allocated session pool "
                                                "on socket %d\n", socket_id);
-                               socket_ctx[socket_id].session_pool = sess_mp;
+                               socket_ctx[socket_id].session_priv_pool =
+                                               sess_mp;
                        }
                }
        }
index 4352cb8420e4cb402346a189c8b6dc955690bf80..7b85330774b77b080de65edbecf8d9d17d324603 100644 (file)
@@ -102,7 +102,7 @@ create_session(struct ipsec_ctx *ipsec_ctx, struct ipsec_sa *sa)
                        set_ipsec_conf(sa, &(sess_conf.ipsec));
 
                        sa->sec_session = rte_security_session_create(ctx,
-                                       &sess_conf, ipsec_ctx->session_pool);
+                                       &sess_conf, ipsec_ctx->session_priv_pool);
                        if (sa->sec_session == NULL) {
                                RTE_LOG(ERR, IPSEC,
                                "SEC Session init failed: err: %d\n", ret);
@@ -117,7 +117,7 @@ create_session(struct ipsec_ctx *ipsec_ctx, struct ipsec_sa *sa)
                        int ret = 0;
 
                        sa->sec_session = rte_security_session_create(ctx,
-                                       &sess_conf, ipsec_ctx->session_pool);
+                                       &sess_conf, ipsec_ctx->session_priv_pool);
                        if (sa->sec_session == NULL) {
                                RTE_LOG(ERR, IPSEC,
                                "SEC Session init failed: err: %d\n", ret);