X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Finterface.h;h=744496cdd5df67c224c8daefb67db5939902b628;hb=f09d655101d2400df91d2a388168b925eea0dc01;hp=8424b71c54594ea628ec89c2c0275c317760a199;hpb=5b3f523918932793254b6313f78659fe0ed6320e;p=vpp.git diff --git a/src/vnet/interface.h b/src/vnet/interface.h index 8424b71c545..744496cdd5d 100644 --- a/src/vnet/interface.h +++ b/src/vnet/interface.h @@ -229,6 +229,7 @@ typedef struct _vnet_device_class /* Error strings indexed by error code for this node. */ char **tx_function_error_strings; + vl_counter_t *tx_function_error_counters; /* Number of error codes used by this node. */ u32 tx_function_n_errors; @@ -330,7 +331,7 @@ static __clib_unused vnet_device_class_t __clib_unused_##x r->next_registration = devclass.tx_fn_registrations; \ devclass.tx_fn_registrations = r; \ } \ - uword CLIB_CPU_OPTIMIZED CLIB_MARCH_SFX (devclass##_tx_fn) + uword CLIB_MARCH_SFX (devclass##_tx_fn) /** * Link Type: A description of the protocol of packets on the link. @@ -603,18 +604,12 @@ typedef struct typedef struct vnet_hw_interface_t { CLIB_CACHE_LINE_ALIGN_MARK (cacheline0); - /* Interface name. */ - u8 *name; - /* flags */ vnet_hw_interface_flags_t flags; /* capabilities flags */ vnet_hw_interface_capabilities_t caps; - /* link speed in kbps */ - u32 link_speed; - /* Hardware address as vector. Zero (e.g. zero-length vector) if no address for this class (e.g. PPP). */ u8 *hw_address; @@ -623,6 +618,9 @@ typedef struct vnet_hw_interface_t /* NAME.{output,tx} nodes for this interface. */ u32 output_node_index, tx_node_index; + /* interface-output-arc-end node next index for tx node */ + u32 if_out_arc_end_node_next_index; + /* (dev_class, dev_instance) uniquely identifies hw interface. */ u32 dev_class_index; u32 dev_instance; @@ -639,6 +637,12 @@ typedef struct vnet_hw_interface_t CLIB_CACHE_LINE_ALIGN_MARK (cacheline1); + /* Interface name. */ + u8 *name; + + /* link speed in kbps */ + u32 link_speed; + /* Next index in interface-output node for this interface used by node function vnet_per_buffer_interface_output() */ u32 output_node_next_index; @@ -992,6 +996,10 @@ typedef struct /* feature_arc_index */ u8 output_feature_arc_index; + + /* fast lookup tables */ + u32 *hw_if_index_by_sw_if_index; + u16 *if_out_arc_end_next_index_by_sw_if_index; } vnet_interface_main_t; static inline void @@ -1032,11 +1040,13 @@ typedef struct u8 free_data; u32 sw_if_index; int filter; + vlib_error_t drop_err; } vnet_pcap_dispatch_trace_args_t; int vnet_pcap_dispatch_trace_configure (vnet_pcap_dispatch_trace_args_t *); extern vlib_node_registration_t vnet_interface_output_node; +extern vlib_node_registration_t vnet_interface_output_arc_end_node; #endif /* included_vnet_interface_h */