From patchwork Thu Jun 30 11:45:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Radu Nicolau X-Patchwork-Id: 113576 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 41136A00C4; Thu, 30 Jun 2022 13:45:42 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3028B40694; Thu, 30 Jun 2022 13:45:42 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id 2D11E400EF for ; Thu, 30 Jun 2022 13:45:40 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1656589540; x=1688125540; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=fE8TxZfFC/qFh5ErGtu3Ylug/Mryj9i2o8qyi4obhf8=; b=ZjNTmLGv8xh13BTArgVvBS/2xadRk7PJbC6KK8DiMrGTRmvatIhg95bH ErjaeNDaGPGX5Jy1GPCyY12+4acUO9qeLPpv/zbX5FR0XinVZ6iZqQpkf FemadyWZPbA0YuOuhpNB05Id2T374AewrKVrRll5ApD6f7d0Hy5gBOq5J p/1vPuIR54SF7MT80qd4T4mOSbxD4fpu/eqGUNJj2cfG1SyUaoQ7K+wb4 +2vcrCcSXZFTcHG8Vh6KqOoXdMQqPX/Hhb7lxE/0YPZYEjqN4HquGqWQy qIBqDWMqAzWzcImIfqVMjEzsNXF9UOex1Fsgv2X3MvJDm2S3havL8E5TW A==; X-IronPort-AV: E=McAfee;i="6400,9594,10393"; a="265359553" X-IronPort-AV: E=Sophos;i="5.92,234,1650956400"; d="scan'208";a="265359553" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Jun 2022 04:45:39 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,234,1650956400"; d="scan'208";a="918017024" Received: from silpixa00400884.ir.intel.com ([10.243.22.82]) by fmsmga005.fm.intel.com with ESMTP; 30 Jun 2022 04:45:37 -0700 From: Radu Nicolau To: Radu Nicolau , Akhil Goyal Cc: dev@dpdk.org, roy.fan.zhang@intel.com, vladimir.medvedkin@intel.com, vfialko@marvell.com Subject: [PATCH v2] examples/ipsec-secgw: fix fallback session create Date: Thu, 30 Jun 2022 12:45:27 +0100 Message-Id: <20220630114527.2392332-1-radu.nicolau@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220630100010.2364032-1-radu.nicolau@intel.com> References: <20220630100010.2364032-1-radu.nicolau@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Fix fallback session create for inline sessions. Fixes: a8ade12123c3 ("examples/ipsec-secgw: create lookaside sessions at init") Cc: vfialko@marvell.com Signed-off-by: Radu Nicolau Tested-by: Vladimir Medvedkin Acked-by: Akhil Goyal --- v2: create the session rather than just check if it's NULLL examples/ipsec-secgw/sa.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/examples/ipsec-secgw/sa.c b/examples/ipsec-secgw/sa.c index 5d9cec97db..d081cd0e2c 100644 --- a/examples/ipsec-secgw/sa.c +++ b/examples/ipsec-secgw/sa.c @@ -1533,7 +1533,8 @@ fill_ipsec_session(struct rte_ipsec_session *ss, struct rte_ipsec_sa *sa) * Initialise related rte_ipsec_sa object. */ static int -ipsec_sa_init(struct ipsec_sa *lsa, struct rte_ipsec_sa *sa, uint32_t sa_size) +ipsec_sa_init(struct ipsec_sa *lsa, struct rte_ipsec_sa *sa, uint32_t sa_size, + struct socket_ctx *skt_ctx, struct ipsec_ctx *ips_ctx[]) { int rc; struct rte_ipsec_sa_prm prm; @@ -1572,8 +1573,15 @@ ipsec_sa_init(struct ipsec_sa *lsa, struct rte_ipsec_sa *sa, uint32_t sa_size) return rc; /* init inline fallback processing session */ - if (lsa->fallback_sessions == 1) - rc = fill_ipsec_session(ipsec_get_fallback_session(lsa), sa); + if (lsa->fallback_sessions == 1) { + struct rte_ipsec_session *ipfs = ipsec_get_fallback_session(lsa); + if (ipfs->security.ses == NULL) { + rc = create_lookaside_session(ips_ctx, skt_ctx, lsa, ipfs); + if (rc != 0) + return rc; + } + rc = fill_ipsec_session(ipfs, sa); + } return rc; } @@ -1583,7 +1591,8 @@ ipsec_sa_init(struct ipsec_sa *lsa, struct rte_ipsec_sa *sa, uint32_t sa_size) * one per session. */ static int -ipsec_satbl_init(struct sa_ctx *ctx, uint32_t nb_ent, int32_t socket) +ipsec_satbl_init(struct sa_ctx *ctx, uint32_t nb_ent, int32_t socket, + struct socket_ctx *skt_ctx, struct ipsec_ctx *ips_ctx[]) { int32_t rc, sz; uint32_t i, idx; @@ -1621,7 +1630,7 @@ ipsec_satbl_init(struct sa_ctx *ctx, uint32_t nb_ent, int32_t socket) sa = (struct rte_ipsec_sa *)((uintptr_t)ctx->satbl + sz * i); lsa = ctx->sa + idx; - rc = ipsec_sa_init(lsa, sa, sz); + rc = ipsec_sa_init(lsa, sa, sz, skt_ctx, ips_ctx); } return rc; @@ -1700,7 +1709,7 @@ sa_init(struct socket_ctx *ctx, int32_t socket_id, if (app_sa_prm.enable != 0) { rc = ipsec_satbl_init(ctx->sa_in, nb_sa_in, - socket_id); + socket_id, ctx, ipsec_ctx); if (rc != 0) rte_exit(EXIT_FAILURE, "failed to init inbound SAs\n"); @@ -1722,7 +1731,7 @@ sa_init(struct socket_ctx *ctx, int32_t socket_id, if (app_sa_prm.enable != 0) { rc = ipsec_satbl_init(ctx->sa_out, nb_sa_out, - socket_id); + socket_id, ctx, ipsec_ctx); if (rc != 0) rte_exit(EXIT_FAILURE, "failed to init outbound SAs\n");