-----Original Message-----
> Date: Mon, 19 Feb 2018 10:55:58 +0000
> From: "Gujjar, Abhinandan S" <[email protected]>
> To: Jerin Jacob <[email protected]>
> CC: "[email protected]" <[email protected]>, "Vangati, Narender"
>  <[email protected]>, "Rao, Nikhil" <[email protected]>, "Eads,
>  Gage" <[email protected]>, "[email protected]"
>  <[email protected]>, "[email protected]" <[email protected]>,
>  "[email protected]" <[email protected]>,
>  "[email protected]" <[email protected]>,
>  "[email protected]" <[email protected]>
> Subject: RE: [RFC v2, 2/2] eventdev: add crypto adapter API header
> 
> Hi Jerin,

Hi Abhinandan,

> 
> Thanks for the review. Please find few comments inline.
> 
> > -----Original Message-----
> > From: Jerin Jacob [mailto:[email protected]]
> > Sent: Saturday, February 17, 2018 1:04 AM
> > To: Gujjar, Abhinandan S <[email protected]>
> > Cc: [email protected]; Vangati, Narender <[email protected]>; Rao,
> > Nikhil <[email protected]>; Eads, Gage <[email protected]>;
> > [email protected]; [email protected];
> > [email protected]; [email protected];
> > [email protected]
> > Subject: Re: [RFC v2, 2/2] eventdev: add crypto adapter API header
> > 
> > -----Original Message-----
> > > Date: Mon, 15 Jan 2018 16:23:50 +0530
> > > From: Abhinandan Gujjar <[email protected]>
> > > To: [email protected]
> > > CC: [email protected], [email protected], Abhinandan Gujjar
> > > <[email protected]>, Nikhil Rao <[email protected]>, Gage
> > > Eads <[email protected]>
> > > Subject: [RFC v2, 2/2] eventdev: add crypto adapter API header
> > > X-Mailer: git-send-email 1.9.1
> > >
> > > +
> > > +/**
> > > + * This adapter adds support to enqueue crypto completions to event 
> > > device.
> > > + * The packet flow from cryptodev to the event device can be
> > > +accomplished
> > > + * using both SW and HW based transfer mechanisms.
> > > + * The adapter uses a EAL service core function for SW based packet
> > > +transfer
> > > + * and uses the eventdev PMD functions to configure HW based packet
> > > +transfer
> > > + * between the cryptodev and the event device.
> > > + *
> > > + * In the case of SW based transfers, application can choose to
> > > +submit a
> > 
> > I think, we can remove "In the case of SW based transfers" as it should be
> > applicable for HW case too
> Ok. In that case, adapter will detect the presence of HW connection between
> cryptodev & eventdev and will not dequeue crypto completions.

I would say presence of "specific capability" instead of HW.

> 
> > 
> > > + * crypto operation directly to cryptodev or send it  to the
> > > + cryptodev
> > > + * adapter via eventdev, the cryptodev adapter then submits the
> > > + crypto
> > > + * operation to the crypto device. The first mode is known as the
> > 
> > The first mode (DEQ) is very clear. In the second mode(ENQ_DEQ),
> > - How does "worker" submits the crypto work through crypto-adapter?
> > If I understand it correctly, "workers" always deals with only cryptodev's
> > rte_cryptodev_enqueue_burst() API and "service" function in crypto adapter
> > would be responsible for dequeue() from cryptodev and enqueue to eventdev?
> > 
> > I understand the need for OP_NEW vs OP_FWD mode difference in both modes.
> > Other than that, What makes ENQ_DEQ different? Could you share the flow for
> > ENQ_DEQ mode with APIs.
> 
> /*
> Application changes for ENQ_DEQ mode:
> -------------------------------------------------
>       /* In ENQ_DEQ mode, to enqueue to adapter app
>        * has to fill out following details.
>        */
>       struct rte_event_crypto_request *req;
>       struct rte_crypto_op *op = rte_crypto_op_alloc();
>       
>       /* fill request info */
>       req = (void *)((char *)op + op.private_data_offset);
>       req->cdev_id = 1;
>       req->queue_pair_id = 1;
> 
>       /* fill response info */
>       ...
> 
>       /* send event to crypto adapter */
>       ev->event_ptr = op;
>       ev->queue_id = dst_event_qid;
>       ev->priority = dst_priority;
>       ev->sched_type = dst_sched_type;
>       ev->event_type = RTE_EVENT_TYPE_CRYPTODEV;
>       ev->sub_event_type = sub_event_type;
>       ev->flow_id = dst_flow_id;
>       ret = rte_event_enqueue_burst(event_dev_id, event_port_id, ev, 1);
> 
> 
> Adapter in ENQ_DEQ mode, submitting crypto ops to cryptodev:
> -----------------------------------------------------------------------------
>       n = rte_event_dequeue_burst(event_dev_id, event_port_id, ev, 
> BATCH_SIZE, time_out);
>       struct rte_crypto_op *op = ev->event_ptr;
>       struct rte_event_crypto_request *req = (void *)op + 
> op.private_data_offset;
>       cdev_id = req->cdev_id;
>       qp_id = req->queue_pair_id
> 
>       ret = rte_cryptodev_enqueue_burst(cdev_id, qp_id, op, 1);

This mode wont work for the HW implementations that I know. As in HW
implementations, The Adapter is embedded in HW.
The DEQ mode works. But, This would call for to have two separate application 
logic for
DEQ and ENQ_DEQ mode.
I think, it is unavoidable as SW scheme has better performance with ENQ_DEQ 
MODE.

If you think, there is no option other than introducing a capability in
adapter then please create capability in Rx adapter to inform the
adapter capability to the application. 

Do we think, it possible to have scheme with ENQ_DEQ mode, Where
application still enqueue to cryptodev like DEQ mode but using
cryptodev. ie. Adapter patches the cryptodev dev->enqueue_burst() to
"eventdev enqueue burst" followed by "exiting dev->enqueue_burst".
Something like exiting ethdev rx_burst callback scheme.
This will enable application to have unified flow IMO.

Any thoughts from NXP folks?

> */
> > 
> > > + * dequeue only (DEQ) mode  and the second as the enqueue - dequeue
> > 
> > extra space between "mode" and "and"
> Ok
> > 
> > > + * (ENQ_DEQ) mode. The choice of mode can be specified when creating
> > > + * the adapter.
> > > + * In the latter choice, the cryptodev adapter is able to use
> > > + * RTE_OP_FORWARD as the event dev enqueue type, this has a
> > > + performance
> > > + * advantage in "closed system" eventdevs like the eventdev SW PMD
> > > + and
> > 

Reply via email to