add vlib_prefetch_buffer_data(...) macro
[vpp.git] / src / vnet / ip / ip4_input.c
index 1425786..696c4b6 100644 (file)
@@ -41,6 +41,7 @@
 #include <vnet/ethernet/ethernet.h>
 #include <vnet/ppp/ppp.h>
 #include <vnet/hdlc/hdlc.h>
+#include <vnet/util/throttle.h>
 
 typedef struct
 {
@@ -162,10 +163,10 @@ ip4_input_inline (vlib_main_t * vm,
          vlib_prefetch_buffer_header (b[10], LOAD);
          vlib_prefetch_buffer_header (b[11], LOAD);
 
-         CLIB_PREFETCH (b[4]->data, sizeof (ip4_header_t), LOAD);
-         CLIB_PREFETCH (b[5]->data, sizeof (ip4_header_t), LOAD);
-         CLIB_PREFETCH (b[6]->data, sizeof (ip4_header_t), LOAD);
-         CLIB_PREFETCH (b[7]->data, sizeof (ip4_header_t), LOAD);
+         vlib_prefetch_buffer_data (b[4], LOAD);
+         vlib_prefetch_buffer_data (b[5], LOAD);
+         vlib_prefetch_buffer_data (b[6], LOAD);
+         vlib_prefetch_buffer_data (b[7], LOAD);
        }
 
       vnet_buffer (b[0])->ip.adj_index[VLIB_RX] = ~0;
@@ -390,17 +391,10 @@ ip4_main_loop_enter (vlib_main_t * vm)
   ip4_main_t *im = &ip4_main;
   vlib_thread_main_t *tm = &vlib_thread_main;
   u32 n_vlib_mains = tm->n_vlib_mains;
-  int i;
 
+  throttle_init (&im->arp_throttle, n_vlib_mains, 1e-3);
 
-  vec_validate (im->arp_throttle_bitmaps, n_vlib_mains);
-  vec_validate (im->arp_throttle_seeds, n_vlib_mains);
-  vec_validate (im->arp_throttle_last_seed_change_time, n_vlib_mains);
-
-  for (i = 0; i < n_vlib_mains; i++)
-    vec_validate (im->arp_throttle_bitmaps[i],
-                 (ARP_THROTTLE_BITS / BITS (uword)) - 1);
-  return 0;
+  return (NULL);
 }
 
 VLIB_MAIN_LOOP_ENTER_FUNCTION (ip4_main_loop_enter);