DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 0/2] OCTEONTX crypto adapter support
@ 2021-06-22 16:48 Shijith Thotton
  2021-06-22 16:48 ` [dpdk-dev] [PATCH 1/2] drivers: add octeontx crypto adapter framework Shijith Thotton
                   ` (2 more replies)
  0 siblings, 3 replies; 24+ messages in thread
From: Shijith Thotton @ 2021-06-22 16:48 UTC (permalink / raw)
  To: dev
  Cc: sthotton, pbhagavatula, anoobj, jerinj, abhinandan.gujjar,
	adwivedi, gakhil

Below patches add crypto adapter OP_FORWARD support for OCTEON TX PMD.

Shijith Thotton (2):
  drivers: add octeontx crypto adapter framework
  drivers: add octeontx crypto adapter data path

 doc/guides/rel_notes/release_21_08.rst        |   4 +
 drivers/common/cpt/cpt_common.h               |   2 +-
 drivers/crypto/octeontx/meson.build           |   6 +
 drivers/crypto/octeontx/otx_cryptodev.c       |   4 +
 drivers/crypto/octeontx/otx_cryptodev.h       |   4 -
 .../crypto/octeontx/otx_cryptodev_hw_access.h |   1 +
 drivers/crypto/octeontx/otx_cryptodev_ops.c   | 272 +++++++++++++-----
 drivers/crypto/octeontx/otx_cryptodev_ops.h   |   7 +
 drivers/crypto/octeontx/version.map           |   9 +
 drivers/event/octeontx/meson.build            |   1 +
 drivers/event/octeontx/ssovf_evdev.c          |  68 +++++
 drivers/event/octeontx/ssovf_worker.c         |  11 +
 drivers/event/octeontx/ssovf_worker.h         |  25 +-
 .../octeontx2/otx2_evdev_crypto_adptr_rx.h    |   6 +-
 14 files changed, 332 insertions(+), 88 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 24+ messages in thread

* [dpdk-dev] [PATCH 1/2] drivers: add octeontx crypto adapter framework
  2021-06-22 16:48 [dpdk-dev] [PATCH 0/2] OCTEONTX crypto adapter support Shijith Thotton
@ 2021-06-22 16:48 ` Shijith Thotton
  2021-06-22 16:48 ` [dpdk-dev] [PATCH 2/2] drivers: add octeontx crypto adapter data path Shijith Thotton
  2021-06-23 20:53 ` [dpdk-dev] [PATCH v2 0/2] OCTEONTX crypto adapter support Shijith Thotton
  2 siblings, 0 replies; 24+ messages in thread
From: Shijith Thotton @ 2021-06-22 16:48 UTC (permalink / raw)
  To: dev
  Cc: sthotton, pbhagavatula, anoobj, jerinj, abhinandan.gujjar,
	adwivedi, gakhil

Set crypto adapter event device slow-path call backs.

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
---
 drivers/crypto/octeontx/meson.build           |  1 +
 drivers/crypto/octeontx/otx_cryptodev.c       |  4 ++
 drivers/crypto/octeontx/otx_cryptodev.h       |  4 --
 .../crypto/octeontx/otx_cryptodev_hw_access.h |  1 +
 drivers/event/octeontx/meson.build            |  1 +
 drivers/event/octeontx/ssovf_evdev.c          | 67 +++++++++++++++++++
 6 files changed, 74 insertions(+), 4 deletions(-)

diff --git a/drivers/crypto/octeontx/meson.build b/drivers/crypto/octeontx/meson.build
index daef47a72f..37603c5c89 100644
--- a/drivers/crypto/octeontx/meson.build
+++ b/drivers/crypto/octeontx/meson.build
@@ -7,6 +7,7 @@ endif
 
 deps += ['bus_pci']
 deps += ['common_cpt']
+deps += ['eventdev']
 
 sources = files(
         'otx_cryptodev.c',
diff --git a/drivers/crypto/octeontx/otx_cryptodev.c b/drivers/crypto/octeontx/otx_cryptodev.c
index ba73c2f939..7207909abb 100644
--- a/drivers/crypto/octeontx/otx_cryptodev.c
+++ b/drivers/crypto/octeontx/otx_cryptodev.c
@@ -14,6 +14,10 @@
 
 #include "cpt_pmd_logs.h"
 
+/* Device ID */
+#define PCI_VENDOR_ID_CAVIUM		0x177d
+#define CPT_81XX_PCI_VF_DEVICE_ID	0xa041
+
 uint8_t otx_cryptodev_driver_id;
 
 static struct rte_pci_id pci_id_cpt_table[] = {
diff --git a/drivers/crypto/octeontx/otx_cryptodev.h b/drivers/crypto/octeontx/otx_cryptodev.h
index b66ef4a8f7..5d8607eafb 100644
--- a/drivers/crypto/octeontx/otx_cryptodev.h
+++ b/drivers/crypto/octeontx/otx_cryptodev.h
@@ -8,10 +8,6 @@
 /* Cavium OCTEON TX crypto PMD device name */
 #define CRYPTODEV_NAME_OCTEONTX_PMD	crypto_octeontx
 
-/* Device ID */
-#define PCI_VENDOR_ID_CAVIUM		0x177d
-#define CPT_81XX_PCI_VF_DEVICE_ID	0xa041
-
 #define CPT_LOGTYPE otx_cpt_logtype
 
 extern int otx_cpt_logtype;
diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h
index 0ec258157a..f7b1e93402 100644
--- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h
+++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h
@@ -45,6 +45,7 @@ struct cpt_instance {
 	struct rte_mempool *sess_mp;
 	struct rte_mempool *sess_mp_priv;
 	struct cpt_qp_meta_info meta_info;
+	uint8_t ca_enabled;
 };
 
 struct command_chunk {
diff --git a/drivers/event/octeontx/meson.build b/drivers/event/octeontx/meson.build
index 3cb140b4de..0d9eec3f2e 100644
--- a/drivers/event/octeontx/meson.build
+++ b/drivers/event/octeontx/meson.build
@@ -12,3 +12,4 @@ sources = files(
 )
 
 deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev', 'net_octeontx']
+deps += ['crypto_octeontx']
diff --git a/drivers/event/octeontx/ssovf_evdev.c b/drivers/event/octeontx/ssovf_evdev.c
index d8b359801a..25bf207db6 100644
--- a/drivers/event/octeontx/ssovf_evdev.c
+++ b/drivers/event/octeontx/ssovf_evdev.c
@@ -5,6 +5,7 @@
 #include <inttypes.h>
 
 #include <rte_common.h>
+#include <rte_cryptodev.h>
 #include <rte_debug.h>
 #include <rte_dev.h>
 #include <rte_eal.h>
@@ -19,6 +20,7 @@
 
 #include "ssovf_evdev.h"
 #include "timvf_evdev.h"
+#include "otx_cryptodev_hw_access.h"
 
 static uint8_t timvf_enable_stats;
 
@@ -725,6 +727,67 @@ ssovf_timvf_caps_get(const struct rte_eventdev *dev, uint64_t flags,
 			timvf_enable_stats);
 }
 
+static int
+ssovf_crypto_adapter_caps_get(const struct rte_eventdev *dev,
+			      const struct rte_cryptodev *cdev, uint32_t *caps)
+{
+	RTE_SET_USED(dev);
+	RTE_SET_USED(cdev);
+
+	*caps = 0;
+
+	return 0;
+}
+
+static int
+ssovf_crypto_adapter_qp_add(const struct rte_eventdev *dev,
+			    const struct rte_cryptodev *cdev,
+			    int32_t queue_pair_id,
+			    const struct rte_event *event)
+{
+	struct cpt_instance *qp;
+	uint8_t qp_id;
+
+	RTE_SET_USED(event);
+
+	if (queue_pair_id == -1) {
+		for (qp_id = 0; qp_id < cdev->data->nb_queue_pairs; qp_id++) {
+			qp = cdev->data->queue_pairs[qp_id];
+			qp->ca_enabled = 1;
+		}
+	} else {
+		qp = cdev->data->queue_pairs[queue_pair_id];
+		qp->ca_enabled = 1;
+	}
+
+	ssovf_fastpath_fns_set((struct rte_eventdev *)(uintptr_t)dev);
+
+	return 0;
+}
+
+static int
+ssovf_crypto_adapter_qp_del(const struct rte_eventdev *dev,
+			    const struct rte_cryptodev *cdev,
+			    int32_t queue_pair_id)
+{
+	struct cpt_instance *qp;
+	uint8_t qp_id;
+
+	RTE_SET_USED(dev);
+
+	if (queue_pair_id == -1) {
+		for (qp_id = 0; qp_id < cdev->data->nb_queue_pairs; qp_id++) {
+			qp = cdev->data->queue_pairs[qp_id];
+			qp->ca_enabled = 0;
+		}
+	} else {
+		qp = cdev->data->queue_pairs[queue_pair_id];
+		qp->ca_enabled = 0;
+	}
+
+	return 0;
+}
+
 /* Initialize and register event driver with DPDK Application */
 static struct rte_eventdev_ops ssovf_ops = {
 	.dev_infos_get    = ssovf_info_get,
@@ -755,6 +818,10 @@ static struct rte_eventdev_ops ssovf_ops = {
 
 	.timer_adapter_caps_get = ssovf_timvf_caps_get,
 
+	.crypto_adapter_caps_get = ssovf_crypto_adapter_caps_get,
+	.crypto_adapter_queue_pair_add = ssovf_crypto_adapter_qp_add,
+	.crypto_adapter_queue_pair_del = ssovf_crypto_adapter_qp_del,
+
 	.dev_selftest = test_eventdev_octeontx,
 
 	.dump             = ssovf_dump,
-- 
2.25.1


^ permalink raw reply	[flat|nested] 24+ messages in thread

* [dpdk-dev] [PATCH 2/2] drivers: add octeontx crypto adapter data path
  2021-06-22 16:48 [dpdk-dev] [PATCH 0/2] OCTEONTX crypto adapter support Shijith Thotton
  2021-06-22 16:48 ` [dpdk-dev] [PATCH 1/2] drivers: add octeontx crypto adapter framework Shijith Thotton
