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 
84 enum {
85  RTE_VHOST_ASYNC_INORDER = 1U << 0,
86 };
87 
92  uint32_t features;
93  uint32_t rsvd[2];
94 };
95 
110 __rte_experimental
111 int 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
126 int rte_vhost_async_channel_unregister(int vid, uint16_t queue_id);
127 
146 __rte_experimental
147 int 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
166 int rte_vhost_async_channel_unregister_thread_unsafe(int vid,
167  uint16_t queue_id);
168 
185 __rte_experimental
186 uint16_t rte_vhost_submit_enqueue_burst(int vid, uint16_t queue_id,
187  struct rte_mbuf **pkts, uint16_t count);
188 
205 __rte_experimental
206 uint16_t rte_vhost_poll_enqueue_completed(int vid, uint16_t queue_id,
207  struct rte_mbuf **pkts, uint16_t count);
208 
220 __rte_experimental
221 int rte_vhost_async_get_inflight(int vid, uint16_t queue_id);
222 
241 __rte_experimental
242 uint16_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)
struct rte_vhost_iovec * iov
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