Skip to contentSkip to conversation

OCTEONTX crypto adapter support

PATCH Superseded Shijith Thotton 5 participants 24 messages Jun 22, 2021 – Jul 22, 2021

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

cover OCTEONTX crypto adapter support

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(-)
Signature · 1 line
2.25.1
#1 lore raw

PATCH 1/2 drivers: add octeontx crypto adapter framework

Set crypto adapter event device slow-path call backs.

---
 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(-)
drivers/crypto/octeontx/meson.build +1 -0
index daef47a72f..37603c5c89 100644
@@ -7,6 +7,7 @@ endif
 
 deps += ['bus_pci']
 deps += ['common_cpt']
+deps += ['eventdev']
 
 sources = files(
         'otx_cryptodev.c',
drivers/crypto/octeontx/otx_cryptodev.c +4 -0
index ba73c2f939..7207909abb 100644
@@ -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[] = {
drivers/crypto/octeontx/otx_cryptodev.h +0 -4
index b66ef4a8f7..5d8607eafb 100644
@@ -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;
drivers/crypto/octeontx/otx_cryptodev_hw_access.h +1 -0
index 0ec258157a..f7b1e93402 100644
@@ -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 {
drivers/event/octeontx/meson.build +1 -0
index 3cb140b4de..0d9eec3f2e 100644
@@ -12,3 +12,4 @@ sources = files(
 )
 
 deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev', 'net_octeontx']
+deps += ['crypto_octeontx']
drivers/event/octeontx/ssovf_evdev.c +67 -0

91 lines not on this page · raw message

Signature · 1 line
2.25.1
#2 lore raw

PATCH 2/2 drivers: add octeontx crypto adapter data path

In reply to Shijith Thotton

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.

---
 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(-)
doc/guides/rel_notes/release_21_08.rst +4 -0
index a6ecfdf3ce..70a91cc654 100644
@@ -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
 -------------
drivers/common/cpt/cpt_common.h +1 -1
index 7fea0ca879..724e5ec736 100644
@@ -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;
drivers/crypto/octeontx/meson.build +5 -0
index 37603c5c89..3ae6729e8f 100644
@@ -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')
drivers/crypto/octeontx/otx_cryptodev_ops.c +196 -76

440 lines not on this page · raw message

drivers/crypto/octeontx/otx_cryptodev_ops.h +7 -0
index fac8a3c006..46f474c1ba 100644
@@ -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_ */
drivers/crypto/octeontx/version.map +9 -0
index 4a76d1d52d..41f33a4ecf 100644
@@ -1,3 +1,12 @@
 DPDK_21 {
 	local: *;
 };
+
+INTERNAL {
+	global:
+
+	otx_crypto_adapter_enqueue;
+	otx_crypto_adapter_dequeue;
+
+	local: *;
+};
drivers/event/octeontx/ssovf_evdev.c +2 -1
index 25bf207db6..b93f6ec8c6 100644
@@ -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;
 }
drivers/event/octeontx/ssovf_worker.c +11 -0
index a9149fb934..8b056ddc5a 100644
@@ -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,
drivers/event/octeontx/ssovf_worker.h +20 -5
index 4354f007d7..29b5f48761 100644
@@ -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_ */
drivers/event/octeontx2/otx2_evdev_crypto_adptr_rx.h +4 -2
index 9e331fdd75..a543225376 100644
@@ -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);
 }
Signature · 1 line
2.25.1
Acked-by on v1 2/2
#3 lore raw

Re: [dpdk-dev] [PATCH 2/2] drivers: add octeontx crypto adapter data path

Quoted 7 lines

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.

---

#4 lore raw

v2 cover OCTEONTX crypto adapter support

In reply to Shijith Thotton

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(-)
Signature · 1 line
2.25.1
#5 lore raw

PATCH v2 1/2 drivers: add octeontx crypto adapter framework

Set crypto adapter event device slow-path call backs.

---
 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(-)
drivers/crypto/octeontx/meson.build +1 -0
index daef47a72f..37603c5c89 100644
@@ -7,6 +7,7 @@ endif
 
 deps += ['bus_pci']
 deps += ['common_cpt']
