-----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> > > 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. > + *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 > +/**< Flag indicates HW is capable of generating events. How about, generating "crypto completion" events or something similar, > + * 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 > + * > + * 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 > + * > + * 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. > }; > > /** > -- > 1.9.1 >