Loading tests/libqos/virtio-net.c +17 −4 Original line number Diff line number Diff line Loading @@ -27,14 +27,19 @@ static QGuestAllocator *alloc; static void virtio_net_cleanup(QVirtioNet *interface) { qvirtqueue_cleanup(interface->vdev->bus, interface->rx, alloc); qvirtqueue_cleanup(interface->vdev->bus, interface->tx, alloc); int i; for (i = 0; i < interface->n_queues; i++) { qvirtqueue_cleanup(interface->vdev->bus, interface->queues[i], alloc); } g_free(interface->queues); } static void virtio_net_setup(QVirtioNet *interface) { QVirtioDevice *vdev = interface->vdev; uint64_t features; int i; features = qvirtio_get_features(vdev); features &= ~(QVIRTIO_F_BAD_FEATURE | Loading @@ -42,8 +47,16 @@ static void virtio_net_setup(QVirtioNet *interface) (1u << VIRTIO_RING_F_EVENT_IDX)); qvirtio_set_features(vdev, features); interface->rx = qvirtqueue_setup(vdev, alloc, 0); interface->tx = qvirtqueue_setup(vdev, alloc, 1); if (features & (1u << VIRTIO_NET_F_MQ)) { interface->n_queues = qvirtio_config_readw(vdev, 8) * 2; } else { interface->n_queues = 2; } interface->queues = g_new(QVirtQueue *, interface->n_queues); for (i = 0; i < interface->n_queues; i++) { interface->queues[i] = qvirtqueue_setup(vdev, alloc, i); } qvirtio_set_driver_ok(vdev); } Loading tests/libqos/virtio-net.h +2 −2 Original line number Diff line number Diff line Loading @@ -26,8 +26,8 @@ typedef struct QVirtioNetDevice QVirtioNetDevice; struct QVirtioNet { QVirtioDevice *vdev; QVirtQueue *rx; QVirtQueue *tx; int n_queues; QVirtQueue **queues; }; struct QVirtioNetPCI { Loading tests/virtio-net-test.c +3 −3 Original line number Diff line number Diff line Loading @@ -136,8 +136,8 @@ static void send_recv_test(void *obj, void *data, QGuestAllocator *t_alloc) { QVirtioNet *net_if = obj; QVirtioDevice *dev = net_if->vdev; QVirtQueue *rx = net_if->rx; QVirtQueue *tx = net_if->tx; QVirtQueue *rx = net_if->queues[0]; QVirtQueue *tx = net_if->queues[1]; int *sv = data; rx_test(dev, t_alloc, rx, sv[0]); Loading @@ -148,7 +148,7 @@ static void stop_cont_test(void *obj, void *data, QGuestAllocator *t_alloc) { QVirtioNet *net_if = obj; QVirtioDevice *dev = net_if->vdev; QVirtQueue *rx = net_if->rx; QVirtQueue *rx = net_if->queues[0]; int *sv = data; rx_stop_cont_test(dev, t_alloc, rx, sv[0]); Loading Loading
tests/libqos/virtio-net.c +17 −4 Original line number Diff line number Diff line Loading @@ -27,14 +27,19 @@ static QGuestAllocator *alloc; static void virtio_net_cleanup(QVirtioNet *interface) { qvirtqueue_cleanup(interface->vdev->bus, interface->rx, alloc); qvirtqueue_cleanup(interface->vdev->bus, interface->tx, alloc); int i; for (i = 0; i < interface->n_queues; i++) { qvirtqueue_cleanup(interface->vdev->bus, interface->queues[i], alloc); } g_free(interface->queues); } static void virtio_net_setup(QVirtioNet *interface) { QVirtioDevice *vdev = interface->vdev; uint64_t features; int i; features = qvirtio_get_features(vdev); features &= ~(QVIRTIO_F_BAD_FEATURE | Loading @@ -42,8 +47,16 @@ static void virtio_net_setup(QVirtioNet *interface) (1u << VIRTIO_RING_F_EVENT_IDX)); qvirtio_set_features(vdev, features); interface->rx = qvirtqueue_setup(vdev, alloc, 0); interface->tx = qvirtqueue_setup(vdev, alloc, 1); if (features & (1u << VIRTIO_NET_F_MQ)) { interface->n_queues = qvirtio_config_readw(vdev, 8) * 2; } else { interface->n_queues = 2; } interface->queues = g_new(QVirtQueue *, interface->n_queues); for (i = 0; i < interface->n_queues; i++) { interface->queues[i] = qvirtqueue_setup(vdev, alloc, i); } qvirtio_set_driver_ok(vdev); } Loading
tests/libqos/virtio-net.h +2 −2 Original line number Diff line number Diff line Loading @@ -26,8 +26,8 @@ typedef struct QVirtioNetDevice QVirtioNetDevice; struct QVirtioNet { QVirtioDevice *vdev; QVirtQueue *rx; QVirtQueue *tx; int n_queues; QVirtQueue **queues; }; struct QVirtioNetPCI { Loading
tests/virtio-net-test.c +3 −3 Original line number Diff line number Diff line Loading @@ -136,8 +136,8 @@ static void send_recv_test(void *obj, void *data, QGuestAllocator *t_alloc) { QVirtioNet *net_if = obj; QVirtioDevice *dev = net_if->vdev; QVirtQueue *rx = net_if->rx; QVirtQueue *tx = net_if->tx; QVirtQueue *rx = net_if->queues[0]; QVirtQueue *tx = net_if->queues[1]; int *sv = data; rx_test(dev, t_alloc, rx, sv[0]); Loading @@ -148,7 +148,7 @@ static void stop_cont_test(void *obj, void *data, QGuestAllocator *t_alloc) { QVirtioNet *net_if = obj; QVirtioDevice *dev = net_if->vdev; QVirtQueue *rx = net_if->rx; QVirtQueue *rx = net_if->queues[0]; int *sv = data; rx_stop_cont_test(dev, t_alloc, rx, sv[0]); Loading