X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fpolicer%2Fpolicer.h;h=f5b6c0d3b311cfe5136dba9eacb718db408fdd5b;hb=e5a3ae017;hp=8e2d7c79b7cb4cc2e76620392e78e795f58d5426;hpb=7cd468a3d7dee7d6c92f69a0bb7061ae208ec727;p=vpp.git diff --git a/src/vnet/policer/policer.h b/src/vnet/policer/policer.h index 8e2d7c79b7c..f5b6c0d3b31 100644 --- a/src/vnet/policer/policer.h +++ b/src/vnet/policer/policer.h @@ -15,6 +15,8 @@ #ifndef __included_policer_h__ #define __included_policer_h__ +#include + #include #include @@ -24,11 +26,11 @@ typedef struct { /* policer pool, aligned */ - policer_read_response_type_st *policers; + policer_t *policers; /* config + template h/w policer instance parallel pools */ - sse2_qos_pol_cfg_params_st *configs; - policer_read_response_type_st *policer_templates; + qos_pol_cfg_params_st *configs; + policer_t *policer_templates; /* Config by name hash */ uword *policer_config_by_name; @@ -37,64 +39,40 @@ typedef struct uword *policer_index_by_name; /* Policer by sw_if_index vector */ - u32 *policer_index_by_sw_if_index; + u32 *policer_index_by_sw_if_index[VLIB_N_RX_TX]; /* convenience */ vlib_main_t *vlib_main; vnet_main_t *vnet_main; + + vlib_log_class_t log_class; + + /* frame queue for thread handoff */ + u32 fq_index[VLIB_N_RX_TX]; + + u16 msg_id_base; } vnet_policer_main_t; -vnet_policer_main_t vnet_policer_main; +extern vnet_policer_main_t vnet_policer_main; -typedef enum -{ - VNET_POLICER_INDEX_BY_SW_IF_INDEX, - VNET_POLICER_INDEX_BY_OPAQUE, - VNET_POLICER_INDEX_BY_EITHER, -} vnet_policer_index_t; +extern vlib_combined_counter_main_t policer_counters[]; + +extern vlib_node_registration_t policer_input_node; +extern vlib_node_registration_t policer_output_node; typedef enum { - VNET_POLICER_NEXT_TRANSMIT, VNET_POLICER_NEXT_DROP, + VNET_POLICER_NEXT_HANDOFF, VNET_POLICER_N_NEXT, } vnet_policer_next_t; -#define foreach_vnet_dscp \ - _(0 , CS0, "CS0") \ - _(8 , CS1, "CS1") \ - _(10, AF11, "AF11") \ - _(12, AF12, "AF12") \ - _(14, AF13, "AF13") \ - _(16, CS2, "CS2") \ - _(18, AF21, "AF21") \ - _(20, AF22, "AF22") \ - _(22, AF23, "AF23") \ - _(24, CS3, "CS3") \ - _(26, AF31, "AF31") \ - _(28, AF32, "AF32") \ - _(30, AF33, "AF33") \ - _(32, CS4, "CS4") \ - _(34, AF41, "AF41") \ - _(36, AF42, "AF42") \ - _(38, AF43, "AF43") \ - _(40, CS5, "CS5") \ - _(46, EF, "EF") \ - _(48, CS6, "CS6") \ - _(50, CS7, "CS7") - -typedef enum -{ -#define _(v,f,str) VNET_DSCP_##f = v, - foreach_vnet_dscp -#undef _ -} vnet_dscp_t; - u8 *format_policer_instance (u8 * s, va_list * va); -clib_error_t *policer_add_del (vlib_main_t * vm, - u8 * name, - sse2_qos_pol_cfg_params_st * cfg, - u32 * policer_index, u8 is_add); +clib_error_t *policer_add_del (vlib_main_t *vm, u8 *name, + qos_pol_cfg_params_st *cfg, u32 *policer_index, + u8 is_add); +int policer_bind_worker (u8 *name, u32 worker, bool bind); +int policer_input (u8 *name, u32 sw_if_index, vlib_dir_t dir, bool apply); #endif /* __included_policer_h__ */