DPDK 21.11.0
rte_vhost_async.h
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2020 Intel Corporation
3 */
4
5#ifndef _RTE_VHOST_ASYNC_H_
6#define _RTE_VHOST_ASYNC_H_
7
8#include "rte_vhost.h"
9
14 void *src_addr;
15 void *dst_addr;
16 size_t len;
17};
18
26 unsigned long nr_segs;
27};
28
34 uintptr_t *src_opaque_data;
36 uintptr_t *dst_opaque_data;
37};
38
59 int32_t (*transfer_data)(int vid, uint16_t queue_id,
60 struct rte_vhost_iov_iter *iov_iter,
61 struct rte_vhost_async_status *opaque_data,
62 uint16_t count);
76 int32_t (*check_completed_copies)(int vid, uint16_t queue_id,
77 struct rte_vhost_async_status *opaque_data,
78 uint16_t max_packets);
79};
80
84enum {
85 RTE_VHOST_ASYNC_INORDER = 1U << 0,
86};
87
92 uint32_t features;
93 uint32_t rsvd[2];
94};
95
110__rte_experimental
111int rte_vhost_async_channel_register(int vid, uint16_t queue_id,
112 struct rte_vhost_async_config config,
113 struct rte_vhost_async_channel_ops *ops);
114
125__rte_experimental
126int rte_vhost_async_channel_unregister(int vid, uint16_t queue_id);
127
146__rte_experimental
147int rte_vhost_async_channel_register_thread_unsafe(int vid, uint16_t queue_id,
148 struct rte_vhost_async_config config,
149 struct rte_vhost_async_channel_ops *ops);
150
165__rte_experimental
166int rte_vhost_async_channel_unregister_thread_unsafe(int vid,
167 uint16_t queue_id);
168
185__rte_experimental
186uint16_t rte_vhost_submit_enqueue_burst(int vid, uint16_t queue_id,
187 struct rte_mbuf **pkts, uint16_t count);
188
205__rte_experimental
206uint16_t rte_vhost_poll_enqueue_completed(int vid, uint16_t queue_id,
207 struct rte_mbuf **pkts, uint16_t count);
208
220__rte_experimental
221int rte_vhost_async_get_inflight(int vid, uint16_t queue_id);
222
241__rte_experimental
242uint16_t rte_vhost_clear_queue_thread_unsafe(int vid, uint16_t queue_id,
243 struct rte_mbuf **pkts, uint16_t count);
244
245#endif /* _RTE_VHOST_ASYNC_H_ */
int32_t(* transfer_data)(int vid, uint16_t queue_id, struct rte_vhost_iov_iter *iov_iter, struct rte_vhost_async_status *opaque_data, uint16_t count)
int32_t(* check_completed_copies)(int vid, uint16_t queue_id, struct rte_vhost_async_status *opaque_data, uint16_t max_packets)
unsigned long nr_segs
struct rte_vhost_iovec * iov