Lines Matching refs:vdpasim

58 	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()
95 if (is_broadcast_ether_addr(vdpasim->buffer + hdr_len) || in receive_filter()
96 is_multicast_ether_addr(vdpasim->buffer + hdr_len)) in receive_filter()
98 if (!strncmp(vdpasim->buffer + hdr_len, vio_config->mac, ETH_ALEN)) in receive_filter()
104 static virtio_net_ctrl_ack vdpasim_handle_ctrl_mac(struct vdpasim *vdpasim, in vdpasim_handle_ctrl_mac() argument
107 struct virtio_net_config *vio_config = vdpasim->config; in vdpasim_handle_ctrl_mac()
108 struct vdpasim_virtqueue *cvq = &vdpasim->vqs[2]; in vdpasim_handle_ctrl_mac()
126 static void vdpasim_handle_cvq(struct vdpasim *vdpasim) in vdpasim_handle_cvq() argument
128 struct vdpasim_virtqueue *cvq = &vdpasim->vqs[2]; in vdpasim_handle_cvq()
129 struct vdpasim_net *net = sim_to_net(vdpasim); in vdpasim_handle_cvq()
136 if (!(vdpasim->features & (1ULL << VIRTIO_NET_F_CTRL_VQ))) in vdpasim_handle_cvq()
159 status = vdpasim_handle_ctrl_mac(vdpasim, ctrl.cmd); in vdpasim_handle_cvq()
197 struct vdpasim *vdpasim = container_of(work, struct vdpasim, work); in vdpasim_net_work() local
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 spin_lock(&vdpasim->lock); 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()
230 vdpasim->buffer, in vdpasim_net_work()
235 if (!receive_filter(vdpasim, read)) { in vdpasim_net_work()
250 vdpasim->buffer, read); in vdpasim_net_work()
263 schedule_work(&vdpasim->work); in vdpasim_net_work()
269 spin_unlock(&vdpasim->lock); in vdpasim_net_work()
286 static int vdpasim_net_get_stats(struct vdpasim *vdpasim, u16 idx, in vdpasim_net_get_stats() argument
290 struct vdpasim_net *net = sim_to_net(vdpasim); in vdpasim_net_get_stats()
411 static void vdpasim_net_get_config(struct vdpasim *vdpasim, void *config) in vdpasim_net_get_config() argument
415 net_config->status = cpu_to_vdpasim16(vdpasim, VIRTIO_NET_S_LINK_UP); in vdpasim_net_get_config()
418 static void vdpasim_net_setup_config(struct vdpasim *vdpasim, in vdpasim_net_setup_config() argument
421 struct virtio_net_config *vio_config = vdpasim->config; in vdpasim_net_setup_config()
426 vio_config->mtu = cpu_to_vdpasim16(vdpasim, config->net.mtu); in vdpasim_net_setup_config()
429 vio_config->mtu = cpu_to_vdpasim16(vdpasim, 1500); in vdpasim_net_setup_config()
446 struct vdpasim *simdev; in vdpasim_net_dev_add()
489 struct vdpasim *simdev = container_of(dev, struct vdpasim, vdpa); in vdpasim_net_dev_del()