af14759181
We used to use rte_vhost_driver_session_start() to trigger the vhost-user session. It takes no argument, thus it's a global trigger. And it could be problematic. The issue is, currently, rte_vhost_driver_register(path, flags) actually tries to put it into the session loop (by fdset_add). However, it needs a set of APIs to set a vhost-user driver properly: * rte_vhost_driver_register(path, flags); * rte_vhost_driver_set_features(path, features); * rte_vhost_driver_callback_register(path, vhost_device_ops); If a new vhost-user driver is registered after the trigger (think OVS-DPDK that could add a port dynamically from cmdline), the current code will effectively starts the session for the new driver just after the first API rte_vhost_driver_register() is invoked, leaving later calls taking no effect at all. To handle the case properly, this patch introduce a new API, rte_vhost_driver_start(path), to trigger a specific vhost-user driver. To do that, the rte_vhost_driver_register(path, flags) is simplified to create the socket only and let rte_vhost_driver_start(path) to actually put it into the session loop. Meanwhile, the rte_vhost_driver_session_start is removed: we could hide the session thread internally (create the thread if it has not been created). This would also simplify the application. NOTE: the API order in prog guide is slightly adjusted for showing the correct invoke order. Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
48 lines
801 B
Plaintext
48 lines
801 B
Plaintext
DPDK_2.0 {
|
|
global:
|
|
|
|
rte_vhost_dequeue_burst;
|
|
rte_vhost_driver_callback_register;
|
|
rte_vhost_driver_register;
|
|
rte_vhost_enable_guest_notification;
|
|
rte_vhost_enqueue_burst;
|
|
|
|
local: *;
|
|
};
|
|
|
|
DPDK_2.1 {
|
|
global:
|
|
|
|
rte_vhost_driver_unregister;
|
|
|
|
} DPDK_2.0;
|
|
|
|
DPDK_16.07 {
|
|
global:
|
|
|
|
rte_vhost_avail_entries;
|
|
rte_vhost_get_ifname;
|
|
rte_vhost_get_numa_node;
|
|
rte_vhost_get_queue_num;
|
|
|
|
} DPDK_2.1;
|
|
|
|
DPDK_17.05 {
|
|
global:
|
|
|
|
rte_vhost_driver_disable_features;
|
|
rte_vhost_driver_enable_features;
|
|
rte_vhost_driver_get_features;
|
|
rte_vhost_driver_set_features;
|
|
rte_vhost_driver_start;
|
|
rte_vhost_get_mem_table;
|
|
rte_vhost_get_mtu;
|
|
rte_vhost_get_negotiated_features;
|
|
rte_vhost_get_vhost_vring;
|
|
rte_vhost_get_vring_num;
|
|
rte_vhost_gpa_to_vva;
|
|
rte_vhost_log_used_vring;
|
|
rte_vhost_log_write;
|
|
|
|
} DPDK_16.07;
|