@ 2021-06-22 16:48 ` Shijith Thotton
  2021-07-06 20:20   ` Akhil Goyal
  2021-06-23 20:53 ` [dpdk-dev] [PATCH v2 0/2] OCTEONTX crypto adapter support Shijith Thotton
  2 siblings, 1 reply; 24+ messages in thread
From: Shijith Thotton @ 2021-06-22 16:48 UTC (permalink / raw)
  To: dev
  Cc: sthotton, pbhagavatula, anoobj, jerinj, abhinandan.gujjar,
	adwivedi, gakhil

Added support for crypto adapter OP_FORWARD mode.

As OcteonTx CPT crypto completions could be out of order, each crypto op
is enqueued to CPT, dequeued from CPT and enqueued to SSO one-by-one.

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
---
 doc/guides/rel_notes/release_21_08.rst        |   4 +
 drivers/common/cpt/cpt_common.h               |   2 +-
 drivers/crypto/octeontx/meson.build           |   5 +
 drivers/crypto/octeontx/otx_cryptodev_ops.c   | 272 +++++++++++++-----
 drivers/crypto/octeontx/otx_cryptodev_ops.h   |   7 +
 drivers/crypto/octeontx/version.map           |   9 +
 drivers/event/octeontx/ssovf_evdev.c          |   3 +-
 drivers/event/octeontx/ssovf_worker.c         |  11 +
 drivers/event/octeontx/ssovf_worker.h         |  25 +-
 .../octeontx2/otx2_evdev_crypto_adptr_rx.h    |   6 +-
 10 files changed, 259 insertions(+), 85 deletions(-)

diff --git a/doc/guides/rel_notes/release_21_08.rst b/doc/guides/rel_notes/release_21_08.rst
index a6ecfdf3ce..70a91cc654 100644
--- a/doc/guides/rel_notes/release_21_08.rst
+++ b/doc/guides/rel_notes/release_21_08.rst
@@ -55,6 +55,10 @@ New Features
      Also, make sure to start the actual text at the margin.
      =======================================================
 
+* **Updated Marvell OCTEON TX PMD.**
+
+  Added support for crypto adapter OP_FORWARD mode.
+
 
 Removed Items
 -------------
diff --git a/drivers/common/cpt/cpt_common.h b/drivers/common/cpt/cpt_common.h
index 7fea0ca879..724e5ec736 100644
--- a/drivers/common/cpt/cpt_common.h
+++ b/drivers/common/cpt/cpt_common.h
@@ -54,7 +54,7 @@ struct cpt_request_info {
 		uint64_t ei2;
 	} ist;
 	uint8_t *rptr;
-	const struct otx2_cpt_qp *qp;
+	const void *qp;
 
 	/** Control path fields */
 	uint64_t time_out;
diff --git a/drivers/crypto/octeontx/meson.build b/drivers/crypto/octeontx/meson.build
index 37603c5c89..3ae6729e8f 100644
--- a/drivers/crypto/octeontx/meson.build
+++ b/drivers/crypto/octeontx/meson.build
@@ -6,6 +6,7 @@ if not is_linux
 endif
 
 deps += ['bus_pci']
+deps += ['bus_vdev']
 deps += ['common_cpt']
 deps += ['eventdev']
 
@@ -18,3 +19,7 @@ sources = files(
 )
 
 includes += include_directories('../../common/cpt')
+includes += include_directories('../../common/octeontx')
+includes += include_directories('../../event/octeontx')
+includes += include_directories('../../mempool/octeontx')
+includes += include_directories('../../net/octeontx')
diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.c b/drivers/crypto/octeontx/otx_cryptodev_ops.c
index d75f4b5f81..2ec95bbca4 100644
--- a/drivers/crypto/octeontx/otx_cryptodev_ops.c
+++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c
@@ -6,6 +6,8 @@
 #include <rte_bus_pci.h>
 #include <rte_cryptodev.h>
 #include <rte_cryptodev_pmd.h>
+#include <rte_eventdev.h>
+#include <rte_event_crypto_adapter.h>
 #include <rte_errno.h>
 #include <rte_malloc.h>
 #include <rte_mempool.h>
@@ -21,6 +23,8 @@
 #include "cpt_ucode.h"
 #include "cpt_ucode_asym.h"
 
+#include "ssovf_worker.h"
+
 static uint64_t otx_fpm_iova[CPT_EC_ID_PMAX];
 
 /* Forward declarations */
@@ -412,15 +416,17 @@ otx_cpt_asym_session_clear(struct rte_cryptodev *dev,
 	rte_mempool_put(sess_mp, priv);
 }
 
-static __rte_always_inline int32_t __rte_hot
+static __rte_always_inline void * __rte_hot
 otx_cpt_request_enqueue(struct cpt_instance *instance,
 			struct pending_queue *pqueue,
 			void *req, uint64_t cpt_inst_w7)
 {
 	struct cpt_request_info *user_req = (struct cpt_request_info *)req;
 
-	if (unlikely(pqueue->pending_count >= DEFAULT_CMD_QLEN))
-		return -EAGAIN;
+	if (unlikely(pqueue->pending_count >= DEFAULT_CMD_QLEN)) {
+		rte_errno = EAGAIN;
+		return NULL;
+	}
 
 	fill_cpt_inst(instance, req, cpt_inst_w7);
 
@@ -434,18 +440,12 @@ otx_cpt_request_enqueue(struct cpt_instance *instance,
 	/* Default mode of software queue */
 	mark_cpt_inst(instance);
 
-	pqueue->req_queue[pqueue->enq_tail] = (uintptr_t)user_req;
-
-	/* We will use soft queue length here to limit requests */
-	MOD_INC(pqueue->enq_tail, DEFAULT_CMD_QLEN);
-	pqueue->pending_count += 1;
-
 	CPT_LOG_DP_DEBUG("Submitted NB cmd with request: %p "
 			 "op: %p", user_req, user_req->op);
-	return 0;
+	return req;
 }
 
-static __rte_always_inline int __rte_hot
+static __rte_always_inline void * __rte_hot
 otx_cpt_enq_single_asym(struct cpt_instance *instance,
 			struct rte_crypto_op *op,
 			struct pending_queue *pqueue)
@@ -456,11 +456,13 @@ otx_cpt_enq_single_asym(struct cpt_instance *instance,
 	struct cpt_asym_sess_misc *sess;
 	uintptr_t *cop;
 	void *mdata;
+	void *req;
 	int ret;
 
 	if (unlikely(rte_mempool_get(minfo->pool, &mdata) < 0)) {
 		CPT_LOG_DP_ERR("Could not allocate meta buffer for request");
-		return -ENOMEM;
+		rte_errno = ENOMEM;
+		return NULL;
 	}
 
 	sess = get_asym_session_private_data(asym_op->session,
@@ -506,27 +508,26 @@ otx_cpt_enq_single_asym(struct cpt_instance *instance,
 
 	default:
 		op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
-		ret = -EINVAL;
+		rte_errno = EINVAL;
 		goto req_fail;
 	}
 
-	ret = otx_cpt_request_enqueue(instance, pqueue, params.req,
+	req = otx_cpt_request_enqueue(instance, pqueue, params.req,
 				      sess->cpt_inst_w7);
-
-	if (unlikely(ret)) {
+	if (unlikely(!req)) {
 		CPT_LOG_DP_ERR("Could not enqueue crypto req");
 		goto req_fail;
 	}
 
-	return 0;
+	return req;
 
 req_fail:
 	free_op_meta(mdata, minfo->pool);
 
-	return ret;
+	return NULL;
 }
 
-static __rte_always_inline int __rte_hot
+static __rte_always_inline void * __rte_hot
 otx_cpt_enq_single_sym(struct cpt_instance *instance,
 		       struct rte_crypto_op *op,
 		       struct pending_queue *pqueue)
@@ -536,6 +537,7 @@ otx_cpt_enq_single_sym(struct cpt_instance *instance,
 	struct cpt_request_info *prep_req;
 	void *mdata = NULL;
 	int ret = 0;
+	void *req;
 	uint64_t cpt_op;
 
 	sess = (struct cpt_sess_misc *)
@@ -554,23 +556,22 @@ otx_cpt_enq_single_sym(struct cpt_instance *instance,
 	if (unlikely(ret)) {
 		CPT_LOG_DP_ERR("prep cryto req : op %p, cpt_op 0x%x "
 			       "ret 0x%x", op, (unsigned int)cpt_op, ret);
-		return ret;
+		return NULL;
 	}
 
 	/* Enqueue prepared instruction to h/w */
-	ret = otx_cpt_request_enqueue(instance, pqueue, prep_req,
+	req = otx_cpt_request_enqueue(instance, pqueue, prep_req,
 				      sess->cpt_inst_w7);
-
-	if (unlikely(ret)) {
+	if (unlikely(!req)) {
 		/* Buffer allocated for request preparation need to be freed */
 		free_op_meta(mdata, instance->meta_info.pool);
-		return ret;
+		return NULL;
 	}
 
-	return 0;
+	return req;
 }
 
-static __rte_always_inline int __rte_hot
+static __rte_always_inline void * __rte_hot
 otx_cpt_enq_single_sym_sessless(struct cpt_instance *instance,
 				struct rte_crypto_op *op,
 				struct pending_queue *pend_q)
@@ -578,12 +579,15 @@ otx_cpt_enq_single_sym_sessless(struct cpt_instance *instance,
 	const int driver_id = otx_cryptodev_driver_id;
 	struct rte_crypto_sym_op *sym_op = op->sym;
 	struct rte_cryptodev_sym_session *sess;
+	void *req;
 	int ret;
 
 	/* Create temporary session */
 	sess = rte_cryptodev_sym_session_create(instance->sess_mp);
-	if (sess == NULL)
-		return -ENOMEM;
+	if (sess == NULL) {
+		rte_errno = ENOMEM;
+		return NULL;
+	}
 
 	ret = sym_session_configure(driver_id, sym_op->xform, sess,
 				    instance->sess_mp_priv);
@@ -592,24 +596,24 @@ otx_cpt_enq_single_sym_sessless(struct cpt_instance *instance,
 
 	sym_op->session = sess;
 
-	ret = otx_cpt_enq_single_sym(instance, op, pend_q);
+	req = otx_cpt_enq_single_sym(instance, op, pend_q);
 
-	if (unlikely(ret))
+	if (unlikely(!req))
 		goto priv_put;
 
-	return 0;
+	return req;
 
 priv_put:
 	sym_session_clear(driver_id, sess);
 sess_put:
 	rte_mempool_put(instance->sess_mp, sess);
-	return ret;
+	return NULL;
 }
 
 #define OP_TYPE_SYM		0
 #define OP_TYPE_ASYM		1
 
-static __rte_always_inline int __rte_hot
+static __rte_always_inline void *__rte_hot
 otx_cpt_enq_single(struct cpt_instance *inst,
 		   struct rte_crypto_op *op,
 		   struct pending_queue *pqueue,
@@ -631,7 +635,8 @@ otx_cpt_enq_single(struct cpt_instance *inst,
 	}
 
 	/* Should not reach here */
-	return -ENOTSUP;
+	rte_errno = ENOTSUP;
+	return NULL;
 }
 
 static  __rte_always_inline uint16_t __rte_hot
@@ -640,7 +645,7 @@ otx_cpt_pkt_enqueue(void *qptr, struct rte_crypto_op **ops, uint16_t nb_ops,
 {
 	struct cpt_instance *instance = (struct cpt_instance *)qptr;
 	uint16_t count;
-	int ret;
+	void *req;
 	struct cpt_vf *cptvf = (struct cpt_vf *)instance;
 	struct pending_queue *pqueue = &cptvf->pqueue;
 
@@ -652,10 +657,15 @@ otx_cpt_pkt_enqueue(void *qptr, struct rte_crypto_op **ops, uint16_t nb_ops,
 	while (likely(count < nb_ops)) {
 
 		/* Enqueue single op */
-		ret = otx_cpt_enq_single(instance, ops[count], pqueue, op_type);
+		req = otx_cpt_enq_single(instance, ops[count], pqueue, op_type);
 
-		if (unlikely(ret))
+		if (unlikely(!req))
 			break;
+
+		pqueue->req_queue[pqueue->enq_tail] = (uintptr_t)req;
+		/* We will use soft queue length here to limit requests */
+		MOD_INC(pqueue->enq_tail, DEFAULT_CMD_QLEN);
+		pqueue->pending_count += 1;
 		count++;
 	}
 	otx_cpt_ring_dbell(instance, count);
@@ -674,6 +684,83 @@ otx_cpt_enqueue_sym(void *qptr, struct rte_crypto_op **ops, uint16_t nb_ops)
 	return otx_cpt_pkt_enqueue(qptr, ops, nb_ops, OP_TYPE_SYM);
 }
 
+static __rte_always_inline void
+submit_request_to_sso(struct ssows *ws, struct cpt_request_info *req,
+		      struct rte_event *rsp_info)
+{
+	uint64_t add_work;
+
+	add_work = rsp_info->flow_id | (RTE_EVENT_TYPE_CRYPTODEV << 28) |
+		   ((uint64_t)(rsp_info->sched_type) << 32);
+
+	if (!rsp_info->sched_type)
+		ssows_head_wait(ws);
+
+	rte_atomic_thread_fence(__ATOMIC_RELEASE);
+	ssovf_store_pair(add_work, (uint64_t)req, ws->grps[rsp_info->queue_id]);
+}
+
+static inline union rte_event_crypto_metadata *
+get_event_crypto_mdata(struct rte_crypto_op *op)
+{
+	union rte_event_crypto_metadata *ec_mdata;
+
+	if (unlikely(!op))
+		return NULL;
+
+	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 *)
+			((uint8_t *)op + op->private_data_offset);
+	else
+		return NULL;
+
+	return ec_mdata;
+}
+
+uint16_t __rte_hot
+otx_crypto_adapter_enqueue(void *port, struct rte_crypto_op *op)
+{
+	union rte_event_crypto_metadata *ec_mdata;
+	struct cpt_instance *instance;
+	struct cpt_request_info *req;
+	struct rte_event *rsp_info;
+	uint8_t op_type, cdev_id;
+	uint16_t qp_id;
+
+	ec_mdata = get_event_crypto_mdata(op);
+	if (unlikely(!ec_mdata)) {
+		rte_errno = EINVAL;
+		return 0;
+	}
+
+	cdev_id = ec_mdata->request_info.cdev_id;
+	qp_id = ec_mdata->request_info.queue_pair_id;
+	rsp_info = &ec_mdata->response_info;
+	instance = rte_cryptodevs[cdev_id].data->queue_pairs[qp_id];
+
+	if (unlikely(!instance->ca_enabled)) {
+		rte_errno = EINVAL;
+		return 0;
+	}
+
+	op_type = op->type == RTE_CRYPTO_OP_TYPE_SYMMETRIC ? OP_TYPE_SYM :
+							     OP_TYPE_ASYM;
+	req = otx_cpt_enq_single(instance, op,
+				 &((struct cpt_vf *)instance)->pqueue, op_type);
+	if (unlikely(!req))
+		return 0;
+
+	otx_cpt_ring_dbell(instance, 1);
+	req->qp = instance;
+	submit_request_to_sso(port, req, rsp_info);
+
+	return 1;
+}
+
 static inline void
 otx_cpt_asym_rsa_op(struct rte_crypto_op *cop, struct cpt_request_info *req,
 		    struct rte_crypto_rsa_xform *rsa_ctx)
@@ -820,6 +907,50 @@ otx_cpt_dequeue_post_process(struct rte_crypto_op *cop, uintptr_t *rsp,
 	return;
 }
 
+static inline void
+free_sym_session_data(const struct cpt_instance *instance,
+		      struct rte_crypto_op *cop)
+{
+	void *sess_private_data_t = get_sym_session_private_data(
+		cop->sym->session, otx_cryptodev_driver_id);
+	memset(sess_private_data_t, 0, cpt_get_session_size());
+	memset(cop->sym->session, 0,
+	       rte_cryptodev_sym_get_existing_header_session_size(
+		       cop->sym->session));
+	rte_mempool_put(instance->sess_mp_priv, sess_private_data_t);
+	rte_mempool_put(instance->sess_mp, cop->sym->session);
+	cop->sym->session = NULL;
+}
+
+static __rte_always_inline struct rte_crypto_op *
+otx_cpt_process_response(const struct cpt_instance *instance, uintptr_t *rsp,
+			 uint8_t cc, const uint8_t op_type)
+{
+	struct rte_crypto_op *cop;
+	void *metabuf;
+
+	metabuf = (void *)rsp[0];
+	cop = (void *)rsp[1];
+
+	/* Check completion code */
+	if (likely(cc == 0)) {
+		/* H/w success pkt. Post process */
+		otx_cpt_dequeue_post_process(cop, rsp, op_type);
+	} else if (cc == ERR_GC_ICV_MISCOMPARE) {
+		/* auth data mismatch */
+		cop->status = RTE_CRYPTO_OP_STATUS_AUTH_FAILED;
+	} else {
+		/* Error */
+		cop->status = RTE_CRYPTO_OP_STATUS_ERROR;
+	}
+
+	if (unlikely(cop->sess_type == RTE_CRYPTO_OP_SESSIONLESS))
+		free_sym_session_data(instance, cop);
+	free_op_meta(metabuf, instance->meta_info.pool);
+
+	return cop;
+}
+
 static __rte_always_inline uint16_t __rte_hot
 otx_cpt_pkt_dequeue(void *qptr, struct rte_crypto_op **ops, uint16_t nb_ops,
 		    const uint8_t op_type)
@@ -832,9 +963,6 @@ otx_cpt_pkt_dequeue(void *qptr, struct rte_crypto_op **ops, uint16_t nb_ops,
 	uint8_t ret;
 	int nb_completed;
 	struct pending_queue *pqueue = &cptvf->pqueue;
-	struct rte_crypto_op *cop;
-	void *metabuf;
-	uintptr_t *rsp;
 
 	pcount = pqueue->pending_count;
 	count = (nb_ops > pcount) ? pcount : nb_ops;
@@ -869,45 +997,11 @@ otx_cpt_pkt_dequeue(void *qptr, struct rte_crypto_op **ops, uint16_t nb_ops,
 	nb_completed = i;
 
 	for (i = 0; i < nb_completed; i++) {
-
-		rsp = (void *)ops[i];
-
 		if (likely((i + 1) < nb_completed))
 			rte_prefetch0(ops[i+1]);
 
-		metabuf = (void *)rsp[0];
-		cop = (void *)rsp[1];
-
-		ops[i] = cop;
-
-		/* Check completion code */
-
-		if (likely(cc[i] == 0)) {
-			/* H/w success pkt. Post process */
-			otx_cpt_dequeue_post_process(cop, rsp, op_type);
-		} else if (cc[i] == ERR_GC_ICV_MISCOMPARE) {
-			/* auth data mismatch */
-			cop->status = RTE_CRYPTO_OP_STATUS_AUTH_FAILED;
-		} else {
-			/* Error */
-			cop->status = RTE_CRYPTO_OP_STATUS_ERROR;
-		}
-
-		if (unlikely(cop->sess_type == RTE_CRYPTO_OP_SESSIONLESS)) {
-			void *sess_private_data_t =
-				get_sym_session_private_data(cop->sym->session,
-						otx_cryptodev_driver_id);
-			memset(sess_private_data_t, 0,
-					cpt_get_session_size());
-			memset(cop->sym->session, 0,
-			rte_cryptodev_sym_get_existing_header_session_size(
-					cop->sym->session));
-			rte_mempool_put(instance->sess_mp_priv,
-					sess_private_data_t);
-			rte_mempool_put(instance->sess_mp, cop->sym->session);
-			cop->sym->session = NULL;
-		}
-		free_op_meta(metabuf, instance->meta_info.pool);
+		ops[i] = otx_cpt_process_response(instance, (void *)ops[i],
+						  cc[i], op_type);
 	}
 
 	return nb_completed;
@@ -925,6 +1019,32 @@ otx_cpt_dequeue_sym(void *qptr, struct rte_crypto_op **ops, uint16_t nb_ops)
 	return otx_cpt_pkt_dequeue(qptr, ops, nb_ops, OP_TYPE_SYM);
 }
 
+uint64_t __rte_hot
+otx_crypto_adapter_dequeue(uint64_t get_work1)
+{
+	const struct cpt_instance *instance;
+	struct cpt_request_info *req;
+	struct rte_crypto_op *cop;
+	uint8_t cc, op_type;
+	uintptr_t *rsp;
+
+	req = (struct cpt_request_info *)(get_work1);
+	instance = req->qp;
+	rsp = req->op;
+	cop = (void *)rsp[1];
+	op_type = cop->type == RTE_CRYPTO_OP_TYPE_SYMMETRIC ? OP_TYPE_SYM :
+							      OP_TYPE_ASYM;
+
+	do {
+		cc = check_nb_command_id(
+			req, (struct cpt_instance *)(uintptr_t)instance);
+	} while (cc == ERR_REQ_PENDING);
+
+	cop = otx_cpt_process_response(instance, (void *)req->op, cc, op_type);
+
+	return (uint64_t)(cop);
+}
+
 static struct rte_cryptodev_ops cptvf_ops = {
 	/* Device related operations */
 	.dev_configure = otx_cpt_dev_config,
diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.h b/drivers/crypto/octeontx/otx_cryptodev_ops.h
index fac8a3c006..46f474c1ba 100644
--- a/drivers/crypto/octeontx/otx_cryptodev_ops.h
+++ b/drivers/crypto/octeontx/otx_cryptodev_ops.h
@@ -14,4 +14,11 @@
 int
 otx_cpt_dev_create(struct rte_cryptodev *c_dev);
 
+__rte_internal
+uint16_t __rte_hot
+otx_crypto_adapter_enqueue(void *port, struct rte_crypto_op *op);
+__rte_internal
+uint64_t __rte_hot
+otx_crypto_adapter_dequeue(uint64_t get_work1);
+
 #endif /* _OTX_CRYPTODEV_OPS_H_ */
diff --git a/drivers/crypto/octeontx/version.map b/drivers/crypto/octeontx/version.map
index 4a76d1d52d..41f33a4ecf 100644
--- a/drivers/crypto/octeontx/version.map
+++ b/drivers/crypto/octeontx/version.map
@@ -1,3 +1,12 @@
 DPDK_21 {
 	local: *;
 };
+
+INTERNAL {
+	global:
+
+	otx_crypto_adapter_enqueue;
+	otx_crypto_adapter_dequeue;
+
+	local: *;
+};
diff --git a/drivers/event/octeontx/ssovf_evdev.c b/drivers/event/octeontx/ssovf_evdev.c
index 25bf207db6..b93f6ec8c6 100644
--- a/drivers/event/octeontx/ssovf_evdev.c
+++ b/drivers/event/octeontx/ssovf_evdev.c
@@ -734,7 +734,8 @@ ssovf_crypto_adapter_caps_get(const struct rte_eventdev *dev,
 	RTE_SET_USED(dev);
 	RTE_SET_USED(cdev);
 
-	*caps = 0;
+	*caps = RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD |
+		RTE_EVENT_CRYPTO_ADAPTER_CAP_SESSION_PRIVATE_DATA;
 
 	return 0;
 }
diff --git a/drivers/event/octeontx/ssovf_worker.c b/drivers/event/octeontx/ssovf_worker.c
index a9149fb934..8b056ddc5a 100644
--- a/drivers/event/octeontx/ssovf_worker.c
+++ b/drivers/event/octeontx/ssovf_worker.c
@@ -322,6 +322,15 @@ sso_event_tx_adapter_enqueue_ ## name(void *port, struct rte_event ev[],     \
 SSO_TX_ADPTR_ENQ_FASTPATH_FUNC
 #undef T
 
+static uint16_t __rte_hot
+ssow_crypto_adapter_enqueue(void *port, struct rte_event ev[],
+			    uint16_t nb_events)
+{
+	RTE_SET_USED(nb_events);
+
+	return otx_crypto_adapter_enqueue(port, ev->event_ptr);
+}
+
 void
 ssovf_fastpath_fns_set(struct rte_eventdev *dev)
 {
@@ -332,6 +341,8 @@ ssovf_fastpath_fns_set(struct rte_eventdev *dev)
 	dev->enqueue_new_burst = ssows_enq_new_burst;
 	dev->enqueue_forward_burst = ssows_enq_fwd_burst;
 
+	dev->ca_enqueue = ssow_crypto_adapter_enqueue;
+
 	const event_tx_adapter_enqueue ssow_txa_enqueue[2][2][2][2] = {
 #define T(name, f3, f2, f1, f0, sz, flags)				\
 	[f3][f2][f1][f0] =  sso_event_tx_adapter_enqueue_ ##name,
diff --git a/drivers/event/octeontx/ssovf_worker.h b/drivers/event/octeontx/ssovf_worker.h
index 4354f007d7..29b5f48761 100644
--- a/drivers/event/octeontx/ssovf_worker.h
+++ b/drivers/event/octeontx/ssovf_worker.h
@@ -4,6 +4,9 @@
 
 #include <arpa/inet.h>
 
+#ifndef _SSOVF_WORKER_H_
+#define _SSOVF_WORKER_H_
+
 #include <rte_common.h>
 #include <rte_branch_prediction.h>
 
@@ -11,6 +14,7 @@
 
 #include "ssovf_evdev.h"
 #include "octeontx_rxtx.h"
+#include "otx_cryptodev_ops.h"
 
 /* Alignment */
 #define OCCTX_ALIGN  128
@@ -174,14 +178,17 @@ ssows_get_work(struct ssows *ws, struct rte_event *ev, const uint16_t flag)
 	sched_type_queue = sched_type_queue << 38;
 	ev->event = sched_type_queue | (get_work0 & 0xffffffff);
 
-	if (get_work1 && ev->event_type == RTE_EVENT_TYPE_ETHDEV) {
-		ev->mbuf = ssovf_octeontx_wqe_to_pkt(get_work1,
-				(ev->event >> 20) & 0x7F, flag, ws->lookup_mem);
+	if (get_work1) {
+		if (ev->event_type == RTE_EVENT_TYPE_ETHDEV)
+			get_work1 = (uint64_t)ssovf_octeontx_wqe_to_pkt(
+				get_work1, (ev->event >> 20) & 0x7F, flag,
+				ws->lookup_mem);
+		else if (ev->event_type == RTE_EVENT_TYPE_CRYPTODEV)
+			get_work1 = otx_crypto_adapter_dequeue(get_work1);
+		ev->u64 = get_work1;
 	} else if (unlikely((get_work0 & 0xFFFFFFFF) == 0xFFFFFFFF)) {
 		ssovf_octeontx_wqe_free(get_work1);
 		return 0;
-	} else {
-		ev->u64 = get_work1;
 	}
 
 	return !!get_work1;
@@ -254,3 +261,11 @@ ssows_swtag_wait(struct ssows *ws)
 	while (ssovf_read64(ws->base + SSOW_VHWS_SWTP))
 	;
 }
+
+static __rte_always_inline void
+ssows_head_wait(struct ssows *ws)
+{
+	while (!(ssovf_read64(ws->base + SSOW_VHWS_TAG) & (1UL << 35)))
+		;
+}
+#endif /* _SSOVF_WORKER_H_ */
diff --git a/drivers/event/octeontx2/otx2_evdev_crypto_adptr_rx.h b/drivers/event/octeontx2/otx2_evdev_crypto_adptr_rx.h
index 9e331fdd75..a543225376 100644
--- a/drivers/event/octeontx2/otx2_evdev_crypto_adptr_rx.h
+++ b/drivers/event/octeontx2/otx2_evdev_crypto_adptr_rx.h
@@ -54,6 +54,7 @@ static inline uint64_t
 otx2_handle_crypto_event(uint64_t get_work1)
 {
 	struct cpt_request_info *req;
+	const struct otx2_cpt_qp *qp;
 	struct rte_crypto_op *cop;
 	uintptr_t *rsp;
 	void *metabuf;
@@ -61,14 +62,15 @@ otx2_handle_crypto_event(uint64_t get_work1)
 
 	req = (struct cpt_request_info *)(get_work1);
 	cc = otx2_cpt_compcode_get(req);
+	qp = req->qp;
 
 	rsp = req->op;
 	metabuf = (void *)rsp[0];
 	cop = (void *)rsp[1];
 
-	otx2_ca_deq_post_process(req->qp, cop, rsp, cc);
+	otx2_ca_deq_post_process(qp, cop, rsp, cc);
 
-	rte_mempool_put(req->qp->meta_info.pool, metabuf);
+	rte_mempool_put(qp->meta_info.pool, metabuf);
 
 	return (uint64_t)(cop);
 }
-- 
2.25.1


^ permalink raw reply	[flat|nested] 24+ messages in thread

* [dpdk-dev] [PATCH v2 0/2] OCTEONTX crypto adapter support
  2021-06-22 16:48 [dpdk-dev] [PATCH 0/2] OCTEONTX crypto adapter support Shijith Thotton
  2021-06-22 16:48 ` [dpdk-dev] [PATCH 1/2] drivers: add octeontx crypto adapter framework Shijith Thotton
  2021-06-22 16:48 ` [dpdk-dev] [PATCH 2/2] drivers: add octeontx crypto adapter data path Shijith Thotton
@ 2021-06-23 20:53 ` Shijith Thotton
  2021-06-23 20:53   ` [dpdk-dev] [PATCH v2 1/2] drivers: add octeontx crypto adapter framework Shijith Thotton
                     ` (2 more replies)
  2 siblings, 3 replies; 24+ messages in thread
