1d5970055SMichael S. Tsirkin #ifndef VHOST_NET_H 2d5970055SMichael S. Tsirkin #define VHOST_NET_H 3d5970055SMichael S. Tsirkin 41422e32dSPaolo Bonzini #include "net/net.h" 5*1a1bfac9SNikolay Nikolaev #include "hw/virtio/vhost-backend.h" 6d5970055SMichael S. Tsirkin 7d5970055SMichael S. Tsirkin struct vhost_net; 8d5970055SMichael S. Tsirkin typedef struct vhost_net VHostNetState; 9d5970055SMichael S. Tsirkin 1081647a65SNikolay Nikolaev typedef struct VhostNetOptions { 11*1a1bfac9SNikolay Nikolaev VhostBackendType backend_type; 1281647a65SNikolay Nikolaev NetClientState *net_backend; 1381647a65SNikolay Nikolaev void *opaque; 1481647a65SNikolay Nikolaev bool force; 1581647a65SNikolay Nikolaev } VhostNetOptions; 1681647a65SNikolay Nikolaev 1781647a65SNikolay Nikolaev struct vhost_net *vhost_net_init(VhostNetOptions *options); 18d5970055SMichael S. Tsirkin 195430a28fSmst@redhat.com bool vhost_net_query(VHostNetState *net, VirtIODevice *dev); 20a9f98bb5SJason Wang int vhost_net_start(VirtIODevice *dev, NetClientState *ncs, int total_queues); 21a9f98bb5SJason Wang void vhost_net_stop(VirtIODevice *dev, NetClientState *ncs, int total_queues); 22d5970055SMichael S. Tsirkin 23d5970055SMichael S. Tsirkin void vhost_net_cleanup(VHostNetState *net); 24d5970055SMichael S. Tsirkin 25d5970055SMichael S. Tsirkin unsigned vhost_net_get_features(VHostNetState *net, unsigned features); 26d5970055SMichael S. Tsirkin void vhost_net_ack_features(VHostNetState *net, unsigned features); 27d5970055SMichael S. Tsirkin 28f56a1247SMichael S. Tsirkin bool vhost_net_virtqueue_pending(VHostNetState *net, int n); 29f56a1247SMichael S. Tsirkin void vhost_net_virtqueue_mask(VHostNetState *net, VirtIODevice *dev, 30f56a1247SMichael S. Tsirkin int idx, bool mask); 31ed8b4afeSNikolay Nikolaev VHostNetState *get_vhost_net(NetClientState *nc); 32d5970055SMichael S. Tsirkin #endif 33