* @note
* Driver facing APIs for a raw device. These are not to be called directly by
* any application.
- *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
*/
#ifdef __cplusplus
* Raw device pointer
* @param dev_info
* Raw device information structure
+ * @param dev_private_size
+ * The size of the structure pointed to by dev_info->dev_private
*
* @return
- * Returns 0 on success
+ * Returns 0 on success, negative error code on failure
*/
-typedef void (*rawdev_info_get_t)(struct rte_rawdev *dev,
- rte_rawdev_obj_t dev_info);
+typedef int (*rawdev_info_get_t)(struct rte_rawdev *dev,
+ rte_rawdev_obj_t dev_info,
+ size_t dev_private_size);
/**
* Configure a device.
* Raw device pointer
* @param config
* Void object containing device specific configuration
+ * @param config_size
+ * Size of the memory allocated for the configuration
*
* @return
* Returns 0 on success
*/
typedef int (*rawdev_configure_t)(const struct rte_rawdev *dev,
- rte_rawdev_obj_t config);
+ rte_rawdev_obj_t config,
+ size_t config_size);
/**
* Start a configured device.
* Raw device queue index
* @param[out] queue_conf
* Raw device queue configuration structure
+ * @param queue_conf_size
+ * Size of the memory allocated for the configuration
*
+ * @return
+ * Returns 0 on success, negative errno on failure
*/
-typedef void (*rawdev_queue_conf_get_t)(struct rte_rawdev *dev,
+typedef int (*rawdev_queue_conf_get_t)(struct rte_rawdev *dev,
uint16_t queue_id,
- rte_rawdev_obj_t queue_conf);
+ rte_rawdev_obj_t queue_conf,
+ size_t queue_conf_size);
/**
* Setup an raw queue.
* Rawqueue index
* @param queue_conf
* Rawqueue configuration structure
+ * @param queue_conf_size
+ * Size of the memory allocated for the configuration
*
* @return
* Returns 0 on success.
*/
typedef int (*rawdev_queue_setup_t)(struct rte_rawdev *dev,
uint16_t queue_id,
- rte_rawdev_obj_t queue_conf);
+ rte_rawdev_obj_t queue_conf,
+ size_t queue_conf_size);
/**
* Release resources allocated by given raw queue.
* This function helps in getting queue count supported, independently. It
* can help in cases where iterator needs to be implemented.
*
- * @param
+ * @param dev
* Raw device pointer
* @return
* Number of queues; 0 is assumed to be a valid response.
*
* @param dev
* Raw device pointer
- * @param bufs
+ * @param buffers
* array of buffers
* @param count
* number of buffers passed
*
* @param dev
* Raw device pointer
- * @param bufs
+ * @param buffers
* array of buffers
* @param count
* Max buffers expected to be dequeued
*
* @param dev
* Raw device pointer
- * @param status
+ * @param status_info
* void block containing device specific status information
* @return
* 0 for success,
*
* @param dev
* Raw device pointer
- * @param firmware_file
- * file pointer to firmware area
+ * @param firmware_buf
+ * Pointer to firmware image
* @return
* >0, ~0: for successful load
* <0: for failure
* @return
* Return 0 on success
*/
-typedef int (*rawdev_selftest_t)(void);
+typedef int (*rawdev_selftest_t)(uint16_t dev_id);
/** Rawdevice operations function pointer table */
struct rte_rawdev_ops {
* @param name
* Unique identifier name for each device
* @param dev_private_size
- * Private data allocated within rte_rawdev object.
+ * Size of private data memory allocated within rte_rawdev object.
+ * Set to 0 to disable internal memory allocation and allow for
+ * self-allocation.
* @param socket_id
* Socket to allocate resources on.
* @return