This adds infrastructure required for supporting multiple ring formats. The idea is as follows: we convert descriptors to an independent format first, and process that converting to iov later. The point is that we have a tight loop that fetches descriptors, which is good for cache utilization. This will also allow all kind of batching tricks - e.g. it seems possible to keep SMAP disabled while we are fetching multiple descriptors. This seems to perform exactly the same as the original code already based on a microbenchmark. Lightly tested. More testing would be very much appreciated. To use new code: echo 1 > /sys/module/vhost_test/parameters/newcode or echo 1 > /sys/module/vhost_net/parameters/newcode Changes from v2: - fixed indirect descriptor batching Changes from v1: - typo fixes Michael S. Tsirkin (4): vhost: option to fetch descriptors through an independent struct vhost/test: add an option to test new code vhost: batching fetches vhost/net: add an option to test new code drivers/vhost/net.c | 32 +++- drivers/vhost/test.c | 19 ++- drivers/vhost/vhost.c | 340 +++++++++++++++++++++++++++++++++++++++++- drivers/vhost/vhost.h | 20 ++- 4 files changed, 397 insertions(+), 14 deletions(-) -- MST