#include <stdbool.h>
#include "rte_vhost.h"
+#include "rte_vdpa.h"
#define RTE_VHOST_QUEUE_ALL UINT16_MAX
* vdpa device operations
*/
struct rte_vdpa_dev_ops {
- /** Get capabilities of this device */
+ /** Get capabilities of this device (Mandatory) */
int (*get_queue_num)(struct rte_vdpa_device *dev, uint32_t *queue_num);
- /** Get supported features of this device */
+ /** Get supported features of this device (Mandatory) */
int (*get_features)(struct rte_vdpa_device *dev, uint64_t *features);
- /** Get supported protocol features of this device */
+ /** Get supported protocol features of this device (Mandatory) */
int (*get_protocol_features)(struct rte_vdpa_device *dev,
uint64_t *protocol_features);
- /** Driver configure/close the device */
+ /** Driver configure the device (Mandatory) */
int (*dev_conf)(int vid);
+
+ /** Driver close the device (Mandatory) */
int (*dev_close)(int vid);
- /** Enable/disable this vring */
+ /** Enable/disable this vring (Mandatory) */
int (*set_vring_state)(int vid, int vring, int state);
- /** Set features when changed */
+ /** Set features when changed (Mandatory) */
int (*set_features)(int vid);
/** Destination operations when migration done */
};
/**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
* Register a vdpa device
*
* @param rte_dev
* @return
* vDPA device pointer on success, NULL on failure
*/
-__rte_experimental
struct rte_vdpa_device *
rte_vdpa_register_device(struct rte_device *rte_dev,
struct rte_vdpa_dev_ops *ops);
/**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
* Unregister a vdpa device
*
* @param dev
* @return
* device id on success, -1 on failure
*/
-__rte_experimental
int
rte_vdpa_unregister_device(struct rte_vdpa_device *dev);
/**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
* Enable/Disable host notifier mapping for a vdpa port.
*
* @param vid
* @return
* 0 on success, -1 on failure
*/
-__rte_experimental
int
rte_vhost_host_notifier_ctrl(int vid, uint16_t qid, bool enable);
/**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
* Synchronize the used ring from mediated ring to guest, log dirty
* page for each writeable buffer, caller should handle the used
* ring logging before device stop.
* @return
* number of synced used entries on success, -1 on failure
*/
-__rte_experimental
int
rte_vdpa_relay_vring_used(int vid, uint16_t qid, void *vring_m);