vhost: introduce async enqueue registration API
authorPatrick Fu <patrick.fu@intel.com>
Tue, 7 Jul 2020 05:07:08 +0000 (13:07 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 7 Jul 2020 21:38:28 +0000 (23:38 +0200)
commit78639d54563a42150fe6e85977f06a6db55d3a06
tree1254cdfb6f78a718b7083df32d0379524a8e1d50
parentcd8b4be0136aa77d666cc75b8243eec304afe113
vhost: introduce async enqueue registration API

Performing large memory copies usually takes up a major part of CPU
cycles and becomes the hot spot in vhost-user enqueue operation. To
offload the large copies from CPU to the DMA devices, asynchronous
APIs are introduced, with which the CPU just submits copy jobs to
the DMA but without waiting for its copy completion. Thus, there is
no CPU intervention during data transfer. We can save precious CPU
cycles and improve the overall throughput for vhost-user based
applications. This patch introduces registration/un-registration
APIs for vhost async data enqueue operation. Together with the
registration APIs implementations, data structures and the prototype
of the async callback functions required for async enqueue data path
are also defined.

Signed-off-by: Patrick Fu <patrick.fu@intel.com>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
lib/librte_vhost/Makefile
lib/librte_vhost/meson.build
lib/librte_vhost/rte_vhost.h
lib/librte_vhost/rte_vhost_async.h [new file with mode: 0644]
lib/librte_vhost/rte_vhost_version.map
lib/librte_vhost/socket.c
lib/librte_vhost/vhost.c
lib/librte_vhost/vhost.h
lib/librte_vhost/vhost_user.c