Hi Jerin, Thanks for the review. Few comments inline.
> -----Original Message----- > From: Jerin Jacob [mailto:jerin.ja...@caviumnetworks.com] > Sent: Thursday, February 15, 2018 6:40 PM > To: Gujjar, Abhinandan S <abhinandan.guj...@intel.com> > Cc: dev@dpdk.org; Rao, Nikhil <nikhil....@intel.com> > Subject: Re: [PATCH V2, 1/2] eventdev: add caps API and PMD callback for > crypto adapter > > -----Original Message----- > > Date: Mon, 15 Jan 2018 16:22:50 +0530 > > From: Abhinandan Gujjar <abhinandan.guj...@intel.com> > > To: jerin.ja...@caviumnetworks.com > > CC: dev@dpdk.org, Abhinandan Gujjar <abhinandan.guj...@intel.com>, > > Nikhil Rao <nikhil....@intel.com> > > Subject: [PATCH V2, 1/2] eventdev: add caps API and PMD callback for > > crypto adapter > > X-Mailer: git-send-email 1.9.1 > > > > Application gets required information to configure crypto adapter for > > cryptodev and eventdev using caps API. > > > > Signed-off-by: Abhinandan Gujjar <abhinandan.guj...@intel.com> > > Signed-off-by: Nikhil Rao <nikhil....@intel.com> > > --- > > > > Notes: > > V2: > > 1. Removed _MULTI_EVENTQ & _MULTI_EVENTQ capabilities > > > Please fix the shared build issue > target: x86_64-native-linuxapp-gcc+shared > > <log> > > rte_eventdev.o: In function `rte_event_crypto_adapter_caps_get': > rte_eventdev.c:(.text+0x4e4): undefined reference to > `rte_cryptodev_pmd_is_valid_dev' > rte_eventdev.c:(.text+0x4f7): undefined reference to > `rte_cryptodev_pmd_get_dev' > collect2: error: ld returned 1 exit status > > </log> Ok. I will recheck. > > > > > lib/librte_eventdev/rte_eventdev.c | 25 +++++++++++++++++++++++++ > > lib/librte_eventdev/rte_eventdev.h | 33 > +++++++++++++++++++++++++++++++++ > > lib/librte_eventdev/rte_eventdev_pmd.h | 32 > > ++++++++++++++++++++++++++++++++ > > 3 files changed, 90 insertions(+) > > > > diff --git a/lib/librte_eventdev/rte_eventdev.c > > b/lib/librte_eventdev/rte_eventdev.c > > index f32c53f..e453667 100644 > > --- a/lib/librte_eventdev/rte_eventdev.c > > +++ b/lib/librte_eventdev/rte_eventdev.c > > @@ -29,6 +29,8 @@ > > #include <rte_malloc.h> > > #include <rte_errno.h> > > #include <rte_ethdev.h> > > +#include <rte_cryptodev.h> > > +#include <rte_cryptodev_pmd.h> > > > > #include "rte_eventdev.h" > > #include "rte_eventdev_pmd.h" > > @@ -123,6 +125,29 @@ > > : 0; > > } > > > > +int > > +rte_event_crypto_adapter_caps_get(uint8_t dev_id, uint8_t cdev_id, > > + uint32_t *caps) > > +{ > > + struct rte_eventdev *dev; > > + struct rte_cryptodev *cdev; > > + > > + RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL); > > + if (!rte_cryptodev_pmd_is_valid_dev(cdev_id)) > > + return -EINVAL; > > + > > + dev = &rte_eventdevs[dev_id]; > > + cdev = rte_cryptodev_pmd_get_dev(cdev_id); > > + > > + if (caps == NULL) > > + return -EINVAL; > > Could move the caps check to beginning. Sure > > > > + *caps = 0; > > + > > + return dev->dev_ops->crypto_adapter_caps_get ? > > + (*dev->dev_ops->crypto_adapter_caps_get) > > + (dev, cdev, caps) : 0; > > +} > > + > > static inline int > > rte_event_dev_queue_config(struct rte_eventdev *dev, uint8_t > > nb_queues) { diff --git a/lib/librte_eventdev/rte_eventdev.h > > b/lib/librte_eventdev/rte_eventdev.h > > index f1949ff..b442fa2 100644 > > --- a/lib/librte_eventdev/rte_eventdev.h > > +++ b/lib/librte_eventdev/rte_eventdev.h > > @@ -1048,6 +1048,39 @@ struct rte_event { > > rte_event_eth_rx_adapter_caps_get(uint8_t dev_id, uint8_t eth_port_id, > > uint32_t *caps); > > > > + > > +/* Crypto adapter capability bitmap flag */ > > +#define RTE_EVENT_CYRPTO_ADAPTER_CAP_INTERNAL_PORT 0x1 > > s/CYRPTO/CRYPTO Ok > > > +/**< Flag indicates HW is capable of generating events. > > How about, generating "crypto completion" events or something similar, Sure. I will update it. > > > + * Cryptodev can send packets to the event device using internal event > > port. > > + */ > > + > > +/** > > + * @warning > > + * @b EXPERIMENTAL: this API may change without prior notice > > Use the new __experimental tag Ok > > > + * > > + * Retrieve the event device's crypto adapter capabilities for the > > + * specified cryptodev device > > + * > > + * @param dev_id > > + * The identifier of the device. > > + * > > + * @param cdev_id > > + * The identifier of the cryptodev device. > > + * > > + * @param[out] caps > > + * A pointer to memory filled with event adapter capabilities. > > + * > > + * @return > > + * - 0: Success, driver provides event adapter capabilities for the > > + * cryptodev device. > > + * - <0: Error code returned by the driver function. > > + * > > + */ > > +int > > +rte_event_crypto_adapter_caps_get(uint8_t dev_id, uint8_t cdev_id, > > + uint32_t *caps); > > + > > struct rte_eventdev_driver; > > struct rte_eventdev_ops; > > struct rte_eventdev; > > diff --git a/lib/librte_eventdev/rte_eventdev_pmd.h > > b/lib/librte_eventdev/rte_eventdev_pmd.h > > index c2fd09c..0c10d99 100644 > > --- a/lib/librte_eventdev/rte_eventdev_pmd.h > > +++ b/lib/librte_eventdev/rte_eventdev_pmd.h > > @@ -569,6 +569,35 @@ typedef int (*eventdev_eth_rx_adapter_stats_reset) > > (const struct rte_eventdev *dev, > > const struct rte_eth_dev *eth_dev); > > > > + > > +struct rte_cryptodev; > > +/** > > + * @warning > > + * @b EXPERIMENTAL: this API may change without prior notice > > > This is a internal PMD API. So, I think, it does not come in EXPERIMENTAL tag Ok > > > + * > > + * Retrieve the event device's crypto adapter capabilities for the > > + * specified cryptodev > > + * > > + * @param dev > > + * Event device pointer > > + * > > + * @param cdev > > + * cryptodev pointer > > + * > > + * @param[out] caps > > + * A pointer to memory filled with event adapter capabilities. > > + * > > + * @return > > + * - 0: Success, driver provides event adapter capabilities for the > > + * cryptodev. > > + * - <0: Error code returned by the driver function. > > + * > > + */ > > +typedef int (*eventdev_crypto_adapter_caps_get_t) > > + (const struct rte_eventdev *dev, > > + const struct rte_cryptodev *cdev, > > + uint32_t *caps); > > + > > /** Event device operations function pointer table */ struct > > rte_eventdev_ops { > > eventdev_info_get_t dev_infos_get; /**< Get device info. */ > > @@ -623,6 +652,9 @@ struct rte_eventdev_ops { > > /**< Get ethernet Rx stats */ > > eventdev_eth_rx_adapter_stats_reset eth_rx_adapter_stats_reset; > > /**< Reset ethernet Rx stats */ > > + > > + eventdev_crypto_adapter_caps_get_t crypto_adapter_caps_get; > > + /**< Get crypto adapter capabilities */ > > Please rebase to latest dpdk-event-next tree. Sure > > > }; > > > > /** > > -- > > 1.9.1 > >