+deps += ['eventdev']
 
 sources = files(
         'otx_cryptodev.c',
drivers/crypto/octeontx/otx_cryptodev.c +4 -0
index ba73c2f939..7207909abb 100644
@@ -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[] = {
drivers/crypto/octeontx/otx_cryptodev.h +0 -4
index b66ef4a8f7..5d8607eafb 100644
@@ -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;
drivers/crypto/octeontx/otx_cryptodev_hw_access.h +1 -0
index 0ec258157a..f7b1e93402 100644
@@ -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 {
drivers/event/octeontx/meson.build +1 -0
index 3cb140b4de..0d9eec3f2e 100644
@@ -12,3 +12,4 @@ sources = files(
 )
 
 deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev', 'net_octeontx']
+deps += ['crypto_octeontx']
drivers/event/octeontx/ssovf_evdev.c +67 -0

91 lines not on this page · raw message

Signature · 1 line
2.25.1
Acked-by on v2 1/2
#6 lore raw

Re: [dpdk-dev] [PATCH v2 1/2] drivers: add octeontx crypto adapter framework

Quoted 12 lines

Set crypto adapter event device slow-path call backs.

---
 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(-)
#7 lore raw

Re: [dpdk-dev] [PATCH v2 1/2] drivers: add octeontx crypto adapter framework

In reply to Shijith Thotton

Hello,

drivers/event/octeontx/meson.build sources = files( · line 15

Quoted 9 lines · Shijith Thotton
drivers/event/octeontx/meson.build +1 -0
index 3cb140b4de..0d9eec3f2e 100644
@@ -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.

Signature · 1 line
David Marchand
#8 lore raw

Re: [dpdk-dev] [EXT] Re: [PATCH v2 1/2] drivers: add octeontx crypto adapter framework

Hi David,

Quoted 9 lines
Quoted 1 line

deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev',

'net_octeontx']

Quoted 1 line

+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.

Quoted 5 lines

- 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.

Quoted 11 lines

- 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

#9 lore raw

Re: [dpdk-dev] [EXT] Re: [PATCH v2 1/2] drivers: add octeontx crypto adapter framework

Hi David,

Quoted 36 lines
Quoted 10 lines
Quoted 2 lines

deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev',

'net_octeontx']

Quoted 1 line

+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.

Quoted 5 lines

- 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
[email protected]/

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.

Quoted 11 lines

- 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),

Quoted 5 lines

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.

drivers/event/octeontx2/meson.build +1 -1
index 96ebb1f2e7..1ebc51f73f 100644
@@ -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?

#10 lore raw

Re: [dpdk-dev] [EXT] Re: [PATCH v2 1/2] drivers: add octeontx crypto adapter framework

Quoted 52 lines · Akhil Goyal

Hi David,

Quoted 36 lines
Quoted 10 lines
Quoted 2 lines

deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev',

'net_octeontx']

Quoted 1 line

+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.

Quoted 5 lines

- 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
[email protected]/

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.

Quoted 11 lines

- 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),

Quoted 5 lines

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.

drivers/event/octeontx2/meson.build +0 -0
index 96ebb1f2e7..1ebc51f73f 100644

drivers/event/octeontx2/meson.build line 8

Quoted 8 lines
drivers/event/octeontx2/meson.build +1 -1
@@ -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

Quoted 3 lines

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.

Signature · 1 line
David Marchand
#11 lore raw

Re: [dpdk-dev] [EXT] Re: [PATCH v2 1/2] drivers: add octeontx crypto adapter framework

20/07/2021 14:14, David Marchand:

Quoted 68 lines · Akhil Goyal
Quoted 52 lines

Hi David,

Quoted 36 lines
Quoted 10 lines
Quoted 2 lines

deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev',

'net_octeontx']

Quoted 1 line

+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.

Quoted 5 lines

- 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
[email protected]/

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.

Quoted 11 lines

- 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),

Quoted 5 lines

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.

drivers/event/octeontx2/meson.build +0 -0
index 96ebb1f2e7..1ebc51f73f 100644

drivers/event/octeontx2/meson.build line 8

Quoted 8 lines
drivers/event/octeontx2/meson.build +1 -1
@@ -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

Quoted 1 line
Quoted 4 lines
Quoted 2 lines

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?

#12 lore raw

Re: [dpdk-dev] [EXT] Re: [PATCH v2 1/2] drivers: add octeontx crypto adapter framework

Quoted 70 lines · Thomas Monjalon

20/07/2021 14:14, David Marchand:

Quoted 68 lines · Akhil Goyal
Quoted 52 lines

Hi David,

Quoted 36 lines
Quoted 10 lines
Quoted 2 lines

deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev',

'net_octeontx']

Quoted 1 line

+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.

Quoted 5 lines

- 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
[email protected]/

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.

Quoted 11 lines

- 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),

Quoted 5 lines

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.

drivers/event/octeontx2/meson.build +0 -0
index 96ebb1f2e7..1ebc51f73f 100644

drivers/event/octeontx2/meson.build line 8

Quoted 8 lines
drivers/event/octeontx2/meson.build +1 -1
@@ -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

Quoted 1 line
Quoted 7 lines
Quoted 4 lines
Quoted 2 lines

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
[email protected]
www.iol.unh.edu

#13 lore raw

Re: [dpdk-dev] [EXT] Re: [PATCH v2 1/2] drivers: add octeontx crypto adapter framework

In reply to Thomas Monjalon
Quoted 89 lines

20/07/2021 14:14, David Marchand:

Quoted 8 lines · Akhil Goyal
Quoted 7 lines

Hi David,

Quoted 5 lines
Quoted 5 lines
Quoted 2 lines

deps += ['common_octeontx', 'mempool_octeontx', 'bus_vdev',

'net_octeontx']

Quoted 1 line

+deps += ['crypto_octeontx']

Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines

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=

Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 3 lines

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=

Quoted 3 lines
Quoted 3 lines
Quoted 3 lines

[email protected]/

but I think I missed to take the follow up with Brandon and applied the

patch

Quoted 1 line
Quoted 1 line
Quoted 1 line

as it did not look an issue to me as octeon drivers are not currently built

on

Quoted 9 lines
Quoted 9 lines
Quoted 9 lines

FreeBSD.
Not sure why event driver is getting built there.

Quoted 6 lines

- 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?

Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 5 lines

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

Quoted 2 lines
Quoted 2 lines
Quoted 2 lines

possible.
We may need to add exception in ABI checking so that it does not shout

if a

Quoted 5 lines
Quoted 5 lines
Quoted 2 lines

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.

Quoted 2 lines

Review

Quoted 2 lines
(quoted diff) +0 -0

b/drivers/event/octeontx2/meson.build

Quoted 7 lines
Quoted 7 lines

index 96ebb1f2e7..1ebc51f73f 100644

drivers/event/octeontx2/meson.build +0 -0
@@ -2,7 +2,7 @@
 # Copyright(C) 2019 Marvell International Ltd.
 #
 
Quoted 10 lines

drivers/event/octeontx2/meson.build line 8

Quoted 5 lines
drivers/event/octeontx2/meson.build +1 -1
-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=

Quoted 2 lines
Quoted 2 lines
Quoted 9 lines
Quoted 1 line
Quoted 1 line

Or of this does not work, then we would need to add exception in ABI

checking.

Quoted 3 lines
Quoted 1 line

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

#14 lore raw

PATCH 1/1 crypto/octeontx: enable build on non Linux OS

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.

---
 drivers/crypto/octeontx/meson.build | 4 ----
 1 file changed, 4 deletions(-)
drivers/crypto/octeontx/meson.build +0 -4
index 3ae6729e8f..244b16230e 100644
@@ -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']
Signature · 1 line
2.25.1
Acked-by on v1 1/1
#15 lore raw

Re: [dpdk-dev] [PATCH] crypto/octeontx: enable build on non Linux OS

Quoted 5 lines

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")
Quoted 1 line
Quoted 1 line

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

#16 lore raw

Re: [dpdk-dev] [PATCH] crypto/octeontx: enable build on non Linux OS

22/07/2021 11:17, Akhil Goyal:

Quoted 9 lines
Quoted 5 lines

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")
Quoted 1 line
Quoted 7 lines
Quoted 1 line

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

Applied, thanks.

#17 lore raw

Re: [dpdk-dev] [PATCH] crypto/octeontx: enable build on non Linux OS

22/07/2021 21:06, Thomas Monjalon:

Quoted 12 lines

22/07/2021 11:17, Akhil Goyal:

Quoted 11 lines
Quoted 5 lines

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")
Quoted 1 line
Quoted 7 lines
Quoted 5 lines
Quoted 1 line

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

#18 lore raw

Re: [dpdk-dev] [PATCH] crypto/octeontx: enable build on non Linux OS

Quoted 18 lines · Thomas Monjalon

22/07/2021 21:06, Thomas Monjalon:

Quoted 16 lines

22/07/2021 11:17, Akhil Goyal:

Quoted 15 lines
Quoted 5 lines

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")
Quoted 1 line
Quoted 1 line
Quoted 8 lines
Quoted 3 lines
Quoted 1 line

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
[email protected]
www.iol.unh.edu

#19 lore raw

Re: [dpdk-dev] [PATCH] crypto/octeontx: enable build on non Linux OS

22/07/2021 22:20, Brandon Lo:

Quoted 26 lines · Thomas Monjalon
Quoted 25 lines

22/07/2021 21:06, Thomas Monjalon:

Quoted 12 lines

22/07/2021 11:17, Akhil Goyal:

Quoted 11 lines
Quoted 5 lines

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")
Quoted 1 line
Quoted 7 lines
Quoted 5 lines
Quoted 1 line

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?

Quoted 6 lines
Quoted 1 line

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.

#20 lore raw

PATCH v2 2/2 drivers: add octeontx crypto adapter data path

In reply to Shijith Thotton

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.

---
 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(-)
doc/guides/rel_notes/release_21_08.rst +4 -0
index a6ecfdf3ce..70a91cc654 100644
@@ -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
 -------------
drivers/common/cpt/cpt_common.h +1 -1
index 7fea0ca879..724e5ec736 100644
@@ -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;
drivers/crypto/octeontx/meson.build +5 -0
index 37603c5c89..3ae6729e8f 100644
@@ -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')
drivers/crypto/octeontx/otx_cryptodev_ops.c +191 -77

435 lines not on this page · raw message

drivers/crypto/octeontx/otx_cryptodev_ops.h +8 -0
index fac8a3c006..f234f16970 100644
@@ -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_ */
drivers/crypto/octeontx/version.map +9 -0
index 4a76d1d52d..41f33a4ecf 100644
@@ -1,3 +1,12 @@
 DPDK_21 {
 	local: *;
 };
+
+INTERNAL {
+	global:
+
+	otx_crypto_adapter_enqueue;
+	otx_crypto_adapter_dequeue;
+
+	local: *;
+};
drivers/event/octeontx/ssovf_evdev.c +2 -1
index 25bf207db6..b93f6ec8c6 100644
@@ -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;
 }
drivers/event/octeontx/ssovf_worker.c +11 -0
index a9149fb934..8b056ddc5a 100644
@@ -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,
drivers/event/octeontx/ssovf_worker.h +20 -5
index 4354f007d7..f609b296ed 100644
@@ -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_ */
drivers/event/octeontx2/otx2_evdev_crypto_adptr_rx.h +4 -2
index 9e331fdd75..a543225376 100644
@@ -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);
 }
Signature · 1 line
2.25.1
#21 lore raw

Re: [dpdk-dev] [PATCH v2 2/2] drivers: add octeontx crypto adapter data path

Quoted 7 lines

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.

---

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

#22 lore raw

Re: [dpdk-dev] [dpdk-ci] [PATCH v2 2/2] drivers: add octeontx crypto adapter data path

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

Quoted 15 lines · Akhil Goyal
Quoted 8 lines

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.

---

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

Signature · 9 lines
Brandon Lo

UNH InterOperability Laboratory

21 Madbury Rd, Suite 100, Durham, NH 03824

[email protected]

www.iol.unh.edu
#23 lore raw
In reply to Shijith Thotton
Quoted 10 lines

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.