ethernet: fix dmac check avx2 loop condition 68/21768/1
authorMatthew Smith <mgsmith@netgate.com>
Tue, 3 Sep 2019 21:45:33 +0000 (16:45 -0500)
committerDamjan Marion <dmarion@me.com>
Wed, 4 Sep 2019 09:57:04 +0000 (09:57 +0000)
In eth_input_process_frame(), a loop which checks the destination
MAC address of received packets had a different condition for avx2
than it did for the non-avx2 version of the loop. It could result
in one unnecessary execution of the loop body after all packets
had been processed.

Type: fix
Fixes: 8d6f34e2b1cbfde5702e88686631527d5e1e10a0

Change-Id: Ib673f45917a0dea461987fdc8f0ca318b749fb1a
Signed-off-by: Matthew Smith <mgsmith@netgate.com>
(cherry picked from commit a6d4e3135b70db1b1df3f8852e1e229d13c24e72)

src/vnet/ethernet/node.c

index 38c596e..615466b 100755 (executable)
@@ -717,7 +717,7 @@ eth_input_process_frame (vlib_main_t * vm, vlib_node_runtime_t * node,
       u64x4 igbit4 = u64x4_splat (igbit);
       u64x4 mask4 = u64x4_splat (mask);
       u64x4 hwaddr4 = u64x4_splat (hwaddr);
-      while (n_left >= 0)
+      while (n_left > 0)
        {
          u64x4 r0, r1;
          r0 = u64x4_load_unaligned (dmac + 0) & mask4;