misc: deprecate gbp and its dependents
[vpp.git] / src / vnet / l2 / l2_fwd.c
index f440778..1ee3a53 100644 (file)
@@ -61,8 +61,7 @@ typedef struct
 typedef struct
 {
   /* per-pkt trace data */
-  u8 dst[6];
-  u8 src[6];
+  u8 dst_and_src[12];
   u32 sw_if_index;
   u16 bd_index;
   l2fib_entry_result_t result;
@@ -79,8 +78,9 @@ format_l2fwd_trace (u8 * s, va_list * args)
   s =
     format (s,
            "l2-fwd:   sw_if_index %d dst %U src %U bd_index %d result [0x%llx, %d] %U",
-           t->sw_if_index, format_ethernet_address, t->dst,
-           format_ethernet_address, t->src, t->bd_index, t->result.raw,
+           t->sw_if_index, format_ethernet_address, t->dst_and_src,
+           format_ethernet_address, t->dst_and_src + 6,
+           t->bd_index, t->result.raw,
            t->result.fields.sw_if_index, format_l2fib_entry_result_flags,
            t->result.fields.flags);
   return s;
@@ -156,13 +156,12 @@ l2fwd_process (vlib_main_t * vm,
       /* check l2fib seq num for stale entries */
       if (!l2fib_entry_result_is_set_AGE_NOT (result0))
        {
-         l2fib_seq_num_t in_sn = {.as_u16 = vnet_buffer (b0)->l2.l2fib_sn };
-         l2fib_seq_num_t expected_sn = {
-           .bd = in_sn.bd,
-           .swif = *l2fib_swif_seq_num (result0->fields.sw_if_index),
-         };
-         l2fib_seq_num_valid =
-           expected_sn.as_u16 == result0->fields.sn.as_u16;
+         l2fib_seq_num_t in_sn = vnet_buffer (b0)->l2.l2fib_sn;
+         l2fib_seq_num_t expected_sn = l2_fib_update_seq_num (in_sn,
+                                                              l2_input_seq_num
+                                                              (result0->fields.sw_if_index));
+
+         l2fib_seq_num_valid = expected_sn == result0->fields.sn;
        }
 
       if (PREDICT_FALSE (!l2fib_seq_num_valid))
@@ -216,8 +215,7 @@ l2fwd_process (vlib_main_t * vm,
        * unless some other feature is inserted before uu_flood
        */
       if (vnet_buffer (b0)->l2.feature_bitmap &
-         (L2INPUT_FEAT_UU_FLOOD |
-          L2INPUT_FEAT_UU_FWD | L2INPUT_FEAT_GBP_FWD))
+         (L2INPUT_FEAT_UU_FLOOD | L2INPUT_FEAT_UU_FWD))
        {
          *next0 = vnet_l2_feature_next (b0, msm->feat_next_node_index,
                                         L2INPUT_FEAT_FWD);
@@ -270,10 +268,10 @@ l2fwd_node_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
        vlib_prefetch_buffer_header (b[6], LOAD);
        vlib_prefetch_buffer_header (b[7], LOAD);
 
-       CLIB_PREFETCH (b[4]->data, CLIB_CACHE_LINE_BYTES, LOAD);
-       CLIB_PREFETCH (b[5]->data, CLIB_CACHE_LINE_BYTES, LOAD);
-       CLIB_PREFETCH (b[6]->data, CLIB_CACHE_LINE_BYTES, LOAD);
-       CLIB_PREFETCH (b[7]->data, CLIB_CACHE_LINE_BYTES, LOAD);
+       clib_prefetch_load (b[4]->data);
+       clib_prefetch_load (b[5]->data);
+       clib_prefetch_load (b[6]->data);
+       clib_prefetch_load (b[7]->data);
       }
 
       /* RX interface handles */
@@ -324,7 +322,7 @@ l2fwd_node_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
              l2fwd_trace_t *t = vlib_add_trace (vm, node, b[0], sizeof (*t));
              t->sw_if_index = sw_if_index0;
              t->bd_index = vnet_buffer (b[0])->l2.bd_index;
-             clib_memcpy_fast (t->dst, h0->dst_address,
+             clib_memcpy_fast (t->dst_and_src, h0->dst_address,
                                sizeof (h0->dst_address) +
                                sizeof (h0->src_address));
              t->result = result0;
@@ -334,7 +332,7 @@ l2fwd_node_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
              l2fwd_trace_t *t = vlib_add_trace (vm, node, b[1], sizeof (*t));
              t->sw_if_index = sw_if_index1;
              t->bd_index = vnet_buffer (b[1])->l2.bd_index;
-             clib_memcpy_fast (t->dst, h1->dst_address,
+             clib_memcpy_fast (t->dst_and_src, h1->dst_address,
                                sizeof (h1->dst_address) +
                                sizeof (h1->src_address));
              t->result = result1;
@@ -344,7 +342,7 @@ l2fwd_node_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
              l2fwd_trace_t *t = vlib_add_trace (vm, node, b[2], sizeof (*t));
              t->sw_if_index = sw_if_index2;
              t->bd_index = vnet_buffer (b[2])->l2.bd_index;
-             clib_memcpy_fast (t->dst, h2->dst_address,
+             clib_memcpy_fast (t->dst_and_src, h2->dst_address,
                                sizeof (h2->dst_address) +
                                sizeof (h2->src_address));
              t->result = result2;
@@ -354,7 +352,7 @@ l2fwd_node_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
              l2fwd_trace_t *t = vlib_add_trace (vm, node, b[3], sizeof (*t));
              t->sw_if_index = sw_if_index3;
              t->bd_index = vnet_buffer (b[3])->l2.bd_index;
-             clib_memcpy_fast (t->dst, h3->dst_address,
+             clib_memcpy_fast (t->dst_and_src, h3->dst_address,
                                sizeof (h3->dst_address) +
                                sizeof (h3->src_address));
              t->result = result3;
@@ -391,7 +389,7 @@ l2fwd_node_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
          l2fwd_trace_t *t = vlib_add_trace (vm, node, b[0], sizeof (*t));
          t->sw_if_index = sw_if_index0;
          t->bd_index = vnet_buffer (b[0])->l2.bd_index;
-         clib_memcpy_fast (t->dst, h0->dst_address,
+         clib_memcpy_fast (t->dst_and_src, h0->dst_address,
                            sizeof (h0->dst_address) +
                            sizeof (h0->src_address));
          t->result = result0;
@@ -505,7 +503,7 @@ int_fwd (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd)
     }
 
   /* set the interface flag */
-  if (l2input_intf_config (sw_if_index)->xconnect)
+  if (l2input_intf_config (sw_if_index))
     {
       l2input_intf_bitmap_enable (sw_if_index, L2INPUT_FEAT_XCONNECT, enable);
     }