diff options
author | Damjan Marion <damarion@cisco.com> | 2020-10-31 22:47:01 +0100 |
---|---|---|
committer | Matthew Smith <mgsmith@netgate.com> | 2020-11-05 16:33:48 +0000 |
commit | 587f9130424fd451e4ba823240d02f655fb197d1 (patch) | |
tree | 408f36e2a4604f160e1dade5445662287d0ea25e /src/vnet/devices | |
parent | 6178bdafa6a318d50cc8ad82f07c6c798c7024ef (diff) |
virtio: move retry logic to outer function
Improves compile time....
Type: improvement
Change-Id: I310a2e55e5e488a953d65fd065f7795a43d2e9a7
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/vnet/devices')
-rw-r--r-- | src/vnet/devices/virtio/device.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/vnet/devices/virtio/device.c b/src/vnet/devices/virtio/device.c index fe943a9b6d7..29b38a2ed22 100644 --- a/src/vnet/devices/virtio/device.c +++ b/src/vnet/devices/virtio/device.c @@ -552,11 +552,6 @@ virtio_interface_tx_gso_inline (vlib_main_t * vm, vlib_node_runtime_t * node, u16 sz = vring->size; u16 mask = sz - 1; u16 n_vectors = n_left; - u16 retry_count = 2; - -retry: - /* free consumed buffers */ - virtio_free_used_device_desc (vm, vring, node->node_index); used = vring->desc_in_use; next = vring->desc_next; @@ -645,9 +640,6 @@ retry: virtio_kick (vm, vring, vif); } - if (n_left && retry_count--) - goto retry; - return n_left; } @@ -701,6 +693,12 @@ VNET_DEVICE_CLASS_TX_FN (virtio_device_class) (vlib_main_t * vm, buffers = to; } + u16 retry_count = 2; + +retry: + /* free consumed buffers */ + virtio_free_used_device_desc (vm, vring, node->node_index); + if (vif->type == VIRTIO_IF_TYPE_TAP) n_left = virtio_interface_tx_inline (vm, node, vif, vring, VIRTIO_IF_TYPE_TAP, buffers, n_left); @@ -713,6 +711,9 @@ VNET_DEVICE_CLASS_TX_FN (virtio_device_class) (vlib_main_t * vm, else ASSERT (0); + if (n_left && retry_count--) + goto retry; + if (vif->packet_buffering && n_left) { u16 n_buffered = |