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 EF318A0548; Mon, 30 Aug 2021 21:59:57 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BACE6410F7; Mon, 30 Aug 2021 21:59:57 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 7465E410F3 for ; Mon, 30 Aug 2021 21:59:56 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 17UAuUCc011588; Mon, 30 Aug 2021 12:59:53 -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=QyQRRlHyA4BdafQOp3O1tfFKxBQAuaol7MsRfvQperw=; b=DRlmF56lrkx8Kj2v2/WFiL18L4ixwaBvaVFpukj6rjzWNLB+cuC7+dXr1LSuZgZYVFhf dWQ21NN5j1Pfja/SODpMq2IgW/wNW+gjL7dlmkFDq2L7SpPk71AMwAdaQ8VsvdAXN0oq WE3D4BP6MNP889dcaRZANZVBBAgBi2Yqgts16XTryjGqjA+IU8OkXRtLHvzfjlGX+QkS NQYPHezuMGtv8Jo5UzqfQtxpwVnUjjC6bmAKRebFLqnhlcLeyEqw52IjT3Y32czH02Kf avfEAK9Y4j0BKEAR95bLw2xFlufuX5Mfola4bPxlDk8A8r1yYjluhX62typUWQrB97Ch XQ== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com with ESMTP id 3arj9m3s4c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 30 Aug 2021 12:59:53 -0700 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Mon, 30 Aug 2021 12:59:51 -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; Mon, 30 Aug 2021 12:59:51 -0700 Received: from localhost.localdomain (unknown [10.28.34.29]) by maili.marvell.com (Postfix) with ESMTP id 352B33F7078; Mon, 30 Aug 2021 12:59:47 -0700 (PDT) From: Shijith Thotton To: CC: Shijith Thotton , , , , , Abhinandan Gujjar , Ray Kinsella , Ankur Dwivedi Date: Tue, 31 Aug 2021 01:29:38 +0530 Message-ID: X-Mailer: git-send-email 2.25.1 In-Reply-To: <639b24d9d48612de0dbf430a0dfba8da36a21188.1630352495.git.sthotton@marvell.com> References: <639b24d9d48612de0dbf430a0dfba8da36a21188.1630352495.git.sthotton@marvell.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Proofpoint-GUID: uaqdzY9UZT6bzV1x4tWuR9iVaAB7MQ9G X-Proofpoint-ORIG-GUID: uaqdzY9UZT6bzV1x4tWuR9iVaAB7MQ9G X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.391,FMLib:17.0.607.475 definitions=2021-08-30_06,2021-08-30_01,2020-04-07_01 Subject: [dpdk-dev] [PATCH v2] 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 before. 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 --- v2: * Updated deprecation notice. v1: * Rebased. app/test/test_event_crypto_adapter.c | 14 +++++++------- doc/guides/rel_notes/deprecation.rst | 6 ------ 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 +++++---------- 7 files changed, 24 insertions(+), 35 deletions(-) diff --git a/app/test/test_event_crypto_adapter.c b/app/test/test_event_crypto_adapter.c index 3ad20921e2..0d73694d3a 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; @@ -406,7 +406,7 @@ test_op_new_mode(uint8_t session_less) if (cap & RTE_EVENT_CRYPTO_ADAPTER_CAP_SESSION_PRIVATE_DATA) { /* Fill in private user data information */ rte_memcpy(&m_data.response_info, &response_info, - sizeof(m_data)); + sizeof(response_info)); rte_cryptodev_sym_session_set_user_data(sess, &m_data, sizeof(m_data)); } @@ -426,7 +426,7 @@ test_op_new_mode(uint8_t session_less) op->private_data_offset = len; /* Fill in private data information */ rte_memcpy(&m_data.response_info, &response_info, - sizeof(m_data)); + sizeof(response_info)); rte_memcpy((uint8_t *)op + len, &m_data, sizeof(m_data)); } @@ -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/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index 76a4abfd6b..58ee95c020 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -266,12 +266,6 @@ Deprecation Notices values to the function ``rte_event_eth_rx_adapter_queue_add`` using the structure ``rte_event_eth_rx_adapter_queue_add``. -* eventdev: Reserved bytes of ``rte_event_crypto_request`` is a space holder - for ``response_info``. Both should be decoupled for better clarity. - New space for ``response_info`` can be made by changing - ``rte_event_crypto_metadata`` type to structure from union. - This change is targeted for DPDK 21.11. - * metrics: The function ``rte_metrics_init`` will have a non-void return in order to notify errors instead of calling ``rte_exit``. 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