| 19 | */ |
| 20 | |
| 21 | void |
| 22 | vs_vhost_net_setup(struct vhost_dev *dev) |
| 23 | { |
| 24 | uint16_t i; |
| 25 | int vid = dev->vid; |
| 26 | struct vhost_queue *queue; |
| 27 | int ret; |
| 28 | |
| 29 | RTE_LOG(INFO, VHOST_CONFIG, |
| 30 | "setting builtin vhost-user net driver\n"); |
| 31 | |
| 32 | rte_vhost_get_negotiated_features(vid, &dev->features); |
| 33 | if (dev->features & (1 << VIRTIO_NET_F_MRG_RXBUF)) |
| 34 | dev->hdr_len = sizeof(struct virtio_net_hdr_mrg_rxbuf); |
| 35 | else |
| 36 | dev->hdr_len = sizeof(struct virtio_net_hdr); |
| 37 | |
| 38 | ret = rte_vhost_get_mem_table(vid, &dev->mem); |
| 39 | if (ret < 0) { |
| 40 | RTE_LOG(ERR, VHOST_CONFIG, "Failed to get " |
| 41 | "VM memory layout for device(%d)\n", vid); |
| 42 | return; |
| 43 | } |
| 44 | |
| 45 | dev->nr_vrings = rte_vhost_get_vring_num(vid); |
| 46 | for (i = 0; i < dev->nr_vrings; i++) { |
| 47 | queue = &dev->queues[i]; |
| 48 | |
| 49 | queue->last_used_idx = 0; |
| 50 | queue->last_avail_idx = 0; |
| 51 | rte_vhost_get_vhost_vring(vid, i, &queue->vr); |
| 52 | } |
| 53 | } |
| 54 | |
| 55 | void |
| 56 | vs_vhost_net_remove(struct vhost_dev *dev) |
no test coverage detected