static void reset_vring_queue_pair(struct virtio_net *dev, uint32_t qp_idx) { uint32_t base_idx = qp_idx * VIRTIO_QNUM; reset_vring_queue(dev->virtqueue[base_idx + VIRTIO_RXQ], qp_idx); reset_vring_queue(dev->virtqueue[base_idx + VIRTIO_TXQ], qp_idx); }
/* * Reset some variables in device structure, while keeping few * others untouched, such as vid, ifname, nr_vring: they * should be same unless the device is removed. */ void reset_device(struct virtio_net *dev) { uint32_t i; dev->features = 0; dev->protocol_features = 0; dev->flags = 0; for (i = 0; i < dev->nr_vring; i++) reset_vring_queue(dev, i); }