X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fevent%2Focteontx%2Fssovf_evdev.c;h=b93f6ec8c6fb370802bb5691da92609134a80fa8;hb=44a2cebbd4898e6d85eff6426342bef7c6bf23dd;hp=6f242aac1b0174c2c48fa337c9efde8b15cd8a9e;hpb=75d113136f3869249987dc2ce46a96c5df9a3438;p=dpdk.git diff --git a/drivers/event/octeontx/ssovf_evdev.c b/drivers/event/octeontx/ssovf_evdev.c index 6f242aac1b..b93f6ec8c6 100644 --- a/drivers/event/octeontx/ssovf_evdev.c +++ b/drivers/event/octeontx/ssovf_evdev.c @@ -5,10 +5,11 @@ #include #include +#include #include #include #include -#include +#include #include #include #include @@ -19,10 +20,11 @@ #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 */ @@ -710,8 +712,7 @@ ssovf_close(struct rte_eventdev *dev) } static int -ssovf_selftest(const char *key __rte_unused, const char *value, - void *opaque) +ssovf_parsekv(const char *key __rte_unused, const char *value, void *opaque) { int *flag = opaque; *flag = !!atoi(value); @@ -726,6 +727,68 @@ 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 = 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 = { .dev_infos_get = ssovf_info_get, @@ -756,6 +819,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, @@ -775,10 +842,8 @@ ssovf_vdev_probe(struct rte_vdev_device *vdev) const char *name; const char *params; int ret; - int selftest = 0; static const char *const args[] = { - SSOVF_SELFTEST_ARG, TIMVF_ENABLE_STATS_ARG, NULL }; @@ -799,18 +864,9 @@ ssovf_vdev_probe(struct rte_vdev_device *vdev) "Ignoring unsupported params supplied '%s'", name); } else { - int ret = rte_kvargs_process(kvlist, - SSOVF_SELFTEST_ARG, - ssovf_selftest, &selftest); - if (ret != 0) { - ssovf_log_err("%s: Error in selftest", name); - rte_kvargs_free(kvlist); - return ret; - } - - ret = rte_kvargs_process(kvlist, - TIMVF_ENABLE_STATS_ARG, - ssovf_selftest, &timvf_enable_stats); + ret = rte_kvargs_process(kvlist, TIMVF_ENABLE_STATS_ARG, + ssovf_parsekv, + &timvf_enable_stats); if (ret != 0) { ssovf_log_err("%s: Error in timvf stats", name); rte_kvargs_free(kvlist); @@ -877,8 +933,6 @@ ssovf_vdev_probe(struct rte_vdev_device *vdev) edev->max_event_ports); ssovf_init_once = 1; - if (selftest) - test_eventdev_octeontx(); return 0; error: