Lines Matching refs:vdpasim
57 struct vdpasim vdpasim; member
64 static struct vdpasim_net *sim_to_net(struct vdpasim *vdpasim) in sim_to_net() argument
66 return container_of(vdpasim, struct vdpasim_net, vdpasim); in sim_to_net()
85 static bool receive_filter(struct vdpasim *vdpasim, size_t len) in receive_filter() argument
87 bool modern = vdpasim->features & (1ULL << VIRTIO_F_VERSION_1); in receive_filter()
90 struct virtio_net_config *vio_config = vdpasim->config; in receive_filter()
91 struct vdpasim_net *net = sim_to_net(vdpasim); in receive_filter()
105 static virtio_net_ctrl_ack vdpasim_handle_ctrl_mac(struct vdpasim *vdpasim, in vdpasim_handle_ctrl_mac() argument
108 struct virtio_net_config *vio_config = vdpasim->config; in vdpasim_handle_ctrl_mac()
109 struct vdpasim_virtqueue *cvq = &vdpasim->vqs[2]; in vdpasim_handle_ctrl_mac()
127 static void vdpasim_handle_cvq(struct vdpasim *vdpasim) in vdpasim_handle_cvq() argument
129 struct vdpasim_virtqueue *cvq = &vdpasim->vqs[2]; in vdpasim_handle_cvq()
130 struct vdpasim_net *net = sim_to_net(vdpasim); in vdpasim_handle_cvq()
137 if (!(vdpasim->features & (1ULL << VIRTIO_NET_F_CTRL_VQ))) in vdpasim_handle_cvq()
160 status = vdpasim_handle_ctrl_mac(vdpasim, ctrl.cmd); in vdpasim_handle_cvq()
196 static void vdpasim_net_work(struct vdpasim *vdpasim) in vdpasim_net_work() argument
198 struct vdpasim_virtqueue *txq = &vdpasim->vqs[1]; in vdpasim_net_work()
199 struct vdpasim_virtqueue *rxq = &vdpasim->vqs[0]; in vdpasim_net_work()
200 struct vdpasim_net *net = sim_to_net(vdpasim); in vdpasim_net_work()
206 mutex_lock(&vdpasim->mutex); in vdpasim_net_work()
208 if (!vdpasim->running) in vdpasim_net_work()
211 if (!(vdpasim->status & VIRTIO_CONFIG_S_DRIVER_OK)) in vdpasim_net_work()
214 vdpasim_handle_cvq(vdpasim); in vdpasim_net_work()
234 if (!receive_filter(vdpasim, read)) { in vdpasim_net_work()
262 vdpasim_schedule_work(vdpasim); in vdpasim_net_work()
268 mutex_unlock(&vdpasim->mutex); in vdpasim_net_work()
285 static int vdpasim_net_get_stats(struct vdpasim *vdpasim, u16 idx, in vdpasim_net_get_stats() argument
289 struct vdpasim_net *net = sim_to_net(vdpasim); in vdpasim_net_get_stats()
410 static void vdpasim_net_get_config(struct vdpasim *vdpasim, void *config) in vdpasim_net_get_config() argument
414 net_config->status = cpu_to_vdpasim16(vdpasim, VIRTIO_NET_S_LINK_UP); in vdpasim_net_get_config()
417 static void vdpasim_net_setup_config(struct vdpasim *vdpasim, in vdpasim_net_setup_config() argument
420 struct virtio_net_config *vio_config = vdpasim->config; in vdpasim_net_setup_config()
425 vio_config->mtu = cpu_to_vdpasim16(vdpasim, config->net.mtu); in vdpasim_net_setup_config()
428 vio_config->mtu = cpu_to_vdpasim16(vdpasim, 1500); in vdpasim_net_setup_config()
431 static void vdpasim_net_free(struct vdpasim *vdpasim) in vdpasim_net_free() argument
433 struct vdpasim_net *net = sim_to_net(vdpasim); in vdpasim_net_free()
452 struct vdpasim *simdev; in vdpasim_net_dev_add()
506 struct vdpasim *simdev = container_of(dev, struct vdpasim, vdpa); in vdpasim_net_dev_del()