From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 172E1A0C4A; Tue, 13 Jul 2021 12:27:33 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 79F214122E; Tue, 13 Jul 2021 12:27:32 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 7A56440687 for ; Tue, 13 Jul 2021 12:27:30 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 16DAR9I2019012 for ; Tue, 13 Jul 2021 03:27:30 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=iM02ewoMyuUG5TcpR/68CUDmKi0krCoQbYGc8xq38BE=; b=XrXTgp6NF+Le+FU8tsSjhp+b1vunlA1CxIUgCmUSlROR879DCfK/75t5aTaAO4FUTzBg RwDhO/VS3pLZ+iisns6ZNj2JhadCYH2jbjrey95bSISK2TzUPVa+L2xjdU4ezt9ZlkkP TqCTfsSHFu5R7dNe+puBxN4HBkUngSG9ugznFHxviDpqtzWcPaVco0HaqlhPHVpx2Cxz ljk/a+g11q2K+8mP/YhLRBdunLkvPwlTBXOs/9JW7YpEk3O4HFFOnF+0Zbr9hfw2VDSe SO8Kyzat5znP3zU4KMOw/l8cLVH/2dXihA47I5qtrqcjroAFMiMm0k/TOUWrh3qMzwQ5 ng== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com with ESMTP id 39s8n8r3jy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Tue, 13 Jul 2021 03:27:29 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Tue, 13 Jul 2021 03:27:27 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.18 via Frontend Transport; Tue, 13 Jul 2021 03:27:27 -0700 Received: from HY-LT1002.marvell.com (HY-LT1002.marvell.com [10.28.176.218]) by maili.marvell.com (Postfix) with ESMTP id 7B9E53F70AB; Tue, 13 Jul 2021 03:27:24 -0700 (PDT) From: Anoob Joseph To: Akhil Goyal , Jerin Jacob CC: Anoob Joseph , Ankur Dwivedi , Tejasree Kondoj , Date: Tue, 13 Jul 2021 15:57:08 +0530 Message-ID: <1626172028-100-3-git-send-email-anoobj@marvell.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1626172028-100-1-git-send-email-anoobj@marvell.com> References: <1626172028-100-1-git-send-email-anoobj@marvell.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Proofpoint-GUID: RI4L6tOPA9hRjBTUSRf5dKR0euFwWUdM X-Proofpoint-ORIG-GUID: RI4L6tOPA9hRjBTUSRf5dKR0euFwWUdM X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391, 18.0.790 definitions=2021-07-13_04:2021-07-13, 2021-07-13 signatures=0 Subject: [dpdk-dev] [PATCH 3/3] net/octeontx2: clear SA valid during session destroy 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 Sender: "dev" SA table entry would be reserved for inline inbound operations. Clear valid bit of the SA so that CPT would treat SA entry as invalid. Also, move setting of valid bit to the end in case of session_create() to eliminate possibility of hardware seeing partial data. Signed-off-by: Anoob Joseph --- drivers/crypto/octeontx2/otx2_ipsec_fp.h | 1 - drivers/net/octeontx2/otx2_ethdev_sec.c | 28 ++++++++++++++++++++++++---- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/drivers/crypto/octeontx2/otx2_ipsec_fp.h b/drivers/crypto/octeontx2/otx2_ipsec_fp.h index a33041d..58b24a2 100644 --- a/drivers/crypto/octeontx2/otx2_ipsec_fp.h +++ b/drivers/crypto/octeontx2/otx2_ipsec_fp.h @@ -365,7 +365,6 @@ ipsec_fp_sa_ctl_set(struct rte_security_ipsec_xform *ipsec, ctl->esn_en = 1; ctl->spi = rte_cpu_to_be_32(ipsec->spi); - ctl->valid = 1; return 0; } diff --git a/drivers/net/octeontx2/otx2_ethdev_sec.c b/drivers/net/octeontx2/otx2_ethdev_sec.c index 72298cf..c2a3688 100644 --- a/drivers/net/octeontx2/otx2_ethdev_sec.c +++ b/drivers/net/octeontx2/otx2_ethdev_sec.c @@ -455,6 +455,9 @@ eth_sec_ipsec_out_sess_create(struct rte_eth_dev *eth_dev, goto cpt_put; } + rte_io_wmb(); + ctl->valid = 1; + return 0; cpt_put: otx2_sec_idev_tx_cpt_qp_put(sess->qp); @@ -595,6 +598,9 @@ eth_sec_ipsec_in_sess_create(struct rte_eth_dev *eth_dev, sa->esn_hi = 0; } + rte_io_wmb(); + ctl->valid = 1; + rte_spinlock_unlock(&dev->ipsec_tbl_lock); return 0; @@ -682,10 +688,12 @@ otx2_eth_sec_free_anti_replay(struct otx2_ipsec_fp_in_sa *sa) } static int -otx2_eth_sec_session_destroy(void *device __rte_unused, +otx2_eth_sec_session_destroy(void *device, struct rte_security_session *sess) { + struct otx2_eth_dev *dev = otx2_eth_pmd_priv(device); struct otx2_sec_session_ipsec_ip *sess_ip; + struct otx2_ipsec_fp_in_sa *sa; struct otx2_sec_session *priv; struct rte_mempool *sess_mp; int ret; @@ -696,9 +704,21 @@ otx2_eth_sec_session_destroy(void *device __rte_unused, sess_ip = &priv->ipsec.ip; - /* Release the anti replay window */ - if (priv->ipsec.dir == RTE_SECURITY_IPSEC_SA_DIR_INGRESS) - otx2_eth_sec_free_anti_replay(sess_ip->in_sa); + if (priv->ipsec.dir == RTE_SECURITY_IPSEC_SA_DIR_INGRESS) { + rte_spinlock_lock(&dev->ipsec_tbl_lock); + sa = sess_ip->in_sa; + + /* Release the anti replay window */ + otx2_eth_sec_free_anti_replay(sa); + + /* Clear SA table entry */ + if (sa != NULL) { + sa->ctl.valid = 0; + rte_io_wmb(); + } + + rte_spinlock_unlock(&dev->ipsec_tbl_lock); + } /* Release CPT LF used for this session */ if (sess_ip->qp != NULL) { -- 2.7.4