X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_compressdev%2Frte_compressdev_pmd.h;h=16b6bc6b35df6092f74123c84c7c680f52f00a90;hb=d3376cdc7d7d685aee9e84186f8ae315c03f57f3;hp=43307ee8e3a29c2f4e89f3d3ebcaa8fab30a372a;hpb=ed7dd94f7f664b86d026ce6104b5a6b255a9b881;p=dpdk.git diff --git a/lib/librte_compressdev/rte_compressdev_pmd.h b/lib/librte_compressdev/rte_compressdev_pmd.h index 43307ee8e3..16b6bc6b35 100644 --- a/lib/librte_compressdev/rte_compressdev_pmd.h +++ b/lib/librte_compressdev/rte_compressdev_pmd.h @@ -51,11 +51,6 @@ struct rte_compressdev_global { uint8_t max_devs; /**< Max number of devices */ }; -/** Pointer to global array of comp devices */ -extern struct rte_compressdev *rte_compressdevs; -/** Pointer to global comp devices data structure */ -extern struct rte_compressdev_global *rte_compressdev_globals; - /** * Get the rte_compressdev structure device pointer for the named device. * @@ -64,7 +59,8 @@ extern struct rte_compressdev_global *rte_compressdev_globals; * @return * - The rte_compressdev structure pointer for the given device identifier. */ -struct rte_compressdev * __rte_experimental +__rte_experimental +struct rte_compressdev * rte_compressdev_pmd_get_named_dev(const char *name); /** @@ -116,15 +112,141 @@ typedef void (*compressdev_stop_t)(struct rte_compressdev *dev); typedef int (*compressdev_close_t)(struct rte_compressdev *dev); +/** + * Function used to get statistics of a device. + * + * @param dev + * Compress device + * @param stats + * Compress device stats to populate + */ +typedef void (*compressdev_stats_get_t)(struct rte_compressdev *dev, + struct rte_compressdev_stats *stats); + + +/** + * Function used to reset statistics of a device. + * + * @param dev + * Compress device + */ +typedef void (*compressdev_stats_reset_t)(struct rte_compressdev *dev); + + /** * Function used to get specific information of a device. * * @param dev * Compress device + * @param dev_info + * Compress device information to populate */ typedef void (*compressdev_info_get_t)(struct rte_compressdev *dev, struct rte_compressdev_info *dev_info); +/** + * Setup a queue pair for a device. + * + * @param dev + * Compress device + * @param qp_id + * Queue pair identifier + * @param max_inflight_ops + * Max inflight ops which qp must accommodate + * @param socket_id + * Socket identifier + * @return + * Returns 0 on success. + */ +typedef int (*compressdev_queue_pair_setup_t)(struct rte_compressdev *dev, + uint16_t qp_id, uint32_t max_inflight_ops, int socket_id); + +/** + * Release memory resources allocated by given queue pair. + * + * @param dev + * Compress device + * @param qp_id + * Queue pair identifier + * @return + * - 0 on success. + * - EAGAIN if can't close as device is busy + */ +typedef int (*compressdev_queue_pair_release_t)(struct rte_compressdev *dev, + uint16_t qp_id); + +/** + * Create driver private stream data. + * + * @param dev + * Compressdev device + * @param xform + * xform data + * @param stream + * ptr where handle of pmd's private stream data should be stored + * @return + * - Returns 0 if private stream structure has been created successfully. + * - Returns -EINVAL if input parameters are invalid. + * - Returns -ENOTSUP if comp device does not support STATEFUL operations. + * - Returns -ENOTSUP if comp device does not support the comp transform. + * - Returns -ENOMEM if the private stream could not be allocated. + */ +typedef int (*compressdev_stream_create_t)(struct rte_compressdev *dev, + const struct rte_comp_xform *xform, void **stream); + +/** + * Free driver private stream data. + * + * @param dev + * Compressdev device + * @param stream + * handle of pmd's private stream data + * @return + * - 0 if successful + * - <0 in error cases + * - Returns -EINVAL if input parameters are invalid. + * - Returns -ENOTSUP if comp device does not support STATEFUL operations. + * - Returns -EBUSY if can't free stream as there are inflight operations + */ +typedef int (*compressdev_stream_free_t)(struct rte_compressdev *dev, + void *stream); + +/** + * Create driver private_xform data. + * + * @param dev + * Compressdev device + * @param xform + * xform data + * @param private_xform + * ptr where handle of pmd's private_xform data should be stored + * @return + * - if successful returns 0 + * and valid private_xform handle + * - <0 in error cases + * - Returns -EINVAL if input parameters are invalid. + * - Returns -ENOTSUP if comp device does not support the comp transform. + * - Returns -ENOMEM if the private_xform could not be allocated. + */ +typedef int (*compressdev_private_xform_create_t)(struct rte_compressdev *dev, + const struct rte_comp_xform *xform, void **private_xform); + +/** + * Free driver private_xform data. + * + * @param dev + * Compressdev device + * @param private_xform + * handle of pmd's private_xform data + * @return + * - 0 if successful + * - <0 in error cases + * - Returns -EINVAL if input parameters are invalid. + * - Returns -EBUSY if can't free private_xform due to inflight operations + */ +typedef int (*compressdev_private_xform_free_t)(struct rte_compressdev *dev, + void *private_xform); + /** comp device operations function pointer table */ struct rte_compressdev_ops { compressdev_configure_t dev_configure; /**< Configure device. */ @@ -133,6 +255,26 @@ struct rte_compressdev_ops { compressdev_close_t dev_close; /**< Close device. */ compressdev_info_get_t dev_infos_get; /**< Get device info. */ + + compressdev_stats_get_t stats_get; + /**< Get device statistics. */ + compressdev_stats_reset_t stats_reset; + /**< Reset device statistics. */ + + compressdev_queue_pair_setup_t queue_pair_setup; + /**< Set up a device queue pair. */ + compressdev_queue_pair_release_t queue_pair_release; + /**< Release a queue pair. */ + + compressdev_stream_create_t stream_create; + /**< Create a comp stream and initialise its private data. */ + compressdev_stream_free_t stream_free; + /**< Free a comp stream's private data. */ + + compressdev_private_xform_create_t private_xform_create; + /**< Create a comp private_xform and initialise its private data. */ + compressdev_private_xform_free_t private_xform_free; + /**< Free a comp private_xform's data. */ }; /** @@ -150,7 +292,8 @@ struct rte_compressdev_ops { * @return * - Slot in the rte_dev_devices array for a new device; */ -struct rte_compressdev * __rte_experimental +__rte_experimental +struct rte_compressdev * rte_compressdev_pmd_allocate(const char *name, int socket_id); /** @@ -165,7 +308,8 @@ rte_compressdev_pmd_allocate(const char *name, int socket_id); * @return * - 0 on success, negative on error */ -int __rte_experimental +__rte_experimental +int rte_compressdev_pmd_release_device(struct rte_compressdev *dev); @@ -187,7 +331,8 @@ rte_compressdev_pmd_release_device(struct rte_compressdev *dev); * - 0 on success * - errno on failure */ -int __rte_experimental +__rte_experimental +int rte_compressdev_pmd_parse_input_args( struct rte_compressdev_pmd_init_params *params, const char *args); @@ -208,7 +353,8 @@ rte_compressdev_pmd_parse_input_args( * - comp device instance on success * - NULL on creation failure */ -struct rte_compressdev * __rte_experimental +__rte_experimental +struct rte_compressdev * rte_compressdev_pmd_create(const char *name, struct rte_device *device, size_t private_data_size, @@ -226,7 +372,8 @@ rte_compressdev_pmd_create(const char *name, * - 0 on success * - errno on failure */ -int __rte_experimental +__rte_experimental +int rte_compressdev_pmd_destroy(struct rte_compressdev *dev); #ifdef __cplusplus