#include <vnet/l2/feat_bitmap.h>
#include <vnet/l2/l2_output.h>
#include <vnet/ethernet/ethernet.h>
+#include <vnet/l2/l2_efp_filter.h>
#include <vppinfra/error.h>
#include <vppinfra/cache.h>
return s;
}
-l2_efp_filter_main_t l2_efp_filter_main;
+extern l2_efp_filter_main_t l2_efp_filter_main;
-static vlib_node_registration_t l2_efp_filter_node;
+#ifndef CLIB_MARCH_VARIANT
+l2_efp_filter_main_t l2_efp_filter_main;
+#endif /* CLIB_MARCH_VARIANT */
#define foreach_l2_efp_filter_error \
_(L2_EFP_FILTER, "L2 EFP filter packets") \
* The post-rewrite check is performed here.
*/
-static uword
-l2_efp_filter_node_fn (vlib_main_t * vm,
- vlib_node_runtime_t * node, vlib_frame_t * frame)
+VLIB_NODE_FN (l2_efp_filter_node) (vlib_main_t * vm,
+ vlib_node_runtime_t * node,
+ vlib_frame_t * frame)
{
u32 n_left_from, *from, *to_next;
l2_efp_filter_next_t next_index;
vlib_prefetch_buffer_header (p4, LOAD);
vlib_prefetch_buffer_header (p5, LOAD);
- CLIB_PREFETCH (p4->data, CLIB_CACHE_LINE_BYTES, STORE);
- CLIB_PREFETCH (p5->data, CLIB_CACHE_LINE_BYTES, STORE);
+ clib_prefetch_store (p4->data);
+ clib_prefetch_store (p5->data);
/*
* Prefetch the input config for the N+1 loop iteration
sw_if_index3 = vnet_buffer (p3)->sw_if_index[VLIB_TX];
/*
* $$$ TODO
- * CLIB_PREFETCH (vec_elt_at_index(l2output_main.configs, sw_if_index2), CLIB_CACHE_LINE_BYTES, LOAD);
- * CLIB_PREFETCH (vec_elt_at_index(l2output_main.configs, sw_if_index3), CLIB_CACHE_LINE_BYTES, LOAD);
+ * clib_prefetch_load (vec_elt_at_index(l2output_main.configs,
+ * sw_if_index2));
+ * clib_prefetch_load (vec_elt_at_index(l2output_main.configs,
+ * sw_if_index3));
*/
}
&main_intf1, &vlan_intf1, &qinq_intf1);
matched0 = eth_identify_subint (hi0,
- b0,
match_flags0,
main_intf0,
vlan_intf0,
&error0, &is_l20);
matched1 = eth_identify_subint (hi1,
- b1,
match_flags1,
main_intf1,
vlan_intf1,
&main_intf0, &vlan_intf0, &qinq_intf0);
matched0 = eth_identify_subint (hi0,
- b0,
match_flags0,
main_intf0,
vlan_intf0,
}
-/* *INDENT-OFF* */
-VLIB_REGISTER_NODE (l2_efp_filter_node,static) = {
- .function = l2_efp_filter_node_fn,
+VLIB_REGISTER_NODE (l2_efp_filter_node) = {
.name = "l2-efp-filter",
.vector_size = sizeof (u32),
.format_trace = format_l2_efp_filter_trace,
[L2_EFP_FILTER_NEXT_DROP] = "error-drop",
},
};
-/* *INDENT-ON* */
-VLIB_NODE_FUNCTION_MULTIARCH (l2_efp_filter_node, l2_efp_filter_node_fn)
- clib_error_t *l2_efp_filter_init (vlib_main_t * vm)
+#ifndef CLIB_MARCH_VARIANT
+clib_error_t *
+l2_efp_filter_init (vlib_main_t * vm)
{
l2_efp_filter_main_t *mp = &l2_efp_filter_main;
* Example of how to disable a Layer 2 efp-filter on a sub-interface:
* @cliexcmd{set interface l2 efp-filter GigabitEthernet0/8/0.200 disable}
?*/
-/* *INDENT-OFF* */
VLIB_CLI_COMMAND (int_l2_efp_filter_cli, static) = {
.path = "set interface l2 efp-filter",
.short_help = "set interface l2 efp-filter <interface> [disable]",
.function = int_l2_efp_filter,
};
-/* *INDENT-ON* */
+#endif /* CLIB_MARCH_VARIANT */
/*
* fd.io coding-style-patch-verification: ON