661aeb251c
Added support for burst enqueue for cn10k event crypto adapter. Instructions will be grouped based on the queue pair and sent in a burst. Signed-off-by: Volodymyr Fialko <vfialko@marvell.com> Acked-by: Akhil Goyal <gakhil@marvell.com>
67 lines
1.3 KiB
C
67 lines
1.3 KiB
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright(C) 2021 Marvell.
|
|
*/
|
|
|
|
#include "cn10k_worker.h"
|
|
#include "cnxk_eventdev.h"
|
|
#include "cnxk_worker.h"
|
|
|
|
uint16_t __rte_hot
|
|
cn10k_sso_hws_enq(void *port, const struct rte_event *ev)
|
|
{
|
|
struct cn10k_sso_hws *ws = port;
|
|
|
|
switch (ev->op) {
|
|
case RTE_EVENT_OP_NEW:
|
|
return cn10k_sso_hws_new_event(ws, ev);
|
|
case RTE_EVENT_OP_FORWARD:
|
|
cn10k_sso_hws_forward_event(ws, ev);
|
|
break;
|
|
case RTE_EVENT_OP_RELEASE:
|
|
if (ws->swtag_req) {
|
|
cnxk_sso_hws_desched(ev->u64, ws->base);
|
|
ws->swtag_req = 0;
|
|
break;
|
|
}
|
|
cnxk_sso_hws_swtag_flush(ws->base);
|
|
break;
|
|
default:
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
uint16_t __rte_hot
|
|
cn10k_sso_hws_enq_burst(void *port, const struct rte_event ev[],
|
|
uint16_t nb_events)
|
|
{
|
|
RTE_SET_USED(nb_events);
|
|
return cn10k_sso_hws_enq(port, ev);
|
|
}
|
|
|
|
uint16_t __rte_hot
|
|
cn10k_sso_hws_enq_new_burst(void *port, const struct rte_event ev[],
|
|
uint16_t nb_events)
|
|
{
|
|
struct cn10k_sso_hws *ws = port;
|
|
uint16_t i, rc = 1;
|
|
|
|
for (i = 0; i < nb_events && rc; i++)
|
|
rc = cn10k_sso_hws_new_event(ws, &ev[i]);
|
|
|
|
return nb_events;
|
|
}
|
|
|
|
uint16_t __rte_hot
|
|
cn10k_sso_hws_enq_fwd_burst(void *port, const struct rte_event ev[],
|
|
uint16_t nb_events)
|
|
{
|
|
struct cn10k_sso_hws *ws = port;
|
|
|
|
RTE_SET_USED(nb_events);
|
|
cn10k_sso_hws_forward_event(ws, ev);
|
|
|
|
return 1;
|
|
}
|