#include <inttypes.h>
#include <rte_common.h>
+#include <cryptodev_pmd.h>
#include <rte_debug.h>
#include <rte_dev.h>
#include <rte_eal.h>
#include "ssovf_evdev.h"
#include "timvf_evdev.h"
+#include "otx_cryptodev_hw_access.h"
static uint8_t timvf_enable_stats;
-RTE_LOG_REGISTER(otx_logtype_ssovf, pmd.event.octeontx, NOTICE);
+RTE_LOG_REGISTER_DEFAULT(otx_logtype_ssovf, NOTICE);
/* SSOPF Mailbox messages */
RTE_EVENT_DEV_CAP_RUNTIME_PORT_LINK |
RTE_EVENT_DEV_CAP_MULTIPLE_QUEUE_PORT |
RTE_EVENT_DEV_CAP_NONSEQ_MODE |
- RTE_EVENT_DEV_CAP_CARRY_FLOW_ID;
+ RTE_EVENT_DEV_CAP_CARRY_FLOW_ID |
+ RTE_EVENT_DEV_CAP_MAINTENANCE_FREE;
}
static int
ssovf_timvf_caps_get(const struct rte_eventdev *dev, uint64_t flags,
- uint32_t *caps, const struct rte_event_timer_adapter_ops **ops)
+ uint32_t *caps, const struct event_timer_adapter_ops **ops)
{
return timvf_timer_adapter_caps_get(dev, flags, caps, ops,
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 = RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD |
+ RTE_EVENT_CRYPTO_ADAPTER_CAP_SESSION_PRIVATE_DATA;
+
+ 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 = {
+static struct eventdev_ops ssovf_ops = {
.dev_infos_get = ssovf_info_get,
.dev_configure = ssovf_configure,
.queue_def_conf = ssovf_queue_def_conf,
.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,
edev->max_event_ports);
ssovf_init_once = 1;
+ event_dev_probing_finish(eventdev);
return 0;
error: