diff options
author | Dave Barach <dave@barachs.net> | 2018-03-20 08:49:02 -0400 |
---|---|---|
committer | Damjan Marion <dmarion.lists@gmail.com> | 2018-03-22 13:59:43 +0000 |
commit | 32f4e18c59f368e9c43f4483de12353280c2149b (patch) | |
tree | 36ade0413bbb5389993202018077eaaf04e9eb72 /src/vnet/devices | |
parent | 0bbe57636732d1eade17c3fe881864d33451cf11 (diff) |
Avoid atomic ops when polling queues
Change-Id: I31c6a0a1d11b5b12d8a5c32c29fea9618b1a53d4
Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'src/vnet/devices')
-rw-r--r-- | src/vnet/devices/devices.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/vnet/devices/devices.h b/src/vnet/devices/devices.h index c303cb67b40..ac5be229b76 100644 --- a/src/vnet/devices/devices.h +++ b/src/vnet/devices/devices.h @@ -153,10 +153,11 @@ vnet_device_input_set_interrupt_pending (vnet_main_t * vnm, u32 hw_if_index, vlib_node_set_interrupt_pending (vm, hw->input_node_index); } -#define foreach_device_and_queue(var,vec) \ - for (var = (vec); var < vec_end (vec); var++) \ - if (clib_smp_swap (&((var)->interrupt_pending), 0) || \ - var->mode == VNET_HW_INTERFACE_RX_MODE_POLLING) +#define foreach_device_and_queue(var,vec) \ + for (var = (vec); var < vec_end (vec); var++) \ + if ((var->mode == VNET_HW_INTERFACE_RX_MODE_POLLING) \ + || clib_smp_swap (&((var)->interrupt_pending), 0)) + #endif /* included_vnet_vnet_device_h */ |