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 C5C3FA0C43; Thu, 5 Aug 2021 04:54:15 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5B9234014F; Thu, 5 Aug 2021 04:54:15 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id C525A40143 for ; Thu, 5 Aug 2021 04:54:13 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 1752pd2T020742; Wed, 4 Aug 2021 19:54:10 -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=SJvTslspiaMDc/r8ay9Uh2m6/aBhy72prGxqhc5Vu4g=; b=SZ8bEj+Ze6neC+XDdmjoqTIAsF8Sa2HJi4M8S8un6Hw4GAlTXJiLcKs8KrTtr//yzhLZ KGXtpMEKs5hgmf6AGmAXB+6dJ67DsJfMkjHTDn6a5unBXtXJ9Us8ot3BsiNECutPg1Wc mKNg+Lk0YsxPGShHFMOg7SdX2ZiOnQIx11FZXw+uZWNoJeNkyYKjYxLpCR5DoKgDfkH3 AN+84VTTTvslnYhR3Zvf96qNiBtmg3QDy/V+ObmxdHxXuYFsZgfLgR9jtFiiGtC6IXOZ 4XzauqYaR9xNsrK4ySQ0iJeE9AfAjbqZg0COtzENPV7HHwjJqcdN6GtByjX3RF5jJ5Qq ZA== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0a-0016f401.pphosted.com with ESMTP id 3a83r50khq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 04 Aug 2021 19:54:10 -0700 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Wed, 4 Aug 2021 19:54:08 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.18 via Frontend Transport; Wed, 4 Aug 2021 19:54:08 -0700 Received: from localhost.localdomain (unknown [10.28.34.29]) by maili.marvell.com (Postfix) with ESMTP id 294C83F705F; Wed, 4 Aug 2021 19:54:05 -0700 (PDT) From: Shijith Thotton To: CC: Shijith Thotton , , , , , , , Ankur Dwivedi , Pavan Nikhilesh Date: Thu, 5 Aug 2021 08:23:34 +0530 Message-ID: <1b4287b763777a5b0a612ede4a5b70cf9cc98de5.1628131909.git.sthotton@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <27596654d574825a71b4f422584194ebd8da6116.1628100722.git.sthotton@marvell.com> References: <27596654d574825a71b4f422584194ebd8da6116.1628100722.git.sthotton@marvell.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Proofpoint-ORIG-GUID: rX6aILqcWyZTcXuN9dJ_0XSIw9JBD6Qm X-Proofpoint-GUID: rX6aILqcWyZTcXuN9dJ_0XSIw9JBD6Qm X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391, 18.0.790 definitions=2021-08-04_08:2021-08-04, 2021-08-04 signatures=0 Subject: [dpdk-dev] [RFC] eventdev: update crypto adapter metadata structures 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" In crypto adapter metadata, reserved bytes in request info structure is a space holder for response info. It enforces an order of operation if the structures are updated using memcpy to avoid overwriting response info. It is logical to move the reserved space out of request info. It also solves the ordering issue mentioned above. This patch removes the reserve field from request info and makes event crypto metadata type to structure from union to make space for response info. App and drivers are updated as per metadata change. Signed-off-by: Shijith Thotton --- app/test/test_event_crypto_adapter.c | 10 +++++----- drivers/crypto/octeontx/otx_cryptodev_ops.c | 8 ++++---- drivers/crypto/octeontx2/otx2_cryptodev_ops.c | 4 ++-- .../event/octeontx2/otx2_evdev_crypto_adptr_tx.h | 4 ++-- lib/eventdev/rte_event_crypto_adapter.c | 8 ++++---- lib/eventdev/rte_event_crypto_adapter.h | 15 +++++---------- 6 files changed, 22 insertions(+), 27 deletions(-) diff --git a/app/test/test_event_crypto_adapter.c b/app/test/test_event_crypto_adapter.c index 3ad20921e2..8344719186 100644 --- a/app/test/test_event_crypto_adapter.c +++ b/app/test/test_event_crypto_adapter.c @@ -168,7 +168,7 @@ test_op_forward_mode(uint8_t session_less) { struct rte_crypto_sym_xform cipher_xform; struct rte_cryptodev_sym_session *sess; - union rte_event_crypto_metadata m_data; + struct rte_event_crypto_metadata m_data; struct rte_crypto_sym_op *sym_op; struct rte_crypto_op *op; struct rte_mbuf *m; @@ -368,7 +368,7 @@ test_op_new_mode(uint8_t session_less) { struct rte_crypto_sym_xform cipher_xform; struct rte_cryptodev_sym_session *sess; - union rte_event_crypto_metadata m_data; + struct rte_event_crypto_metadata m_data; struct rte_crypto_sym_op *sym_op; struct rte_crypto_op *op; struct rte_mbuf *m; @@ -519,7 +519,7 @@ configure_cryptodev(void) DEFAULT_NUM_XFORMS * sizeof(struct rte_crypto_sym_xform) + MAXIMUM_IV_LENGTH + - sizeof(union rte_event_crypto_metadata), + sizeof(struct rte_event_crypto_metadata), rte_socket_id()); if (params.op_mpool == NULL) { RTE_LOG(ERR, USER1, "Can't create CRYPTO_OP_POOL\n"); @@ -549,12 +549,12 @@ configure_cryptodev(void) * to include the session headers & private data */ session_size = rte_cryptodev_sym_get_private_session_size(TEST_CDEV_ID); - session_size += sizeof(union rte_event_crypto_metadata); + session_size += sizeof(struct rte_event_crypto_metadata); params.session_mpool = rte_cryptodev_sym_session_pool_create( "CRYPTO_ADAPTER_SESSION_MP", MAX_NB_SESSIONS, 0, 0, - sizeof(union rte_event_crypto_metadata), + sizeof(struct rte_event_crypto_metadata), SOCKET_ID_ANY); TEST_ASSERT_NOT_NULL(params.session_mpool, "session mempool allocation failed\n"); diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.c b/drivers/crypto/octeontx/otx_cryptodev_ops.c index eac6796cfb..c51be63146 100644 --- a/drivers/crypto/octeontx/otx_cryptodev_ops.c +++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c @@ -710,17 +710,17 @@ submit_request_to_sso(struct ssows *ws, uintptr_t req, ssovf_store_pair(add_work, req, ws->grps[rsp_info->queue_id]); } -static inline union rte_event_crypto_metadata * +static inline struct rte_event_crypto_metadata * get_event_crypto_mdata(struct rte_crypto_op *op) { - union rte_event_crypto_metadata *ec_mdata; + struct rte_event_crypto_metadata *ec_mdata; if (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION) ec_mdata = rte_cryptodev_sym_session_get_user_data( op->sym->session); else if (op->sess_type == RTE_CRYPTO_OP_SESSIONLESS && op->private_data_offset) - ec_mdata = (union rte_event_crypto_metadata *) + ec_mdata = (struct rte_event_crypto_metadata *) ((uint8_t *)op + op->private_data_offset); else return NULL; @@ -731,7 +731,7 @@ get_event_crypto_mdata(struct rte_crypto_op *op) uint16_t __rte_hot otx_crypto_adapter_enqueue(void *port, struct rte_crypto_op *op) { - union rte_event_crypto_metadata *ec_mdata; + struct rte_event_crypto_metadata *ec_mdata; struct cpt_instance *instance; struct cpt_request_info *req; struct rte_event *rsp_info; diff --git a/drivers/crypto/octeontx2/otx2_cryptodev_ops.c b/drivers/crypto/octeontx2/otx2_cryptodev_ops.c index 42100154cd..952d1352f4 100644 --- a/drivers/crypto/octeontx2/otx2_cryptodev_ops.c +++ b/drivers/crypto/octeontx2/otx2_cryptodev_ops.c @@ -453,7 +453,7 @@ otx2_ca_enqueue_req(const struct otx2_cpt_qp *qp, struct rte_crypto_op *op, uint64_t cpt_inst_w7) { - union rte_event_crypto_metadata *m_data; + struct rte_event_crypto_metadata *m_data; union cpt_inst_s inst; uint64_t lmt_status; @@ -468,7 +468,7 @@ otx2_ca_enqueue_req(const struct otx2_cpt_qp *qp, } } else if (op->sess_type == RTE_CRYPTO_OP_SESSIONLESS && op->private_data_offset) { - m_data = (union rte_event_crypto_metadata *) + m_data = (struct rte_event_crypto_metadata *) ((uint8_t *)op + op->private_data_offset); } else { diff --git a/drivers/event/octeontx2/otx2_evdev_crypto_adptr_tx.h b/drivers/event/octeontx2/otx2_evdev_crypto_adptr_tx.h index ecf7eb9f56..458e8306d7 100644 --- a/drivers/event/octeontx2/otx2_evdev_crypto_adptr_tx.h +++ b/drivers/event/octeontx2/otx2_evdev_crypto_adptr_tx.h @@ -16,7 +16,7 @@ static inline uint16_t otx2_ca_enq(uintptr_t tag_op, const struct rte_event *ev) { - union rte_event_crypto_metadata *m_data; + struct rte_event_crypto_metadata *m_data; struct rte_crypto_op *crypto_op; struct rte_cryptodev *cdev; struct otx2_cpt_qp *qp; @@ -37,7 +37,7 @@ otx2_ca_enq(uintptr_t tag_op, const struct rte_event *ev) qp_id = m_data->request_info.queue_pair_id; } else if (crypto_op->sess_type == RTE_CRYPTO_OP_SESSIONLESS && crypto_op->private_data_offset) { - m_data = (union rte_event_crypto_metadata *) + m_data = (struct rte_event_crypto_metadata *) ((uint8_t *)crypto_op + crypto_op->private_data_offset); cdev_id = m_data->request_info.cdev_id; diff --git a/lib/eventdev/rte_event_crypto_adapter.c b/lib/eventdev/rte_event_crypto_adapter.c index e1d38d383d..6977391ae9 100644 --- a/lib/eventdev/rte_event_crypto_adapter.c +++ b/lib/eventdev/rte_event_crypto_adapter.c @@ -333,7 +333,7 @@ eca_enq_to_cryptodev(struct rte_event_crypto_adapter *adapter, struct rte_event *ev, unsigned int cnt) { struct rte_event_crypto_adapter_stats *stats = &adapter->crypto_stats; - union rte_event_crypto_metadata *m_data = NULL; + struct rte_event_crypto_metadata *m_data = NULL; struct crypto_queue_pair_info *qp_info = NULL; struct rte_crypto_op *crypto_op; unsigned int i, n; @@ -371,7 +371,7 @@ eca_enq_to_cryptodev(struct rte_event_crypto_adapter *adapter, len++; } else if (crypto_op->sess_type == RTE_CRYPTO_OP_SESSIONLESS && crypto_op->private_data_offset) { - m_data = (union rte_event_crypto_metadata *) + m_data = (struct rte_event_crypto_metadata *) ((uint8_t *)crypto_op + crypto_op->private_data_offset); cdev_id = m_data->request_info.cdev_id; @@ -504,7 +504,7 @@ eca_ops_enqueue_burst(struct rte_event_crypto_adapter *adapter, struct rte_crypto_op **ops, uint16_t num) { struct rte_event_crypto_adapter_stats *stats = &adapter->crypto_stats; - union rte_event_crypto_metadata *m_data = NULL; + struct rte_event_crypto_metadata *m_data = NULL; uint8_t event_dev_id = adapter->eventdev_id; uint8_t event_port_id = adapter->event_port_id; struct rte_event events[BATCH_SIZE]; @@ -523,7 +523,7 @@ eca_ops_enqueue_burst(struct rte_event_crypto_adapter *adapter, ops[i]->sym->session); } else if (ops[i]->sess_type == RTE_CRYPTO_OP_SESSIONLESS && ops[i]->private_data_offset) { - m_data = (union rte_event_crypto_metadata *) + m_data = (struct rte_event_crypto_metadata *) ((uint8_t *)ops[i] + ops[i]->private_data_offset); } diff --git a/lib/eventdev/rte_event_crypto_adapter.h b/lib/eventdev/rte_event_crypto_adapter.h index f8c6cca87c..3c24d9d9df 100644 --- a/lib/eventdev/rte_event_crypto_adapter.h +++ b/lib/eventdev/rte_event_crypto_adapter.h @@ -200,11 +200,6 @@ enum rte_event_crypto_adapter_mode { * provide event request information to the adapter. */ struct rte_event_crypto_request { - uint8_t resv[8]; - /**< Overlaps with first 8 bytes of struct rte_event - * that encode the response event information. Application - * is expected to fill in struct rte_event response_info. - */ uint16_t cdev_id; /**< cryptodev ID to be used */ uint16_t queue_pair_id; @@ -223,16 +218,16 @@ struct rte_event_crypto_request { * operation. If the transfer is done by SW, event response information * will be used by the adapter. */ -union rte_event_crypto_metadata { - struct rte_event_crypto_request request_info; - /**< Request information to be filled in by application - * for RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD mode. - */ +struct rte_event_crypto_metadata { struct rte_event response_info; /**< Response information to be filled in by application * for RTE_EVENT_CRYPTO_ADAPTER_OP_NEW and * RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD mode. */ + struct rte_event_crypto_request request_info; + /**< Request information to be filled in by application + * for RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD mode. + */ }; /** -- 2.25.1