MPLS prefetch fixes 27/12327/3
authorNeale Ranns <nranns@cisco.com>
Wed, 2 May 2018 12:15:16 +0000 (05:15 -0700)
committerDamjan Marion <dmarion.lists@gmail.com>
Thu, 3 May 2018 21:21:14 +0000 (21:21 +0000)
Change-Id: I565d79af410825c72f291ab40178883b1bc6f1df
Signed-off-by: Neale Ranns <nranns@cisco.com>
src/vnet/mpls/mpls_input.c
src/vnet/mpls/mpls_lookup.c

index d1881d4..d77fd4c 100644 (file)
@@ -109,11 +109,11 @@ mpls_input_inline (vlib_main_t * vm,
               p2 = vlib_get_buffer (vm, from[2]);
               p3 = vlib_get_buffer (vm, from[3]);
 
-              vlib_prefetch_buffer_header (p2, STORE);
-              vlib_prefetch_buffer_header (p3, STORE);
+              vlib_prefetch_buffer_header (p2, LOAD);
+              vlib_prefetch_buffer_header (p3, LOAD);
 
-              CLIB_PREFETCH (p2->data, sizeof (h0[0]), STORE);
-              CLIB_PREFETCH (p3->data, sizeof (h1[0]), STORE);
+              CLIB_PREFETCH (p2->data, sizeof (h0[0]), LOAD);
+              CLIB_PREFETCH (p3->data, sizeof (h1[0]), LOAD);
           }
 
           bi0 = to_next[0] = from[0];
index 30031e5..b13c65d 100644 (file)
@@ -103,22 +103,22 @@ mpls_lookup (vlib_main_t * vm,
 
            /* Prefetch next iteration. */
           {
-              vlib_buffer_t * p2, * p3, *p4, *p5;
+              vlib_buffer_t *p4, *p5, *p6, *p7;
 
-            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]);
+            p6 = vlib_get_buffer (vm, from[6]);
+            p7 = vlib_get_buffer (vm, from[7]);
 
-            vlib_prefetch_buffer_header (p2, STORE);
-            vlib_prefetch_buffer_header (p3, STORE);
             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 (p2->data, sizeof (h0[0]), STORE);
-            CLIB_PREFETCH (p3->data, sizeof (h0[0]), STORE);
-            CLIB_PREFETCH (p4->data, sizeof (h0[0]), STORE);
-            CLIB_PREFETCH (p5->data, sizeof (h0[0]), STORE);
+            CLIB_PREFETCH (p4->data, sizeof (h0[0]), LOAD);
+            CLIB_PREFETCH (p5->data, sizeof (h0[0]), LOAD);
+            CLIB_PREFETCH (p6->data, sizeof (h0[0]), LOAD);
+            CLIB_PREFETCH (p7->data, sizeof (h0[0]), LOAD);
           }
 
           bi0 = to_next[0] = from[0];
@@ -538,8 +538,8 @@ mpls_load_balance (vlib_main_t * vm,
             vlib_prefetch_buffer_header (p2, STORE);
             vlib_prefetch_buffer_header (p3, STORE);
 
-            CLIB_PREFETCH (p2->data, sizeof (mpls0[0]), STORE);
-            CLIB_PREFETCH (p3->data, sizeof (mpls0[0]), STORE);
+            CLIB_PREFETCH (p2->data, sizeof (mpls0[0]), LOAD);
+            CLIB_PREFETCH (p3->data, sizeof (mpls0[0]), LOAD);
           }
 
           pi0 = to_next[0] = from[0];