X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fethernet%2Finterface.c;fp=src%2Fvnet%2Fethernet%2Finterface.c;h=bf2256630f098d3e7e53e72970b5565fdaddc9a2;hb=e13baaa788d852d97e982057f864c839948517d4;hp=46d4203cda1bb6a5ccfd5fd78e61df34fa924062;hpb=af62f93478e760b675bba7aba06b30efd63d12b4;p=vpp.git diff --git a/src/vnet/ethernet/interface.c b/src/vnet/ethernet/interface.c index 46d4203cda1..bf2256630f0 100644 --- a/src/vnet/ethernet/interface.c +++ b/src/vnet/ethernet/interface.c @@ -527,7 +527,7 @@ simulated_ethernet_interface_tx (vlib_main_t * vm, while (n_left_from >= 4) { u32 sw_if_index0, sw_if_index1, sw_if_index2, sw_if_index3; - u32 not_all_match_config; + u32x4 xor_ifx4; /* Prefetch next iteration. */ if (PREDICT_TRUE (n_left_from >= 8)) @@ -544,12 +544,11 @@ simulated_ethernet_interface_tx (vlib_main_t * vm, sw_if_index2 = vnet_buffer (b[2])->sw_if_index[VLIB_TX]; sw_if_index3 = vnet_buffer (b[3])->sw_if_index[VLIB_TX]; - not_all_match_config = (sw_if_index0 ^ sw_if_index1) - ^ (sw_if_index2 ^ sw_if_index3); - not_all_match_config += sw_if_index0 ^ new_rx_sw_if_index; + xor_ifx4 = u32x4_gather (&sw_if_index0, &sw_if_index1, &sw_if_index2, + &sw_if_index3); /* Speed path / expected case: all pkts on the same intfc */ - if (PREDICT_TRUE (not_all_match_config == 0)) + if (PREDICT_TRUE (u32x4_is_all_equal (xor_ifx4, new_rx_sw_if_index))) { next[0] = next_index; next[1] = next_index;