fib: fix mpls label dpo packets prefetching 77/39577/1
authorVladislav Grishenko <themiron@yandex-team.ru>
Mon, 10 Apr 2023 13:02:12 +0000 (18:02 +0500)
committerVladislav Grishenko <themiron@mail.ru>
Sun, 24 Sep 2023 22:11:30 +0000 (03:11 +0500)
Four packets are batched after 696e88da9799056036f329676213f3c0c0a1db9c,
so prefetch is required for the next 4-7 packets, not for 2-5.

Type: fix
Signed-off-by: Vladislav Grishenko <themiron@yandex-team.ru>
Change-Id: I4ab01e66c3b446caf113a154915473e96ab32198

src/vnet/dpo/mpls_label_dpo.c

index 7856f05..898ea92 100644 (file)
@@ -398,22 +398,22 @@ mpls_label_imposition_inline (vlib_main_t * vm,
 
             /* Prefetch next iteration. */
             {
-                vlib_buffer_t * p2, * p3, *p4, *p5;
-
-                p2 = vlib_get_buffer (vm, from[2]);
-                p3 = vlib_get_buffer (vm, from[3]);
-                p4 = vlib_get_buffer (vm, from[4]);
-                p5 = vlib_get_buffer (vm, from[5]);
-
-                vlib_prefetch_buffer_header (p2, STORE);
-                vlib_prefetch_buffer_header (p3, STORE);
-                vlib_prefetch_buffer_header (p4, STORE);
-                vlib_prefetch_buffer_header (p5, STORE);
-
-                CLIB_PREFETCH (p2->data, sizeof (hdr0[0]), STORE);
-                CLIB_PREFETCH (p3->data, sizeof (hdr0[0]), STORE);
-                CLIB_PREFETCH (p4->data, sizeof (hdr0[0]), STORE);
-                CLIB_PREFETCH (p5->data, sizeof (hdr0[0]), STORE);
+             vlib_buffer_t *p4, *p5, *p6, *p7;
+
+             p4 = vlib_get_buffer (vm, from[4]);
+             p5 = vlib_get_buffer (vm, from[5]);
+             p6 = vlib_get_buffer (vm, from[6]);
+             p7 = vlib_get_buffer (vm, from[7]);
+
+             vlib_prefetch_buffer_header (p4, STORE);
+             vlib_prefetch_buffer_header (p5, STORE);
+             vlib_prefetch_buffer_header (p6, STORE);
+             vlib_prefetch_buffer_header (p7, STORE);
+
+             CLIB_PREFETCH (p4->data, sizeof (hdr0[0]), STORE);
+             CLIB_PREFETCH (p5->data, sizeof (hdr0[0]), STORE);
+             CLIB_PREFETCH (p6->data, sizeof (hdr0[0]), STORE);
+             CLIB_PREFETCH (p7->data, sizeof (hdr0[0]), STORE);
             }
 
             from += 4;