From: Shijith Thotton @ 2021-06-23 20:53 UTC (permalink / raw)
  To: dev
  Cc: Shijith Thotton, pbhagavatula, anoobj, jerinj, abhinandan.gujjar,
	adwivedi, gakhil

Below patches add crypto adapter OP_FORWARD support for OCTEON TX PMD.

v1:
- Build fixes for 32-bit arch.

Shijith Thotton (2):
  drivers: add octeontx crypto adapter framework
  drivers: add octeontx crypto adapter data path

 doc/guides/rel_notes/release_21_08.rst        |   4 +
 drivers/common/cpt/cpt_common.h               |   2 +-
 drivers/crypto/octeontx/meson.build           |   6 +
 drivers/crypto/octeontx/otx_cryptodev.c       |   4 +
 drivers/crypto/octeontx/otx_cryptodev.h       |   4 -
 .../crypto/octeontx/otx_cryptodev_hw_access.h |   1 +
 drivers/crypto/octeontx/otx_cryptodev_ops.c   | 268 +++++++++++++-----
 drivers/crypto/octeontx/otx_cryptodev_ops.h   |   8 +
 drivers/crypto/octeontx/version.map           |   9 +
 drivers/event/octeontx/meson.build            |   1 +
 drivers/event/octeontx/ssovf_evdev.c          |  68 +++++
 drivers/event/octeontx/ssovf_worker.c         |  11 +
 drivers/event/octeontx/ssovf_worker.h         |  25 +-
 .../octeontx2/otx2_evdev_crypto_adptr_rx.h    |   6 +-
 14 files changed, 328 insertions(+), 89 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 24+ messages in thread

* [dpdk-dev] [PATCH v2 1/2] drivers: add octeontx crypto adapter framework
  2021-06-23 20:53 ` [dpdk-dev] [PATCH v2 0/2] OCTEONTX crypto adapter support Shijith Thotton
@ 2021-06-23 20:53   ` Shijith Thotton
  2021-07-06 20:14     ` Akhil Goyal
  2021-07-15 14:21     ` David Marchand
  2021-06-23 20:53   ` [dpdk-dev] [PATCH v2 2/2] drivers: add octeontx crypto adapter data path Shijith Thotton
  2021-07-07  9:28   ` [dpdk-dev] [PATCH v2 0/2] OCTEONTX crypto adapter support Akhil Goyal
  2 siblings, 2 replies; 24+ messages in thread
From: Shijith Thotton @ 2021-06-23 20:53 UTC (permalink / raw)
  To: dev
  Cc: Shijith Thotton, pbhagavatula, anoobj, jerinj, abhinandan.gujjar,
	adwivedi, gakhil

Set crypto adapter event device slow-path call backs.

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
---
 drivers/crypto/octeontx/meson.build           |  1 +
 drivers/crypto/octeontx/otx_cryptodev.c       |  4 ++
 drivers/crypto/octeontx/otx_cryptodev.h       |  4 --
 .../crypto/octeontx/otx_cryptodev_hw_access.h |  1 +
 drivers/event/octeontx/meson.build            |  1 +
 drivers/event/octeontx/ssovf_evdev.c          | 67 +++++++++++++++++++
 6 files changed, 74 insertions(+), 4 deletions(-)

diff --git a/drivers/crypto/octeontx/meson.build b/drivers/crypto/octeontx/meson.build
index daef47a72f..37603c5c89 100644
--- a/drivers/crypto/octeontx/meson.build
+++ b/drivers/crypto/octeontx/meson.build
@@ -7,6 +7,7 @@ endif
 
 deps += ['bus_pci']
 deps += ['common_cpt']
