xref: /qemu/include/net/vhost_net.h (revision 38140cc4d9713dc9af78090503105bf9c82b6bff)
1d5970055SMichael S. Tsirkin #ifndef VHOST_NET_H
2d5970055SMichael S. Tsirkin #define VHOST_NET_H
3d5970055SMichael S. Tsirkin 
41422e32dSPaolo Bonzini #include "net/net.h"
51a1bfac9SNikolay Nikolaev #include "hw/virtio/vhost-backend.h"
6d5970055SMichael S. Tsirkin 
746d4d36dSJay Zhou #define VHOST_NET_INIT_FAILED \
846d4d36dSJay Zhou     "vhost-net requested but could not be initialized"
946d4d36dSJay Zhou 
10d5970055SMichael S. Tsirkin struct vhost_net;
11d5970055SMichael S. Tsirkin typedef struct vhost_net VHostNetState;
12d5970055SMichael S. Tsirkin 
1381647a65SNikolay Nikolaev typedef struct VhostNetOptions {
141a1bfac9SNikolay Nikolaev     VhostBackendType backend_type;
1581647a65SNikolay Nikolaev     NetClientState *net_backend;
1669e87b32SJason Wang     uint32_t busyloop_timeout;
1781647a65SNikolay Nikolaev     void *opaque;
1881647a65SNikolay Nikolaev } VhostNetOptions;
1981647a65SNikolay Nikolaev 
20e2051e9eSYuanhan Liu uint64_t vhost_net_get_max_queues(VHostNetState *net);
2181647a65SNikolay Nikolaev struct vhost_net *vhost_net_init(VhostNetOptions *options);
22d5970055SMichael S. Tsirkin 
23a9f98bb5SJason Wang int vhost_net_start(VirtIODevice *dev, NetClientState *ncs, int total_queues);
24a9f98bb5SJason Wang void vhost_net_stop(VirtIODevice *dev, NetClientState *ncs, int total_queues);
25d5970055SMichael S. Tsirkin 
26d5970055SMichael S. Tsirkin void vhost_net_cleanup(VHostNetState *net);
27d5970055SMichael S. Tsirkin 
289a2ba823SCornelia Huck uint64_t vhost_net_get_features(VHostNetState *net, uint64_t features);
299a2ba823SCornelia Huck void vhost_net_ack_features(VHostNetState *net, uint64_t features);
30d5970055SMichael S. Tsirkin 
31*38140cc4SCindy Lu int vhost_net_get_config(struct vhost_net *net,  uint8_t *config,
32*38140cc4SCindy Lu                          uint32_t config_len);
33*38140cc4SCindy Lu 
34*38140cc4SCindy Lu int vhost_net_set_config(struct vhost_net *net, const uint8_t *data,
35*38140cc4SCindy Lu                          uint32_t offset, uint32_t size, uint32_t flags);
36f56a1247SMichael S. Tsirkin bool vhost_net_virtqueue_pending(VHostNetState *net, int n);
37f56a1247SMichael S. Tsirkin void vhost_net_virtqueue_mask(VHostNetState *net, VirtIODevice *dev,
38f56a1247SMichael S. Tsirkin                               int idx, bool mask);
393e866365SThibaut Collet int vhost_net_notify_migration_done(VHostNetState *net, char* mac_addr);
40ed8b4afeSNikolay Nikolaev VHostNetState *get_vhost_net(NetClientState *nc);
417263a0adSChangchun Ouyang 
427263a0adSChangchun Ouyang int vhost_set_vring_enable(NetClientState * nc, int enable);
43a463215bSMarc-André Lureau 
44a463215bSMarc-André Lureau uint64_t vhost_net_get_acked_features(VHostNetState *net);
45a463215bSMarc-André Lureau 
4645a368adSMaxime Coquelin int vhost_net_set_mtu(struct vhost_net *net, uint16_t mtu);
4745a368adSMaxime Coquelin 
48d5970055SMichael S. Tsirkin #endif
49