+deps += ['eventdev']
 
 sources = files(
         'otx_cryptodev.c',
diff --git a/drivers/crypto/octeontx/otx_cryptodev.c b/drivers/crypto/octeontx/otx_cryptodev.c
index ba73c2f939..7207909abb 100644
--- a/drivers/crypto/octeontx/otx_cryptodev.c
+++ b/drivers/crypto/octeontx/otx_cryptodev.c
@@ -14,6 +14,10 @@
 
 #include "cpt_pmd_logs.h"
 
+/* Device ID */
+#define PCI_VENDOR_ID_CAVIUM		0x177d
+#define CPT_81XX_PCI_VF_DEVICE_ID	0xa041
+
 uint8_t otx_cryptodev_driver_id;
 
 static struct rte_pci_id pci_id_cpt_table[] = {
diff --git a/drivers/crypto/octeontx/otx_cryptodev.h b/drivers/crypto/octeontx/otx_cryptodev.h
index b66ef4a8f7..5d8607eafb 100644
--- a/drivers/crypto/octeontx/otx_cryptodev.h
+++ b/drivers/crypto/octeontx/otx_cryptodev.h
@@ -8,10 +8,6 @@
 /* Cavium OCTEON TX crypto PMD device name */
 #define CRYPTODEV_NAME_OCTEONTX_PMD	crypto_octeontx
 
-/* Device ID */
-#define PCI_VENDOR_ID_CAVIUM		0x177d
-#define CPT_81XX_PCI_VF_DEVICE_ID	0xa041
-
 #define CPT_LOGTYPE otx_cpt_logtype
 
 extern int otx_cpt_logtype;
diff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h
index 0ec258157a..f7b1e93402 100644
--- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h
+++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h
@@ -45,6 +45,7 @@ struct cpt_instance {
 	struct rte_mempool *sess_mp;
 	struct rte_mempool *sess_mp_priv;
 	struct cpt_qp_meta_info meta_info;
+	uint8_t ca_enabled;
 };
 
 struct command_chunk {
diff --git a/drivers/event/octeontx/meson.build b/drivers/event/octeontx/meson.build
index 3cb140b4de..0d9eec3f2e 100644
--- a/drivers/event/octeontx/meson.build
+++ b/drivers/event/octeontx/meson.build
@@ -12,3 +12,4 @@ sources = files(
 )
 
 deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev', 'net_octeontx']
+deps += ['crypto_octeontx']
diff --git a/drivers/event/octeontx/ssovf_evdev.c b/drivers/event/octeontx/ssovf_evdev.c
index d8b359801a..25bf207db6 100644
--- a/drivers/event/octeontx/ssovf_evdev.c
+++ b/drivers/event/octeontx/ssovf_evdev.c
@@ -5,6 +5,7 @@
 #include <inttypes.h>
 
 #include <rte_common.h>
+#include <rte_cryptodev.h>
 #include <rte_debug.h>
 #include <rte_dev.h>
 #include <rte_eal.h>
@@ -19,6 +20,7 @@
 
 #include "ssovf_evdev.h"
 #include "timvf_evdev.h"
+#include "otx_cryptodev_hw_access.h"
 
 static uint8_t timvf_enable_stats;
 
@@ -725,6 +727,67 @@ ssovf_timvf_caps_get(const struct rte_eventdev *dev, uint64_t flags,
 			timvf_enable_stats);
 }
 
+static int
+ssovf_crypto_adapter_caps_get(const struct rte_eventdev *dev,
+			      const struct rte_cryptodev *cdev, uint32_t *caps)
+{
+	RTE_SET_USED(dev);
+	RTE_SET_USED(cdev);
+
+	*caps = 0;
+
+	return 0;
+}
+
+static int
+ssovf_crypto_adapter_qp_add(const struct rte_eventdev *dev,
+			    const struct rte_cryptodev *cdev,
+			    int32_t queue_pair_id,
+			    const struct rte_event *event)
+{
+	struct cpt_instance *qp;
+	uint8_t qp_id;
+
+	RTE_SET_USED(event);
+
+	if (queue_pair_id == -1) {
+		for (qp_id = 0; qp_id < cdev->data->nb_queue_pairs; qp_id++) {
+			qp = cdev->data->queue_pairs[qp_id];
+			qp->ca_enabled = 1;
+		}
+	} else {
+		qp = cdev->data->queue_pairs[queue_pair_id];
+		qp->ca_enabled = 1;
+	}
+
+	ssovf_fastpath_fns_set((struct rte_eventdev *)(uintptr_t)dev);
+
+	return 0;
+}
+
+static int
+ssovf_crypto_adapter_qp_del(const struct rte_eventdev *dev,
+			    const struct rte_cryptodev *cdev,
+			    int32_t queue_pair_id)
+{
+	struct cpt_instance *qp;
+	uint8_t qp_id;
+
+	RTE_SET_USED(dev);
+
+	if (queue_pair_id == -1) {
+		for (qp_id = 0; qp_id < cdev->data->nb_queue_pairs; qp_id++) {
+			qp = cdev->data->queue_pairs[qp_id];
+			qp->ca_enabled = 0;
+		}
+	} else {
+		qp = cdev->data->queue_pairs[queue_pair_id];
+		qp->ca_enabled = 0;
+	}
+
+	return 0;
+}
+
 /* Initialize and register event driver with DPDK Application */
 static struct rte_eventdev_ops ssovf_ops = {
 	.dev_infos_get    = ssovf_info_get,
@@ -755,6 +818,10 @@ static struct rte_eventdev_ops ssovf_ops = {
 
 	.timer_adapter_caps_get = ssovf_timvf_caps_get,
 
+	.crypto_adapter_caps_get = ssovf_crypto_adapter_caps_get,
+	.crypto_adapter_queue_pair_add = ssovf_crypto_adapter_qp_add,
+	.crypto_adapter_queue_pair_del = ssovf_crypto_adapter_qp_del,
+
 	.dev_selftest = test_eventdev_octeontx,
 
 	.dump             = ssovf_dump,
-- 
2.25.1


^ permalink raw reply	[flat|nested] 24+ messages in thread

* [dpdk-dev] [PATCH v2 2/2] drivers: add octeontx crypto adapter data path
  2021-06-23 20:53 ` [dpdk-dev] [PATCH v2 0/2] OCTEONTX crypto adapter support Shijith Thotton
  2021-06-23 20:53   ` [dpdk-dev] [PATCH v2 1/2] drivers: add octeontx crypto adapter framework Shijith Thotton
@ 2021-06-23 20:53   ` Shijith Thotton
  2021-06-30  8:54     ` Akhil Goyal
  2021-07-07  9:28   ` [dpdk-dev] [PATCH v2 0/2] OCTEONTX crypto adapter support Akhil Goyal
  2 siblings, 1 reply; 24+ messages in thread
From: Shijith Thotton @ 2021-06-23 20:53 UTC (permalink / raw)
  To: dev
  Cc: Shijith Thotton, pbhagavatula, anoobj, jerinj, abhinandan.gujjar,
	adwivedi, gakhil

Added support for crypto adapter OP_FORWARD mode.

As OcteonTx CPT crypto completions could be out of order, each crypto op
is enqueued to CPT, dequeued from CPT and enqueued to SSO one-by-one.

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
---
 doc/guides/rel_notes/release_21_08.rst        |   4 +
 drivers/common/cpt/cpt_common.h               |   2 +-
 drivers/crypto/octeontx/meson.build           |   5 +
 drivers/crypto/octeontx/otx_cryptodev_ops.c   | 268 +++++++++++++-----
 drivers/crypto/octeontx/otx_cryptodev_ops.h   |   8 +
 drivers/crypto/octeontx/version.map           |   9 +
 drivers/event/octeontx/ssovf_evdev.c          |   3 +-
 drivers/event/octeontx/ssovf_worker.c         |  11 +
 drivers/event/octeontx/ssovf_worker.h         |  25 +-
 .../octeontx2/otx2_evdev_crypto_adptr_rx.h    |   6 +-
 10 files changed, 255 insertions(+), 86 deletions(-)

diff --git a/doc/guides/rel_notes/release_21_08.rst b/doc/guides/rel_notes/release_21_08.rst
index a6ecfdf3ce..70a91cc654 100644
--- a/doc/guides/rel_notes/release_21_08.rst
+++ b/doc/guides/rel_notes/release_21_08.rst
@@ -55,6 +55,10 @@ New Features
      Also, make sure to start the actual text at the margin.
      =======================================================
 
+* **Updated Marvell OCTEON TX PMD.**
+
+  Added support for crypto adapter OP_FORWARD mode.
+
 
 Removed Items
 -------------
diff --git a/drivers/common/cpt/cpt_common.h b/drivers/common/cpt/cpt_common.h
index 7fea0ca879..724e5ec736 100644
--- a/drivers/common/cpt/cpt_common.h
+++ b/drivers/common/cpt/cpt_common.h
@@ -54,7 +54,7 @@ struct cpt_request_info {
 		uint64_t ei2;
 	} ist;
 	uint8_t *rptr;
-	const struct otx2_cpt_qp *qp;
+	const void *qp;
 
 	/** Control path fields */
 	uint64_t time_out;
diff --git a/drivers/crypto/octeontx/meson.build b/drivers/crypto/octeontx/meson.build
index 37603c5c89..3ae6729e8f 100644
--- a/drivers/crypto/octeontx/meson.build
+++ b/drivers/crypto/octeontx/meson.build
@@ -6,6 +6,7 @@ if not is_linux
 endif
 
 deps += ['bus_pci']
+deps += ['bus_vdev']
 deps += ['common_cpt']
 deps += ['eventdev']
 
@@ -18,3 +19,7 @@ sources = files(
 )
 
 includes += include_directories('../../common/cpt')
+includes += include_directories('../../common/octeontx')
+includes += include_directories('../../event/octeontx')
+includes += include_directories('../../mempool/octeontx')
+includes += include_directories('../../net/octeontx')
diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.c b/drivers/crypto/octeontx/otx_cryptodev_ops.c
index d75f4b5f81..2fe04ebdd6 100644
--- a/drivers/crypto/octeontx/otx_cryptodev_ops.c
+++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c
@@ -6,6 +6,8 @@
 #include <rte_bus_pci.h>
 #include <rte_cryptodev.h>
 #include <rte_cryptodev_pmd.h>
+#include <rte_eventdev.h>
+#include <rte_event_crypto_adapter.h>
 #include <rte_errno.h>
 #include <rte_malloc.h>
 #include <rte_mempool.h>
@@ -21,6 +23,8 @@
 #include "cpt_ucode.h"
 #include "cpt_ucode_asym.h"
 
+#include "ssovf_worker.h"
+
 static uint64_t otx_fpm_iova[CPT_EC_ID_PMAX];
 
 /* Forward declarations */
@@ -412,15 +416,17 @@ otx_cpt_asym_session_clear(struct rte_cryptodev *dev,
 	rte_mempool_put(sess_mp, priv);
 }
 
-static __rte_always_inline int32_t __rte_hot
+static __rte_always_inline void * __rte_hot
 otx_cpt_request_enqueue(struct cpt_instance *instance,
 			struct pending_queue *pqueue,
 			void *req, uint64_t cpt_inst_w7)
 {
 	struct cpt_request_info *user_req = (struct cpt_request_info *)req;
 
-	if (unlikely(pqueue->pending_count >= DEFAULT_CMD_QLEN))
-		return -EAGAIN;
+	if (unlikely(pqueue->pending_count >= DEFAULT_CMD_QLEN)) {
+		rte_errno = EAGAIN;
+		return NULL;
+	}
 
 	fill_cpt_inst(instance, req, cpt_inst_w7);
 
@@ -434,18 +440,12 @@ otx_cpt_request_enqueue(struct cpt_instance *instance,
 	/* Default mode of software queue */
 	mark_cpt_inst(instance);
 
-	pqueue->req_queue[pqueue->enq_tail] = (uintptr_t)user_req;
-
-	/* We will use soft queue length here to limit requests */
-	MOD_INC(pqueue->enq_tail, DEFAULT_CMD_QLEN);
-	pqueue->pending_count += 1;
-
 	CPT_LOG_DP_DEBUG("Submitted NB cmd with request: %p "
 			 "op: %p", user_req, user_req->op);
-	return 0;
+	return req;
 }
 
-static __rte_always_inline int __rte_hot
+static __rte_always_inline void * __rte_hot
 otx_cpt_enq_single_asym(struct cpt_instance *instance,
 			struct rte_crypto_op *op,
 			struct pending_queue *pqueue)
@@ -456,11 +456,13 @@ otx_cpt_enq_single_asym(struct cpt_instance *instance,
 	struct cpt_asym_sess_misc *sess;
 	uintptr_t *cop;
 	void *mdata;
+	void *req;
 	int ret;
 
 	if (unlikely(rte_mempool_get(minfo->pool, &mdata) < 0)) {
 		CPT_LOG_DP_ERR("Could not allocate meta buffer for request");
-		return -ENOMEM;
+		rte_errno = ENOMEM;
+		return NULL;
 	}
 
 	sess = get_asym_session_private_data(asym_op->session,
@@ -506,27 +508,26 @@ otx_cpt_enq_single_asym(struct cpt_instance *instance,
 
 	default:
 		op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
-		ret = -EINVAL;
+		rte_errno = EINVAL;
 		goto req_fail;
 	}
 
-	ret = otx_cpt_request_enqueue(instance, pqueue, params.req,
+	req = otx_cpt_request_enqueue(instance, pqueue, params.req,
 				      sess->cpt_inst_w7);
-
-	if (unlikely(ret)) {
+	if (unlikely(req == NULL)) {
 		CPT_LOG_DP_ERR("Could not enqueue crypto req");
 		goto req_fail;
 	}
 
-	return 0;
+	return req;
 
 req_fail:
 	free_op_meta(mdata, minfo->pool);
 
-	return ret;
+	return NULL;
 }
 
-static __rte_always_inline int __rte_hot
+static __rte_always_inline void * __rte_hot
 otx_cpt_enq_single_sym(struct cpt_instance *instance,
 		       struct rte_crypto_op *op,
 		       struct pending_queue *pqueue)
@@ -536,6 +537,7 @@ otx_cpt_enq_single_sym(struct cpt_instance *instance,
 	struct cpt_request_info *prep_req;
 	void *mdata = NULL;
 	int ret = 0;
+	void *req;
 	uint64_t cpt_op;
 
 	sess = (struct cpt_sess_misc *)
@@ -554,23 +556,20 @@ otx_cpt_enq_single_sym(struct cpt_instance *instance,
 	if (unlikely(ret)) {
 		CPT_LOG_DP_ERR("prep cryto req : op %p, cpt_op 0x%x "
 			       "ret 0x%x", op, (unsigned int)cpt_op, ret);
-		return ret;
+		return NULL;
 	}
 
 	/* Enqueue prepared instruction to h/w */
-	ret = otx_cpt_request_enqueue(instance, pqueue, prep_req,
+	req = otx_cpt_request_enqueue(instance, pqueue, prep_req,
 				      sess->cpt_inst_w7);
-
-	if (unlikely(ret)) {
+	if (unlikely(req == NULL))
 		/* Buffer allocated for request preparation need to be freed */
 		free_op_meta(mdata, instance->meta_info.pool);
-		return ret;
-	}
 
-	return 0;
+	return req;
 }
 
-static __rte_always_inline int __rte_hot
+static __rte_always_inline void * __rte_hot
 otx_cpt_enq_single_sym_sessless(struct cpt_instance *instance,
 				struct rte_crypto_op *op,
 				struct pending_queue *pend_q)
@@ -578,12 +577,15 @@ otx_cpt_enq_single_sym_sessless(struct cpt_instance *instance,
 	const int driver_id = otx_cryptodev_driver_id;
 	struct rte_crypto_sym_op *sym_op = op->sym;
 	struct rte_cryptodev_sym_session *sess;
+	void *req;
 	int ret;
 
 	/* Create temporary session */
 	sess = rte_cryptodev_sym_session_create(instance->sess_mp);
-	if (sess == NULL)
-		return -ENOMEM;
+	if (sess == NULL) {
+		rte_errno = ENOMEM;
+		return NULL;
+	}
 
 	ret = sym_session_configure(driver_id, sym_op->xform, sess,
 				    instance->sess_mp_priv);
@@ -592,24 +594,24 @@ otx_cpt_enq_single_sym_sessless(struct cpt_instance *instance,
 
 	sym_op->session = sess;
 
-	ret = otx_cpt_enq_single_sym(instance, op, pend_q);
+	req = otx_cpt_enq_single_sym(instance, op, pend_q);
 
-	if (unlikely(ret))
+	if (unlikely(req == NULL))
 		goto priv_put;
 
-	return 0;
+	return req;
 
 priv_put:
 	sym_session_clear(driver_id, sess);
 sess_put:
 	rte_mempool_put(instance->sess_mp, sess);
-	return ret;
+	return NULL;
 }
 
 #define OP_TYPE_SYM		0
 #define OP_TYPE_ASYM		1
 
-static __rte_always_inline int __rte_hot
+static __rte_always_inline void *__rte_hot
 otx_cpt_enq_single(struct cpt_instance *inst,
 		   struct rte_crypto_op *op,
 		   struct pending_queue *pqueue,
@@ -631,7 +633,8 @@ otx_cpt_enq_single(struct cpt_instance *inst,
 	}
 
 	/* Should not reach here */
-	return -ENOTSUP;
+	rte_errno = ENOTSUP;
+	return NULL;
 }
 
 static  __rte_always_inline uint16_t __rte_hot
@@ -640,7 +643,7 @@ otx_cpt_pkt_enqueue(void *qptr, struct rte_crypto_op **ops, uint16_t nb_ops,
 {
 	struct cpt_instance *instance = (struct cpt_instance *)qptr;
 	uint16_t count;
-	int ret;
+	void *req;
 	struct cpt_vf *cptvf = (struct cpt_vf *)instance;
 	struct pending_queue *pqueue = &cptvf->pqueue;
 
@@ -652,10 +655,14 @@ otx_cpt_pkt_enqueue(void *qptr, struct rte_crypto_op **ops, uint16_t nb_ops,
 	while (likely(count < nb_ops)) {
 
 		/* Enqueue single op */
-		ret = otx_cpt_enq_single(instance, ops[count], pqueue, op_type);
+		req = otx_cpt_enq_single(instance, ops[count], pqueue, op_type);
 
-		if (unlikely(ret))
+		if (unlikely(req == NULL))
 			break;
+
+		pqueue->req_queue[pqueue->enq_tail] = (uintptr_t)req;
+		MOD_INC(pqueue->enq_tail, DEFAULT_CMD_QLEN);
+		pqueue->pending_count += 1;
 		count++;
 	}
 	otx_cpt_ring_dbell(instance, count);
@@ -674,6 +681,80 @@ otx_cpt_enqueue_sym(void *qptr, struct rte_crypto_op **ops, uint16_t nb_ops)
 	return otx_cpt_pkt_enqueue(qptr, ops, nb_ops, OP_TYPE_SYM);
 }
 
+static __rte_always_inline void
+submit_request_to_sso(struct ssows *ws, uintptr_t req,
+		      struct rte_event *rsp_info)
+{
+	uint64_t add_work;
+
+	add_work = rsp_info->flow_id | (RTE_EVENT_TYPE_CRYPTODEV << 28) |
+		   ((uint64_t)(rsp_info->sched_type) << 32);
+
+	if (!rsp_info->sched_type)
+		ssows_head_wait(ws);
+
+	rte_atomic_thread_fence(__ATOMIC_RELEASE);
+	ssovf_store_pair(add_work, req, ws->grps[rsp_info->queue_id]);
+}
+
+static inline union rte_event_crypto_metadata *
+get_event_crypto_mdata(struct rte_crypto_op *op)
+{
+	union 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 *)
+			((uint8_t *)op + op->private_data_offset);
+	else
+		return NULL;
+
+	return ec_mdata;
+}
+
+uint16_t __rte_hot
+otx_crypto_adapter_enqueue(void *port, struct rte_crypto_op *op)
+{
+	union rte_event_crypto_metadata *ec_mdata;
+	struct cpt_instance *instance;
+	struct cpt_request_info *req;
+	struct rte_event *rsp_info;
+	uint8_t op_type, cdev_id;
+	uint16_t qp_id;
+
+	ec_mdata = get_event_crypto_mdata(op);
+	if (unlikely(ec_mdata == NULL)) {
+		rte_errno = EINVAL;
+		return 0;
+	}
+
+	cdev_id = ec_mdata->request_info.cdev_id;
+	qp_id = ec_mdata->request_info.queue_pair_id;
+	rsp_info = &ec_mdata->response_info;
+	instance = rte_cryptodevs[cdev_id].data->queue_pairs[qp_id];
+
+	if (unlikely(!instance->ca_enabled)) {
+		rte_errno = EINVAL;
+		return 0;
+	}
+
+	op_type = op->type == RTE_CRYPTO_OP_TYPE_SYMMETRIC ? OP_TYPE_SYM :
+							     OP_TYPE_ASYM;
+	req = otx_cpt_enq_single(instance, op,
+				 &((struct cpt_vf *)instance)->pqueue, op_type);
+	if (unlikely(req == NULL))
+		return 0;
+
+	otx_cpt_ring_dbell(instance, 1);
+	req->qp = instance;
+	submit_request_to_sso(port, (uintptr_t)req, rsp_info);
+
+	return 1;
+}
+
 static inline void
 otx_cpt_asym_rsa_op(struct rte_crypto_op *cop, struct cpt_request_info *req,
 		    struct rte_crypto_rsa_xform *rsa_ctx)
@@ -820,6 +901,50 @@ otx_cpt_dequeue_post_process(struct rte_crypto_op *cop, uintptr_t *rsp,
 	return;
 }
 
+static inline void
+free_sym_session_data(const struct cpt_instance *instance,
+		      struct rte_crypto_op *cop)
+{
+	void *sess_private_data_t = get_sym_session_private_data(
+		cop->sym->session, otx_cryptodev_driver_id);
+	memset(sess_private_data_t, 0, cpt_get_session_size());
+	memset(cop->sym->session, 0,
+	       rte_cryptodev_sym_get_existing_header_session_size(
+		       cop->sym->session));
+	rte_mempool_put(instance->sess_mp_priv, sess_private_data_t);
+	rte_mempool_put(instance->sess_mp, cop->sym->session);
+	cop->sym->session = NULL;
+}
+
+static __rte_always_inline struct rte_crypto_op *
+otx_cpt_process_response(const struct cpt_instance *instance, uintptr_t *rsp,
+			 uint8_t cc, const uint8_t op_type)
+{
+	struct rte_crypto_op *cop;
+	void *metabuf;
+
+	metabuf = (void *)rsp[0];
+	cop = (void *)rsp[1];
+
+	/* Check completion code */
+	if (likely(cc == 0)) {
+		/* H/w success pkt. Post process */
+		otx_cpt_dequeue_post_process(cop, rsp, op_type);
+	} else if (cc == ERR_GC_ICV_MISCOMPARE) {
+		/* auth data mismatch */
+		cop->status = RTE_CRYPTO_OP_STATUS_AUTH_FAILED;
+	} else {
+		/* Error */
+		cop->status = RTE_CRYPTO_OP_STATUS_ERROR;
+	}
+
+	if (unlikely(cop->sess_type == RTE_CRYPTO_OP_SESSIONLESS))
+		free_sym_session_data(instance, cop);
+	free_op_meta(metabuf, instance->meta_info.pool);
+
+	return cop;
+}
+
 static __rte_always_inline uint16_t __rte_hot
 otx_cpt_pkt_dequeue(void *qptr, struct rte_crypto_op **ops, uint16_t nb_ops,
 		    const uint8_t op_type)
@@ -832,9 +957,6 @@ otx_cpt_pkt_dequeue(void *qptr, struct rte_crypto_op **ops, uint16_t nb_ops,
 	uint8_t ret;
 	int nb_completed;
 	struct pending_queue *pqueue = &cptvf->pqueue;
-	struct rte_crypto_op *cop;
-	void *metabuf;
-	uintptr_t *rsp;
 
 	pcount = pqueue->pending_count;
 	count = (nb_ops > pcount) ? pcount : nb_ops;
@@ -869,45 +991,11 @@ otx_cpt_pkt_dequeue(void *qptr, struct rte_crypto_op **ops, uint16_t nb_ops,
 	nb_completed = i;
 
 	for (i = 0; i < nb_completed; i++) {
-
-		rsp = (void *)ops[i];
-
 		if (likely((i + 1) < nb_completed))
 			rte_prefetch0(ops[i+1]);
 
-		metabuf = (void *)rsp[0];
-		cop = (void *)rsp[1];
-
-		ops[i] = cop;
-
-		/* Check completion code */
-
-		if (likely(cc[i] == 0)) {
-			/* H/w success pkt. Post process */
-			otx_cpt_dequeue_post_process(cop, rsp, op_type);
-		} else if (cc[i] == ERR_GC_ICV_MISCOMPARE) {
-			/* auth data mismatch */
-			cop->status = RTE_CRYPTO_OP_STATUS_AUTH_FAILED;
-		} else {
-			/* Error */
-			cop->status = RTE_CRYPTO_OP_STATUS_ERROR;
-		}
-
-		if (unlikely(cop->sess_type == RTE_CRYPTO_OP_SESSIONLESS)) {
-			void *sess_private_data_t =
-				get_sym_session_private_data(cop->sym->session,
-						otx_cryptodev_driver_id);
-			memset(sess_private_data_t, 0,
-					cpt_get_session_size());
-			memset(cop->sym->session, 0,
-			rte_cryptodev_sym_get_existing_header_session_size(
-					cop->sym->session));
-			rte_mempool_put(instance->sess_mp_priv,
-					sess_private_data_t);
-			rte_mempool_put(instance->sess_mp, cop->sym->session);
-			cop->sym->session = NULL;
-		}
-		free_op_meta(metabuf, instance->meta_info.pool);
+		ops[i] = otx_cpt_process_response(instance, (void *)ops[i],
+						  cc[i], op_type);
 	}
 
 	return nb_completed;
@@ -925,6 +1013,32 @@ otx_cpt_dequeue_sym(void *qptr, struct rte_crypto_op **ops, uint16_t nb_ops)
 	return otx_cpt_pkt_dequeue(qptr, ops, nb_ops, OP_TYPE_SYM);
 }
 
+uintptr_t __rte_hot
+otx_crypto_adapter_dequeue(uintptr_t get_work1)
+{
+	const struct cpt_instance *instance;
+	struct cpt_request_info *req;
+	struct rte_crypto_op *cop;
+	uint8_t cc, op_type;
+	uintptr_t *rsp;
+
+	req = (struct cpt_request_info *)get_work1;
+	instance = req->qp;
+	rsp = req->op;
+	cop = (void *)rsp[1];
+	op_type = cop->type == RTE_CRYPTO_OP_TYPE_SYMMETRIC ? OP_TYPE_SYM :
+							      OP_TYPE_ASYM;
+
+	do {
+		cc = check_nb_command_id(
+			req, (struct cpt_instance *)(uintptr_t)instance);
+	} while (cc == ERR_REQ_PENDING);
+
+	cop = otx_cpt_process_response(instance, (void *)req->op, cc, op_type);
+
+	return (uintptr_t)(cop);
+}
+
 static struct rte_cryptodev_ops cptvf_ops = {
 	/* Device related operations */
 	.dev_configure = otx_cpt_dev_config,
diff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.h b/drivers/crypto/octeontx/otx_cryptodev_ops.h
index fac8a3c006..f234f16970 100644
--- a/drivers/crypto/octeontx/otx_cryptodev_ops.h
+++ b/drivers/crypto/octeontx/otx_cryptodev_ops.h
@@ -14,4 +14,12 @@
 int
 otx_cpt_dev_create(struct rte_cryptodev *c_dev);
 
+__rte_internal
+uint16_t __rte_hot
+otx_crypto_adapter_enqueue(void *port, struct rte_crypto_op *op);
+
+__rte_internal
+uintptr_t __rte_hot
+otx_crypto_adapter_dequeue(uintptr_t get_work1);
+
 #endif /* _OTX_CRYPTODEV_OPS_H_ */
diff --git a/drivers/crypto/octeontx/version.map b/drivers/crypto/octeontx/version.map
index 4a76d1d52d..41f33a4ecf 100644
--- a/drivers/crypto/octeontx/version.map
+++ b/drivers/crypto/octeontx/version.map
@@ -1,3 +1,12 @@
 DPDK_21 {
 	local: *;
 };
+
+INTERNAL {
+	global:
+
+	otx_crypto_adapter_enqueue;
+	otx_crypto_adapter_dequeue;
+
+	local: *;
+};
diff --git a/drivers/event/octeontx/ssovf_evdev.c b/drivers/event/octeontx/ssovf_evdev.c
index 25bf207db6..b93f6ec8c6 100644
--- a/drivers/event/octeontx/ssovf_evdev.c
+++ b/drivers/event/octeontx/ssovf_evdev.c
@@ -734,7 +734,8 @@ ssovf_crypto_adapter_caps_get(const struct rte_eventdev *dev,
 	RTE_SET_USED(dev);
 	RTE_SET_USED(cdev);
 
-	*caps = 0;
+	*caps = RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD |
+		RTE_EVENT_CRYPTO_ADAPTER_CAP_SESSION_PRIVATE_DATA;
 
 	return 0;
 }
diff --git a/drivers/event/octeontx/ssovf_worker.c b/drivers/event/octeontx/ssovf_worker.c
index a9149fb934..8b056ddc5a 100644
--- a/drivers/event/octeontx/ssovf_worker.c
+++ b/drivers/event/octeontx/ssovf_worker.c
@@ -322,6 +322,15 @@ sso_event_tx_adapter_enqueue_ ## name(void *port, struct rte_event ev[],     \
 SSO_TX_ADPTR_ENQ_FASTPATH_FUNC
 #undef T
 
+static uint16_t __rte_hot
+ssow_crypto_adapter_enqueue(void *port, struct rte_event ev[],
+			    uint16_t nb_events)
+{
+	RTE_SET_USED(nb_events);
+
+	return otx_crypto_adapter_enqueue(port, ev->event_ptr);
+}
+
 void
 ssovf_fastpath_fns_set(struct rte_eventdev *dev)
 {
@@ -332,6 +341,8 @@ ssovf_fastpath_fns_set(struct rte_eventdev *dev)
 	dev->enqueue_new_burst = ssows_enq_new_burst;
 	dev->enqueue_forward_burst = ssows_enq_fwd_burst;
 
+	dev->ca_enqueue = ssow_crypto_adapter_enqueue;
+
 	const event_tx_adapter_enqueue ssow_txa_enqueue[2][2][2][2] = {
 #define T(name, f3, f2, f1, f0, sz, flags)				\
 	[f3][f2][f1][f0] =  sso_event_tx_adapter_enqueue_ ##name,
diff --git a/drivers/event/octeontx/ssovf_worker.h b/drivers/event/octeontx/ssovf_worker.h
index 4354f007d7..f609b296ed 100644
--- a/drivers/event/octeontx/ssovf_worker.h
+++ b/drivers/event/octeontx/ssovf_worker.h
@@ -4,6 +4,9 @@
 
 #include <arpa/inet.h>
 
+#ifndef _SSOVF_WORKER_H_
+#define _SSOVF_WORKER_H_
+
 #include <rte_common.h>
 #include <rte_branch_prediction.h>
 
@@ -11,6 +14,7 @@
 
 #include "ssovf_evdev.h"
 #include "octeontx_rxtx.h"
+#include "otx_cryptodev_ops.h"
 
 /* Alignment */
 #define OCCTX_ALIGN  128
@@ -174,14 +178,17 @@ ssows_get_work(struct ssows *ws, struct rte_event *ev, const uint16_t flag)
 	sched_type_queue = sched_type_queue << 38;
 	ev->event = sched_type_queue | (get_work0 & 0xffffffff);
 
-	if (get_work1 && ev->event_type == RTE_EVENT_TYPE_ETHDEV) {
-		ev->mbuf = ssovf_octeontx_wqe_to_pkt(get_work1,
-				(ev->event >> 20) & 0x7F, flag, ws->lookup_mem);
+	if (get_work1) {
+		if (ev->event_type == RTE_EVENT_TYPE_ETHDEV)
+			get_work1 = (uintptr_t)ssovf_octeontx_wqe_to_pkt(
+				get_work1, (ev->event >> 20) & 0x7F, flag,
+				ws->lookup_mem);
+		else if (ev->event_type == RTE_EVENT_TYPE_CRYPTODEV)
+			get_work1 = otx_crypto_adapter_dequeue(get_work1);
+		ev->u64 = get_work1;
 	} else if (unlikely((get_work0 & 0xFFFFFFFF) == 0xFFFFFFFF)) {
 		ssovf_octeontx_wqe_free(get_work1);
 		return 0;
-	} else {
-		ev->u64 = get_work1;
 	}
 
 	return !!get_work1;
@@ -254,3 +261,11 @@ ssows_swtag_wait(struct ssows *ws)
 	while (ssovf_read64(ws->base + SSOW_VHWS_SWTP))
 	;
 }
+
+static __rte_always_inline void
+ssows_head_wait(struct ssows *ws)
+{
+	while (!(ssovf_read64(ws->base + SSOW_VHWS_TAG) & (1ULL << 35)))
+		;
+}
+#endif /* _SSOVF_WORKER_H_ */
diff --git a/drivers/event/octeontx2/otx2_evdev_crypto_adptr_rx.h b/drivers/event/octeontx2/otx2_evdev_crypto_adptr_rx.h
index 9e331fdd75..a543225376 100644
--- a/drivers/event/octeontx2/otx2_evdev_crypto_adptr_rx.h
+++ b/drivers/event/octeontx2/otx2_evdev_crypto_adptr_rx.h
@@ -54,6 +54,7 @@ static inline uint64_t
 otx2_handle_crypto_event(uint64_t get_work1)
 {
 	struct cpt_request_info *req;
+	const struct otx2_cpt_qp *qp;
 	struct rte_crypto_op *cop;
 	uintptr_t *rsp;
 	void *metabuf;
@@ -61,14 +62,15 @@ otx2_handle_crypto_event(uint64_t get_work1)
 
 	req = (struct cpt_request_info *)(get_work1);
 	cc = otx2_cpt_compcode_get(req);
+	qp = req->qp;
 
 	rsp = req->op;
 	metabuf = (void *)rsp[0];
 	cop = (void *)rsp[1];
 
-	otx2_ca_deq_post_process(req->qp, cop, rsp, cc);
+	otx2_ca_deq_post_process(qp, cop, rsp, cc);
 
-	rte_mempool_put(req->qp->meta_info.pool, metabuf);
+	rte_mempool_put(qp->meta_info.pool, metabuf);
 
 	return (uint64_t)(cop);
 }
-- 
2.25.1


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [dpdk-dev] [PATCH v2 2/2] drivers: add octeontx crypto adapter data path
  2021-06-23 20:53   ` [dpdk-dev] [PATCH v2 2/2] drivers: add octeontx crypto adapter data path Shijith Thotton
@ 2021-06-30  8:54     ` Akhil Goyal
  2021-06-30 16:23       ` [dpdk-dev] [dpdk-ci] " Brandon Lo
  0 siblings, 1 reply; 24+ messages in thread
From: Akhil Goyal @ 2021-06-30  8:54 UTC (permalink / raw)
  To: Shijith Thotton, dev, ci
  Cc: Shijith Thotton, Pavan Nikhilesh Bhagavatula, Anoob Joseph,
	Jerin Jacob Kollanukkaran, abhinandan.gujjar, Ankur Dwivedi

> Added support for crypto adapter OP_FORWARD mode.
> 
> As OcteonTx CPT crypto completions could be out of order, each crypto op
> is enqueued to CPT, dequeued from CPT and enqueued to SSO one-by-one.
> 
> Signed-off-by: Shijith Thotton <sthotton@marvell.com>
> ---
This patch shows a CI warning for FreeBSD, but was not able to locate the error/warning in the logs.
Can anybody confirm what is the issue?

http://mails.dpdk.org/archives/test-report/2021-June/200637.html

Regards,
Akhil

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [dpdk-dev] [dpdk-ci] [PATCH v2 2/2] drivers: add octeontx crypto adapter data path
  2021-06-30  8:54     ` Akhil Goyal
@ 2021-06-30 16:23       ` Brandon Lo
  0 siblings, 0 replies; 24+ messages in thread
From: Brandon Lo @ 2021-06-30 16:23 UTC (permalink / raw)
  To: Akhil Goyal
  Cc: Shijith Thotton, dev, ci, Pavan Nikhilesh Bhagavatula,
	Anoob Joseph, Jerin Jacob Kollanukkaran, abhinandan.gujjar,
	Ankur Dwivedi

Hi Akhil,

I believe the FreeBSD 13 failure appeared because new requirements
were added for drivers/event/octeontx.
The ABI reference was taken at the v21.05 release which was able to
build this driver at the time.
I will try to look for a way to produce a real ABI test.

Thanks,
Brandon

On Wed, Jun 30, 2021 at 4:54 AM Akhil Goyal <gakhil@marvell.com> wrote:
>
> > Added support for crypto adapter OP_FORWARD mode.
> >
> > As OcteonTx CPT crypto completions could be out of order, each crypto op
> > is enqueued to CPT, dequeued from CPT and enqueued to SSO one-by-one.
> >
> > Signed-off-by: Shijith Thotton <sthotton@marvell.com>
> > ---
> This patch shows a CI warning for FreeBSD, but was not able to locate the error/warning in the logs.
> Can anybody confirm what is the issue?
>
> http://mails.dpdk.org/archives/test-report/2021-June/200637.html
>
> Regards,
> Akhil



-- 

Brandon Lo

UNH InterOperability Laboratory

21 Madbury Rd, Suite 100, Durham, NH 03824

blo@iol.unh.edu

www.iol.unh.edu

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [dpdk-dev] [PATCH v2 1/2] drivers: add octeontx crypto adapter framework
  2021-06-23 20:53   ` [dpdk-dev] [PATCH v2 1/2] drivers: add octeontx crypto adapter framework Shijith Thotton
@ 2021-07-06 20:14     ` Akhil Goyal
  2021-07-15 14:21     ` David Marchand
  1 sibling, 0 replies; 24+ messages in thread
From: Akhil Goyal @ 2021-07-06 20:14 UTC (permalink / raw)
  To: Shijith Thotton, dev
  Cc: Shijith Thotton, Pavan Nikhilesh Bhagavatula, Anoob Joseph,
	Jerin Jacob Kollanukkaran, abhinandan.gujjar, Ankur Dwivedi

> Set crypto adapter event device slow-path call backs.
> 
> Signed-off-by: Shijith Thotton <sthotton@marvell.com>
> ---
>  drivers/crypto/octeontx/meson.build           |  1 +
>  drivers/crypto/octeontx/otx_cryptodev.c       |  4 ++
>  drivers/crypto/octeontx/otx_cryptodev.h       |  4 --
>  .../crypto/octeontx/otx_cryptodev_hw_access.h |  1 +
>  drivers/event/octeontx/meson.build            |  1 +
>  drivers/event/octeontx/ssovf_evdev.c          | 67 +++++++++++++++++++
>  6 files changed, 74 insertions(+), 4 deletions(-)
> 
Acked-by: Akhil Goyal <gakhil@marvell.com>

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [dpdk-dev] [PATCH 2/2] drivers: add octeontx crypto adapter data path
  2021-06-22 16:48 ` [dpdk-dev] [PATCH 2/2] drivers: add octeontx crypto adapter data path Shijith Thotton
@ 2021-07-06 20:20   ` Akhil Goyal
  0 siblings, 0 replies; 24+ messages in thread
From: Akhil Goyal @ 2021-07-06 20:20 UTC (permalink / raw)
  To: Shijith Thotton, dev
  Cc: Shijith Thotton, Pavan Nikhilesh Bhagavatula, Anoob Joseph,
	Jerin Jacob Kollanukkaran, abhinandan.gujjar, Ankur Dwivedi

> Added support for crypto adapter OP_FORWARD mode.
> 
> As OcteonTx CPT crypto completions could be out of order, each crypto op
> is enqueued to CPT, dequeued from CPT and enqueued to SSO one-by-one.
> 
> Signed-off-by: Shijith Thotton <sthotton@marvell.com>
> ---

Acked-by: Akhil Goyal <gakhil@marvell.com>


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [dpdk-dev] [PATCH v2 0/2] OCTEONTX crypto adapter support
  2021-06-23 20:53 ` [dpdk-dev] [PATCH v2 0/2] OCTEONTX crypto adapter support Shijith Thotton
  2021-06-23 20:53   ` [dpdk-dev] [PATCH v2 1/2] drivers: add octeontx crypto adapter framework Shijith Thotton
  2021-06-23 20:53   ` [dpdk-dev] [PATCH v2 2/2] drivers: add octeontx crypto adapter data path Shijith Thotton
@ 2021-07-07  9:28   ` Akhil Goyal
  2 siblings, 0 replies; 24+ messages in thread
From: Akhil Goyal @ 2021-07-07  9:28 UTC (permalink / raw)
  To: Shijith Thotton, dev
  Cc: Shijith Thotton, Pavan Nikhilesh Bhagavatula, Anoob Joseph,
	Jerin Jacob Kollanukkaran, abhinandan.gujjar, Ankur Dwivedi

> Below patches add crypto adapter OP_FORWARD support for OCTEON TX
> PMD.
> 
> v1:
> - Build fixes for 32-bit arch.
> 
> Shijith Thotton (2):
>   drivers: add octeontx crypto adapter framework
>   drivers: add octeontx crypto adapter data path
> 
Series applied to dpdk-next-crypto

Thanks.

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [dpdk-dev] [PATCH v2 1/2] drivers: add octeontx crypto adapter framework
  2021-06-23 20:53   ` [dpdk-dev] [PATCH v2 1/2] drivers: add octeontx crypto adapter framework Shijith Thotton
  2021-07-06 20:14     ` Akhil Goyal
@ 2021-07-15 14:21     ` David Marchand
  2021-07-16  8:39       ` [dpdk-dev] [EXT] " Akhil Goyal
  1 sibling, 1 reply; 24+ messages in thread
From: David Marchand @ 2021-07-15 14:21 UTC (permalink / raw)
  To: Shijith Thotton, Akhil Goyal
  Cc: dev, Pavan Nikhilesh, Anoob Joseph, Jerin Jacob Kollanukkaran,
	Abhinandan Gujjar, Ankur Dwivedi, Ray Kinsella, Aaron Conole,
	dpdklab, Lincoln Lavoie

Hello,

On Wed, Jun 23, 2021 at 10:54 PM Shijith Thotton <sthotton@marvell.com> wrote:
> diff --git a/drivers/event/octeontx/meson.build b/drivers/event/octeontx/meson.build
> index 3cb140b4de..0d9eec3f2e 100644
> --- a/drivers/event/octeontx/meson.build
> +++ b/drivers/event/octeontx/meson.build
> @@ -12,3 +12,4 @@ sources = files(
>  )
>
>  deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev', 'net_octeontx']
> +deps += ['crypto_octeontx']

This extra dependency resulted in disabling the event/octeontx driver
in FreeBSD, since crypto/octeontx only builds on Linux.
Removing hw support triggers a ABI failure for FreeBSD.


- This had been reported by UNH CI:
http://mails.dpdk.org/archives/test-report/2021-June/200637.html
It seems the result has been ignored but it should have at least
raised some discussion.


- I asked UNH to stop testing FreeBSD abi for now, waiting to get the
main branch fixed.

I don't have the time to look at this, please can you work on it?

Several options:
* crypto/octeontx is made so that it compiles on FreeBSD,
* the abi check is extended to have exceptions per OS,
* the FreeBSD abi reference is regenerated at UNH not to have those
drivers in it (not sure it is doable),


Thanks.

-- 
David Marchand


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [dpdk-dev] [EXT] Re: [PATCH v2 1/2] drivers: add octeontx crypto adapter framework
  2021-07-15 14:21     ` David Marchand
@ 2021-07-16  8:39       ` Akhil Goyal
  2021-07-20 11:58         ` Akhil Goyal
  0 siblings, 1 reply; 24+ messages in thread
From: Akhil Goyal @ 2021-07-16  8:39 UTC (permalink / raw)
  To: David Marchand, Shijith Thotton, Thomas Monjalon,
	Jerin Jacob Kollanukkaran
  Cc: dev, Pavan Nikhilesh Bhagavatula, Anoob Joseph,
	Abhinandan Gujjar, Ankur Dwivedi, Ray Kinsella, Aaron Conole,
	dpdklab, Lincoln Lavoie

Hi David,

> >  deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev',
> 'net_octeontx']
> > +deps += ['crypto_octeontx']
> 
> This extra dependency resulted in disabling the event/octeontx driver
> in FreeBSD, since crypto/octeontx only builds on Linux.
> Removing hw support triggers a ABI failure for FreeBSD.
> 
> 
> - This had been reported by UNH CI:
> http://mails.dpdk.org/archives/test-report/2021-June/200637.html 
> It seems the result has been ignored but it should have at least
> raised some discussion.
> 
This was highlighted to CI ML
http://patches.dpdk.org/project/dpdk/patch/0686a7c3fb3a22e37378a8545bc37bce04f4c391.1624481225.git.sthotton@marvell.com/

but I think I missed to take the follow up with Brandon and applied the patch
as it did not look an issue to me as octeon drivers are not currently built on FreeBSD.
Not sure why event driver is getting built there.

> 
> - I asked UNH to stop testing FreeBSD abi for now, waiting to get the
> main branch fixed.
> 
> I don't have the time to look at this, please can you work on it?
> 
> Several options:
> * crypto/octeontx is made so that it compiles on FreeBSD,
> * the abi check is extended to have exceptions per OS,
> * the FreeBSD abi reference is regenerated at UNH not to have those
> drivers in it (not sure it is doable),

Thanks for the suggestions, we are working on it to resolve this as soon as possible.
We may need to add exception in ABI checking so that it does not shout if a PMD
is not compiled.

Regards,
Akhil

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [dpdk-dev] [EXT] Re: [PATCH v2 1/2] drivers: add octeontx crypto adapter framework
  2021-07-16  8:39       ` [dpdk-dev] [EXT] " Akhil Goyal
@ 2021-07-20 11:58         ` Akhil Goyal
  2021-07-20 12:14           ` David Marchand
  0 siblings, 1 reply; 24+ messages in thread
From: Akhil Goyal @ 2021-07-20 11:58 UTC (permalink / raw)
  To: David Marchand, Thomas Monjalon, Ray Kinsella
  Cc: dev, Pavan Nikhilesh Bhagavatula, Anoob Joseph,
	Abhinandan Gujjar, Ankur Dwivedi, Jerin Jacob Kollanukkaran,
	Aaron Conole, dpdklab, Lincoln Lavoie, Shijith Thotton

 Hi David,
> 
> > >  deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev',
> > 'net_octeontx']
> > > +deps += ['crypto_octeontx']
> >
> > This extra dependency resulted in disabling the event/octeontx driver
> > in FreeBSD, since crypto/octeontx only builds on Linux.
> > Removing hw support triggers a ABI failure for FreeBSD.
> >
> >
> > - This had been reported by UNH CI:
> > http://mails.dpdk.org/archives/test-report/2021-June/200637.html
> > It seems the result has been ignored but it should have at least
> > raised some discussion.
> >
> This was highlighted to CI ML
> http://patches.dpdk.org/project/dpdk/patch/0686a7c3fb3a22e37378a8545b
> c37bce04f4c391.1624481225.git.sthotton@marvell.com/
> 
> but I think I missed to take the follow up with Brandon and applied the patch
> as it did not look an issue to me as octeon drivers are not currently built on
> FreeBSD.
> Not sure why event driver is getting built there.
> 
> >
> > - I asked UNH to stop testing FreeBSD abi for now, waiting to get the
> > main branch fixed.
> >
> > I don't have the time to look at this, please can you work on it?
> >
> > Several options:
> > * crypto/octeontx is made so that it compiles on FreeBSD,
> > * the abi check is extended to have exceptions per OS,
> > * the FreeBSD abi reference is regenerated at UNH not to have those
> > drivers in it (not sure it is doable),
> 
> Thanks for the suggestions, we are working on it to resolve this as soon as
> possible.
> We may need to add exception in ABI checking so that it does not shout if a
> PMD
> is not compiled.
Can we have below change? Will it work to disable compilation of
event/octeontx2 for FreeBSD? I believe this was done by mistake earlier
as all other octeontx2 drivers are compiled off on platforms other than Linux.

diff --git a/drivers/event/octeontx2/meson.build b/drivers/event/octeontx2/meson.build
index 96ebb1f2e7..1ebc51f73f 100644
--- a/drivers/event/octeontx2/meson.build
+++ b/drivers/event/octeontx2/meson.build
@@ -2,7 +2,7 @@
 # Copyright(C) 2019 Marvell International Ltd.
 #

-if not dpdk_conf.get('RTE_ARCH_64')
+if not is_linux or not dpdk_conf.get('RTE_ARCH_64')
     build = false
     reason = 'only supported on 64-bit'
     subdir_done()

Or of this does not work, then we would need to add exception in ABI checking.
Any suggestions how to do this?

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [dpdk-dev] [EXT] Re: [PATCH v2 1/2] drivers: add octeontx crypto adapter framework
  2021-07-20 11:58         ` Akhil Goyal
@ 2021-07-20 12:14           ` David Marchand
  2021-07-21  9:44             ` Thomas Monjalon
  0 siblings, 1 reply; 24+ messages in thread
From: David Marchand @ 2021-07-20 12:14 UTC (permalink / raw)
  To: Akhil Goyal
  Cc: Thomas Monjalon, Ray Kinsella, dev, Pavan Nikhilesh Bhagavatula,
	Anoob Joseph, Abhinandan Gujjar, Ankur Dwivedi,
	Jerin Jacob Kollanukkaran, Aaron Conole, dpdklab, Lincoln Lavoie,
	Shijith Thotton

On Tue, Jul 20, 2021 at 1:59 PM Akhil Goyal <gakhil@marvell.com> wrote:
>
>  Hi David,
> >
> > > >  deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev',
> > > 'net_octeontx']
> > > > +deps += ['crypto_octeontx']
> > >
> > > This extra dependency resulted in disabling the event/octeontx driver
> > > in FreeBSD, since crypto/octeontx only builds on Linux.
> > > Removing hw support triggers a ABI failure for FreeBSD.
> > >
> > >
> > > - This had been reported by UNH CI:
> > > http://mails.dpdk.org/archives/test-report/2021-June/200637.html
> > > It seems the result has been ignored but it should have at least
> > > raised some discussion.
> > >
> > This was highlighted to CI ML
> > http://patches.dpdk.org/project/dpdk/patch/0686a7c3fb3a22e37378a8545b
> > c37bce04f4c391.1624481225.git.sthotton@marvell.com/
> >
> > but I think I missed to take the follow up with Brandon and applied the patch
> > as it did not look an issue to me as octeon drivers are not currently built on
> > FreeBSD.
> > Not sure why event driver is getting built there.
> >
> > >
> > > - I asked UNH to stop testing FreeBSD abi for now, waiting to get the
> > > main branch fixed.
> > >
> > > I don't have the time to look at this, please can you work on it?
> > >
> > > Several options:
> > > * crypto/octeontx is made so that it compiles on FreeBSD,
> > > * the abi check is extended to have exceptions per OS,
> > > * the FreeBSD abi reference is regenerated at UNH not to have those
> > > drivers in it (not sure it is doable),
> >
> > Thanks for the suggestions, we are working on it to resolve this as soon as
> > possible.
> > We may need to add exception in ABI checking so that it does not shout if a
> > PMD
> > is not compiled.
> Can we have below change? Will it work to disable compilation of
> event/octeontx2 for FreeBSD? I believe this was done by mistake earlier
> as all other octeontx2 drivers are compiled off on platforms other than Linux.
>
> diff --git a/drivers/event/octeontx2/meson.build b/drivers/event/octeontx2/meson.build
> index 96ebb1f2e7..1ebc51f73f 100644
> --- a/drivers/event/octeontx2/meson.build
> +++ b/drivers/event/octeontx2/meson.build
> @@ -2,7 +2,7 @@
>  # Copyright(C) 2019 Marvell International Ltd.
>  #
>
> -if not dpdk_conf.get('RTE_ARCH_64')
> +if not is_linux or not dpdk_conf.get('RTE_ARCH_64')
>      build = false
>      reason = 'only supported on 64-bit'
>      subdir_done()

I did not suggest this possibility.
That's the same as for other octeon drivers, such change has been
deferred to 21.11.
https://patches.dpdk.org/project/dpdk/list/?series=15885



>
> Or of this does not work, then we would need to add exception in ABI checking.
> Any suggestions how to do this?

Sorry, no good idea from me.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [dpdk-dev] [EXT] Re: [PATCH v2 1/2] drivers: add octeontx crypto adapter framework
  2021-07-20 12:14           ` David Marchand
@ 2021-07-21  9:44             ` Thomas Monjalon
  2021-07-21 15:11               ` Brandon Lo
  2021-07-22  7:45               ` Akhil Goyal
  0 siblings, 2 replies; 24+ messages in thread
From: Thomas Monjalon @ 2021-07-21  9:44 UTC (permalink / raw)
  To: Akhil Goyal
  Cc: dev, Ray Kinsella, Pavan Nikhilesh Bhagavatula, Anoob Joseph,
	Abhinandan Gujjar, Ankur Dwivedi, Jerin Jacob Kollanukkaran,
	Aaron Conole, dpdklab, Lincoln Lavoie, Shijith Thotton,
	David Marchand

20/07/2021 14:14, David Marchand:
> On Tue, Jul 20, 2021 at 1:59 PM Akhil Goyal <gakhil@marvell.com> wrote:
> >
> >  Hi David,
> > >
> > > > >  deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev',
> > > > 'net_octeontx']
> > > > > +deps += ['crypto_octeontx']
> > > >
> > > > This extra dependency resulted in disabling the event/octeontx driver
> > > > in FreeBSD, since crypto/octeontx only builds on Linux.
> > > > Removing hw support triggers a ABI failure for FreeBSD.
> > > >
> > > >
> > > > - This had been reported by UNH CI:
> > > > http://mails.dpdk.org/archives/test-report/2021-June/200637.html
> > > > It seems the result has been ignored but it should have at least
> > > > raised some discussion.
> > > >
> > > This was highlighted to CI ML
> > > http://patches.dpdk.org/project/dpdk/patch/0686a7c3fb3a22e37378a8545b
> > > c37bce04f4c391.1624481225.git.sthotton@marvell.com/
> > >
> > > but I think I missed to take the follow up with Brandon and applied the patch
> > > as it did not look an issue to me as octeon drivers are not currently built on
> > > FreeBSD.
> > > Not sure why event driver is getting built there.
> > >
> > > >
> > > > - I asked UNH to stop testing FreeBSD abi for now, waiting to get the
> > > > main branch fixed.
> > > >
> > > > I don't have the time to look at this, please can you work on it?
> > > >
> > > > Several options:
> > > > * crypto/octeontx is made so that it compiles on FreeBSD,
> > > > * the abi check is extended to have exceptions per OS,
> > > > * the FreeBSD abi reference is regenerated at UNH not to have those
> > > > drivers in it (not sure it is doable),
> > >
> > > Thanks for the suggestions, we are working on it to resolve this as soon as
> > > possible.
> > > We may need to add exception in ABI checking so that it does not shout if a
> > > PMD
> > > is not compiled.
> > Can we have below change? Will it work to disable compilation of
> > event/octeontx2 for FreeBSD? I believe this was done by mistake earlier
> > as all other octeontx2 drivers are compiled off on platforms other than Linux.
> >
> > diff --git a/drivers/event/octeontx2/meson.build b/drivers/event/octeontx2/meson.build
> > index 96ebb1f2e7..1ebc51f73f 100644
> > --- a/drivers/event/octeontx2/meson.build
> > +++ b/drivers/event/octeontx2/meson.build
> > @@ -2,7 +2,7 @@
> >  # Copyright(C) 2019 Marvell International Ltd.
> >  #
> >
> > -if not dpdk_conf.get('RTE_ARCH_64')
> > +if not is_linux or not dpdk_conf.get('RTE_ARCH_64')
> >      build = false
> >      reason = 'only supported on 64-bit'
> >      subdir_done()
> 
> I did not suggest this possibility.
> That's the same as for other octeon drivers, such change has been
> deferred to 21.11.
> https://patches.dpdk.org/project/dpdk/list/?series=15885
> 
> >
> > Or of this does not work, then we would need to add exception in ABI checking.
> > Any suggestions how to do this?
> 
> Sorry, no good idea from me.

We would need to revert the change breaking the ABI test.
But I don't understand why it seems passing in recent CI runs?



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [dpdk-dev] [EXT] Re: [PATCH v2 1/2] drivers: add octeontx crypto adapter framework
  2021-07-21  9:44             ` Thomas Monjalon
@ 2021-07-21 15:11               ` Brandon Lo
  2021-07-22  7:45               ` Akhil Goyal
  1 sibling, 0 replies; 24+ messages in thread
From: Brandon Lo @ 2021-07-21 15:11 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: Akhil Goyal, dev, Ray Kinsella, Pavan Nikhilesh Bhagavatula,
	Anoob Joseph, Abhinandan Gujjar, Ankur Dwivedi,
	Jerin Jacob Kollanukkaran, Aaron Conole, dpdklab, Lincoln Lavoie,
	Shijith Thotton, David Marchand

On Wed, Jul 21, 2021 at 5:44 AM Thomas Monjalon <thomas@monjalon.net> wrote:
>
> 20/07/2021 14:14, David Marchand:
> > On Tue, Jul 20, 2021 at 1:59 PM Akhil Goyal <gakhil@marvell.com> wrote:
> > >
> > >  Hi David,
> > > >
> > > > > >  deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev',
> > > > > 'net_octeontx']
> > > > > > +deps += ['crypto_octeontx']
> > > > >
> > > > > This extra dependency resulted in disabling the event/octeontx driver
> > > > > in FreeBSD, since crypto/octeontx only builds on Linux.
> > > > > Removing hw support triggers a ABI failure for FreeBSD.
> > > > >
> > > > >
> > > > > - This had been reported by UNH CI:
> > > > > http://mails.dpdk.org/archives/test-report/2021-June/200637.html
> > > > > It seems the result has been ignored but it should have at least
> > > > > raised some discussion.
> > > > >
> > > > This was highlighted to CI ML
> > > > http://patches.dpdk.org/project/dpdk/patch/0686a7c3fb3a22e37378a8545b
> > > > c37bce04f4c391.1624481225.git.sthotton@marvell.com/
> > > >
> > > > but I think I missed to take the follow up with Brandon and applied the patch
> > > > as it did not look an issue to me as octeon drivers are not currently built on
> > > > FreeBSD.
> > > > Not sure why event driver is getting built there.
> > > >
> > > > >
> > > > > - I asked UNH to stop testing FreeBSD abi for now, waiting to get the
> > > > > main branch fixed.
> > > > >
> > > > > I don't have the time to look at this, please can you work on it?
> > > > >
> > > > > Several options:
> > > > > * crypto/octeontx is made so that it compiles on FreeBSD,
> > > > > * the abi check is extended to have exceptions per OS,
> > > > > * the FreeBSD abi reference is regenerated at UNH not to have those
> > > > > drivers in it (not sure it is doable),
> > > >
> > > > Thanks for the suggestions, we are working on it to resolve this as soon as
> > > > possible.
> > > > We may need to add exception in ABI checking so that it does not shout if a
> > > > PMD
> > > > is not compiled.
> > > Can we have below change? Will it work to disable compilation of
> > > event/octeontx2 for FreeBSD? I believe this was done by mistake earlier
> > > as all other octeontx2 drivers are compiled off on platforms other than Linux.
> > >
> > > diff --git a/drivers/event/octeontx2/meson.build b/drivers/event/octeontx2/meson.build
> > > index 96ebb1f2e7..1ebc51f73f 100644
> > > --- a/drivers/event/octeontx2/meson.build
> > > +++ b/drivers/event/octeontx2/meson.build
> > > @@ -2,7 +2,7 @@
> > >  # Copyright(C) 2019 Marvell International Ltd.
> > >  #
> > >
> > > -if not dpdk_conf.get('RTE_ARCH_64')
> > > +if not is_linux or not dpdk_conf.get('RTE_ARCH_64')
> > >      build = false
> > >      reason = 'only supported on 64-bit'
> > >      subdir_done()
> >
> > I did not suggest this possibility.
> > That's the same as for other octeon drivers, such change has been
> > deferred to 21.11.
> > https://patches.dpdk.org/project/dpdk/list/?series=15885
> >
> > >
> > > Or of this does not work, then we would need to add exception in ABI checking.
> > > Any suggestions how to do this?
> >
> > Sorry, no good idea from me.
>
> We would need to revert the change breaking the ABI test.
> But I don't understand why it seems passing in recent CI runs?

Hi Thomas,

For the UNH lab, FreeBSD 13 ABI tests have been disabled due to a request
made during the community CI meeting on July 15th.

The recent CI ABI runs will show up as passes, but the older runs with
FreeBSD 13 included will keep their recorded failures.

Thanks,
Brandon


--
Brandon Lo
UNH InterOperability Laboratory
21 Madbury Rd, Suite 100, Durham, NH 03824
blo@iol.unh.edu
www.iol.unh.edu

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [dpdk-dev] [EXT] Re: [PATCH v2 1/2] drivers: add octeontx crypto adapter framework
  2021-07-21  9:44             ` Thomas Monjalon
  2021-07-21 15:11               ` Brandon Lo
@ 2021-07-22  7:45               ` Akhil Goyal
  2021-07-22  9:06                 ` [dpdk-dev] [PATCH] crypto/octeontx: enable build on non Linux OS Shijith Thotton
  1 sibling, 1 reply; 24+ messages in thread
From: Akhil Goyal @ 2021-07-22  7:45 UTC (permalink / raw)
  To: Thomas Monjalon, David Marchand
  Cc: dev, Ray Kinsella, Pavan Nikhilesh Bhagavatula, Anoob Joseph,
	Abhinandan Gujjar, Ankur Dwivedi, Jerin Jacob Kollanukkaran,
	Aaron Conole, dpdklab, Lincoln Lavoie, Shijith Thotton

> 20/07/2021 14:14, David Marchand:
> > On Tue, Jul 20, 2021 at 1:59 PM Akhil Goyal <gakhil@marvell.com> wrote:
> > >
> > >  Hi David,
> > > >
> > > > > >  deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev',
> > > > > 'net_octeontx']
> > > > > > +deps += ['crypto_octeontx']
> > > > >
> > > > > This extra dependency resulted in disabling the event/octeontx driver
> > > > > in FreeBSD, since crypto/octeontx only builds on Linux.
> > > > > Removing hw support triggers a ABI failure for FreeBSD.
> > > > >
> > > > >
> > > > > - This had been reported by UNH CI:
> > > > > https://urldefense.proofpoint.com/v2/url?u=http-
> 3A__mails.dpdk.org_archives_test-2Dreport_2021-
> 2DJune_200637.html&d=DwICAg&c=nKjWec2b6R0mOyPaz7xtfQ&r=DnL7Si2
> wl_PRwpZ9TWey3eu68gBzn7DkPwuqhd6WNyo&m=zikYn88P-
> Q3H517Go0NWLsokSeUCheJhQyY-Rh-
> DAWQ&s=v6vmJJNBDxjoA81J4rpuxvgPhR8DCT6qizgAkXauZIY&e=
> > > > > It seems the result has been ignored but it should have at least
> > > > > raised some discussion.
> > > > >
> > > > This was highlighted to CI ML
> > > > https://urldefense.proofpoint.com/v2/url?u=http-
> 3A__patches.dpdk.org_project_dpdk_patch_0686a7c3fb3a22e37378a8545b
> &d=DwICAg&c=nKjWec2b6R0mOyPaz7xtfQ&r=DnL7Si2wl_PRwpZ9TWey3eu6
> 8gBzn7DkPwuqhd6WNyo&m=zikYn88P-Q3H517Go0NWLsokSeUCheJhQyY-
> Rh-DAWQ&s=68Xkwo5J0d3BngYD0gxM0JKIgDzd58pypXyJrprGIgA&e=
> > > > c37bce04f4c391.1624481225.git.sthotton@marvell.com/
> > > >
> > > > but I think I missed to take the follow up with Brandon and applied the
> patch
> > > > as it did not look an issue to me as octeon drivers are not currently built
> on
> > > > FreeBSD.
> > > > Not sure why event driver is getting built there.
> > > >
> > > > >
> > > > > - I asked UNH to stop testing FreeBSD abi for now, waiting to get the
> > > > > main branch fixed.
> > > > >
> > > > > I don't have the time to look at this, please can you work on it?
> > > > >
> > > > > Several options:
> > > > > * crypto/octeontx is made so that it compiles on FreeBSD,
> > > > > * the abi check is extended to have exceptions per OS,
> > > > > * the FreeBSD abi reference is regenerated at UNH not to have those
> > > > > drivers in it (not sure it is doable),
> > > >
> > > > Thanks for the suggestions, we are working on it to resolve this as soon
> as
> > > > possible.
> > > > We may need to add exception in ABI checking so that it does not shout
> if a
> > > > PMD
> > > > is not compiled.
> > > Can we have below change? Will it work to disable compilation of
> > > event/octeontx2 for FreeBSD? I believe this was done by mistake earlier
> > > as all other octeontx2 drivers are compiled off on platforms other than
> Linux.
> > >
> > > diff --git a/drivers/event/octeontx2/meson.build
> b/drivers/event/octeontx2/meson.build
> > > index 96ebb1f2e7..1ebc51f73f 100644
> > > --- a/drivers/event/octeontx2/meson.build
> > > +++ b/drivers/event/octeontx2/meson.build
> > > @@ -2,7 +2,7 @@
> > >  # Copyright(C) 2019 Marvell International Ltd.
> > >  #
> > >
> > > -if not dpdk_conf.get('RTE_ARCH_64')
> > > +if not is_linux or not dpdk_conf.get('RTE_ARCH_64')
> > >      build = false
> > >      reason = 'only supported on 64-bit'
> > >      subdir_done()
> >
> > I did not suggest this possibility.
> > That's the same as for other octeon drivers, such change has been
> > deferred to 21.11.
> > https://urldefense.proofpoint.com/v2/url?u=https-
> 3A__patches.dpdk.org_project_dpdk_list_-3Fseries-
> 3D15885&d=DwICAg&c=nKjWec2b6R0mOyPaz7xtfQ&r=DnL7Si2wl_PRwpZ9T
> Wey3eu68gBzn7DkPwuqhd6WNyo&m=zikYn88P-
> Q3H517Go0NWLsokSeUCheJhQyY-Rh-
> DAWQ&s=A5fHouoeBcH2sL_xt5dtzRwfA8Fq__eBUYc-J9ANBIg&e=
> >
> > >
> > > Or of this does not work, then we would need to add exception in ABI
> checking.
> > > Any suggestions how to do this?
> >
> > Sorry, no good idea from me.
> 
> We would need to revert the change breaking the ABI test.
> But I don't understand why it seems passing in recent CI runs?
> 
It is passing because FreeBSD is currently skipped. Right David?
BTW, no need to revert, we would be sending a patch to enable compilation
of crypto/octeontx


^ permalink raw reply	[flat|nested] 24+ messages in thread

* [dpdk-dev] [PATCH] crypto/octeontx: enable build on non Linux OS
  2021-07-22  7:45               ` Akhil Goyal
@ 2021-07-22  9:06                 ` Shijith Thotton
  2021-07-22  9:17                   ` Akhil Goyal
  0 siblings, 1 reply; 24+ messages in thread
From: Shijith Thotton @ 2021-07-22  9:06 UTC (permalink / raw)
  To: gakhil, thomas
  Cc: abhinandan.gujjar, aconole, adwivedi, anoobj, david.marchand,
	dev, dpdklab, jerinj, lylavoie, mdr, pbhagavatula, sthotton

Enabled build of Octeontx crypto PMD on non linux OS. Other Octeontx
PMDs are enabled already.

This is to avoid ABI test failure on an OS once we add dependency
between a driver which is built to another which is not.

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
---
 drivers/crypto/octeontx/meson.build | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/drivers/crypto/octeontx/meson.build b/drivers/crypto/octeontx/meson.build
index 3ae6729e8f..244b16230e 100644
--- a/drivers/crypto/octeontx/meson.build
+++ b/drivers/crypto/octeontx/meson.build
@@ -1,9 +1,5 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Cavium, Inc
-if not is_linux
-    build = false
-    reason = 'only supported on Linux'
-endif
 
 deps += ['bus_pci']
 deps += ['bus_vdev']
-- 
2.25.1


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [dpdk-dev] [PATCH] crypto/octeontx: enable build on non Linux OS
  2021-07-22  9:06                 ` [dpdk-dev] [PATCH] crypto/octeontx: enable build on non Linux OS Shijith Thotton
@ 2021-07-22  9:17                   ` Akhil Goyal
  2021-07-22 19:06                     ` Thomas Monjalon
  0 siblings, 1 reply; 24+ messages in thread
From: Akhil Goyal @ 2021-07-22  9:17 UTC (permalink / raw)
  To: Shijith Thotton, thomas, david.marchand
  Cc: abhinandan.gujjar, aconole, Ankur Dwivedi, Anoob Joseph, dev,
	dpdklab, Jerin Jacob Kollanukkaran, lylavoie, mdr,
	Pavan Nikhilesh Bhagavatula, Shijith Thotton

> Enabled build of Octeontx crypto PMD on non linux OS. Other Octeontx
> PMDs are enabled already.
> 
> This is to avoid ABI test failure on an OS once we add dependency
> between a driver which is built to another which is not.

Fixes: 8dc6c2f12ecf ("crypto/octeontx: add crypto adapter framework")
> 

Reported-by: David Marchand <david.marchand@redhat.com>

> Signed-off-by: Shijith Thotton <sthotton@marvell.com>

Acked-by: Akhil Goyal <gakhil@marvell.com>

Thomas/David: please pick this patch directly on main to fix build on CI for FreeBSD.


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [dpdk-dev] [PATCH] crypto/octeontx: enable build on non Linux OS
  2021-07-22  9:17                   ` Akhil Goyal
@ 2021-07-22 19:06                     ` Thomas Monjalon
  2021-07-22 19:08                       ` Thomas Monjalon
  0 siblings, 1 reply; 24+ messages in thread
From: Thomas Monjalon @ 2021-07-22 19:06 UTC (permalink / raw)
  To: Shijith Thotton, Akhil Goyal
  Cc: david.marchand, dev, abhinandan.gujjar, aconole, Ankur Dwivedi,
	Anoob Joseph, dpdklab, Jerin Jacob Kollanukkaran, lylavoie, mdr,
	Pavan Nikhilesh Bhagavatula

22/07/2021 11:17, Akhil Goyal:
> > Enabled build of Octeontx crypto PMD on non linux OS. Other Octeontx
> > PMDs are enabled already.
> > 
> > This is to avoid ABI test failure on an OS once we add dependency
> > between a driver which is built to another which is not.
> 
> Fixes: 8dc6c2f12ecf ("crypto/octeontx: add crypto adapter framework")
> > 
> 
> Reported-by: David Marchand <david.marchand@redhat.com>
> 
> > Signed-off-by: Shijith Thotton <sthotton@marvell.com>
> 
> Acked-by: Akhil Goyal <gakhil@marvell.com>
> 
> Thomas/David: please pick this patch directly on main to fix build on CI for FreeBSD.

Applied, thanks.




^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [dpdk-dev] [PATCH] crypto/octeontx: enable build on non Linux OS
  2021-07-22 19:06                     ` Thomas Monjalon
@ 2021-07-22 19:08                       ` Thomas Monjalon
  2021-07-22 20:20                         ` Brandon Lo
  0 siblings, 1 reply; 24+ messages in thread
From: Thomas Monjalon @ 2021-07-22 19:08 UTC (permalink / raw)
  To: dpdklab, lylavoie, Brandon Lo
  Cc: Shijith Thotton, Akhil Goyal, david.marchand, dev, aconole, ci

22/07/2021 21:06, Thomas Monjalon:
> 22/07/2021 11:17, Akhil Goyal:
> > > Enabled build of Octeontx crypto PMD on non linux OS. Other Octeontx
> > > PMDs are enabled already.
> > > 
> > > This is to avoid ABI test failure on an OS once we add dependency
> > > between a driver which is built to another which is not.
> > 
> > Fixes: 8dc6c2f12ecf ("crypto/octeontx: add crypto adapter framework")
> > > 
> > 
> > Reported-by: David Marchand <david.marchand@redhat.com>
> > 
> > > Signed-off-by: Shijith Thotton <sthotton@marvell.com>
> > 
> > Acked-by: Akhil Goyal <gakhil@marvell.com>
> > 
> > Thomas/David: please pick this patch directly on main to fix build on CI for FreeBSD.
> 
> Applied, thanks.

Please could you re-test the ABI on FreeBSD
and re-enable in the CI if the test is passing?

Thank you



^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [dpdk-dev] [PATCH] crypto/octeontx: enable build on non Linux OS
  2021-07-22 19:08                       ` Thomas Monjalon
@ 2021-07-22 20:20                         ` Brandon Lo
  2021-07-22 20:32                           ` Thomas Monjalon
  0 siblings, 1 reply; 24+ messages in thread
From: Brandon Lo @ 2021-07-22 20:20 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dpdklab, lylavoie, Shijith Thotton, Akhil Goyal, david.marchand,
	dev, aconole, ci

On Thu, Jul 22, 2021 at 3:08 PM Thomas Monjalon <thomas@monjalon.net> wrote:
>
> 22/07/2021 21:06, Thomas Monjalon:
> > 22/07/2021 11:17, Akhil Goyal:
> > > > Enabled build of Octeontx crypto PMD on non linux OS. Other Octeontx
> > > > PMDs are enabled already.
> > > >
> > > > This is to avoid ABI test failure on an OS once we add dependency
> > > > between a driver which is built to another which is not.
> > >
> > > Fixes: 8dc6c2f12ecf ("crypto/octeontx: add crypto adapter framework")
> > > >
> > >
> > > Reported-by: David Marchand <david.marchand@redhat.com>
> > >
> > > > Signed-off-by: Shijith Thotton <sthotton@marvell.com>
> > >
> > > Acked-by: Akhil Goyal <gakhil@marvell.com>
> > >
> > > Thomas/David: please pick this patch directly on main to fix build on CI for FreeBSD.
> >
> > Applied, thanks.
>
> Please could you re-test the ABI on FreeBSD
> and re-enable in the CI if the test is passing?
>
> Thank you

I ran a couple test runs on FreeBSD 13 to ensure that the patch
compiles successfully, and I enabled reporting.
FreeBSD 13 should start to appear in the ABI test results of newer
tarballs with the patch.

Thanks,
Brandon


--
Brandon Lo
UNH InterOperability Laboratory
21 Madbury Rd, Suite 100, Durham, NH 03824
blo@iol.unh.edu
www.iol.unh.edu

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [dpdk-dev] [PATCH] crypto/octeontx: enable build on non Linux OS
  2021-07-22 20:20                         ` Brandon Lo
@ 2021-07-22 20:32                           ` Thomas Monjalon
  0 siblings, 0 replies; 24+ messages in thread
From: Thomas Monjalon @ 2021-07-22 20:32 UTC (permalink / raw)
  To: Brandon Lo
  Cc: dpdklab, lylavoie, Shijith Thotton, Akhil Goyal, david.marchand,
	dev, aconole, ci

22/07/2021 22:20, Brandon Lo:
> On Thu, Jul 22, 2021 at 3:08 PM Thomas Monjalon <thomas@monjalon.net> wrote:
> >
> > 22/07/2021 21:06, Thomas Monjalon:
> > > 22/07/2021 11:17, Akhil Goyal:
> > > > > Enabled build of Octeontx crypto PMD on non linux OS. Other Octeontx
> > > > > PMDs are enabled already.
> > > > >
> > > > > This is to avoid ABI test failure on an OS once we add dependency
> > > > > between a driver which is built to another which is not.
> > > >
> > > > Fixes: 8dc6c2f12ecf ("crypto/octeontx: add crypto adapter framework")
> > > > >
> > > >
> > > > Reported-by: David Marchand <david.marchand@redhat.com>
> > > >
> > > > > Signed-off-by: Shijith Thotton <sthotton@marvell.com>
> > > >
> > > > Acked-by: Akhil Goyal <gakhil@marvell.com>
> > > >
> > > > Thomas/David: please pick this patch directly on main to fix build on CI for FreeBSD.
> > >
> > > Applied, thanks.
> >
> > Please could you re-test the ABI on FreeBSD
> > and re-enable in the CI if the test is passing?
> >
> > Thank you
> 
> I ran a couple test runs on FreeBSD 13 to ensure that the patch
> compiles successfully, and I enabled reporting.
> FreeBSD 13 should start to appear in the ABI test results of newer
> tarballs with the patch.

Thanks a lot Brandon, well managed.




^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2021-07-22 20:32 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-22 16:48 [dpdk-dev] [PATCH 0/2] OCTEONTX crypto adapter support Shijith Thotton
2021-06-22 16:48 ` [dpdk-dev] [PATCH 1/2] drivers: add octeontx crypto adapter framework Shijith Thotton
2021-06-22 16:48 ` [dpdk-dev] [PATCH 2/2] drivers: add octeontx crypto adapter data path Shijith Thotton
2021-07-06 20:20   ` Akhil Goyal
2021-06-23 20:53 ` [dpdk-dev] [PATCH v2 0/2] OCTEONTX crypto adapter support Shijith Thotton
2021-06-23 20:53   ` [dpdk-dev] [PATCH v2 1/2] drivers: add octeontx crypto adapter framework Shijith Thotton
2021-07-06 20:14     ` Akhil Goyal
2021-07-15 14:21     ` David Marchand
2021-07-16  8:39       ` [dpdk-dev] [EXT] " Akhil Goyal
2021-07-20 11:58         ` Akhil Goyal
2021-07-20 12:14           ` David Marchand
2021-07-21  9:44             ` Thomas Monjalon
2021-07-21 15:11               ` Brandon Lo
2021-07-22  7:45               ` Akhil Goyal
2021-07-22  9:06                 ` [dpdk-dev] [PATCH] crypto/octeontx: enable build on non Linux OS Shijith Thotton
2021-07-22  9:17                   ` Akhil Goyal
2021-07-22 19:06                     ` Thomas Monjalon
2021-07-22 19:08                       ` Thomas Monjalon
2021-07-22 20:20                         ` Brandon Lo
2021-07-22 20:32                           ` Thomas Monjalon
2021-06-23 20:53   ` [dpdk-dev] [PATCH v2 2/2] drivers: add octeontx crypto adapter data path Shijith Thotton
2021-06-30  8:54     ` Akhil Goyal
2021-06-30 16:23       ` [dpdk-dev] [dpdk-ci] " Brandon Lo
2021-07-07  9:28   ` [dpdk-dev] [PATCH v2 0/2] OCTEONTX crypto adapter support Akhil Goyal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).