vnet: store hw interface speed in kbps instead of using flags
[vpp.git] / src / vnet / feature / feature.h
index ce9e2ca..eb9b7b0 100644 (file)
@@ -99,6 +99,7 @@ typedef struct
 
 extern vnet_feature_main_t feature_main;
 
+#ifndef CLIB_MARCH_VARIANT
 #define VNET_FEATURE_ARC_INIT(x,...)                           \
   __VA_ARGS__ vnet_feature_arc_registration_t vnet_feat_arc_##x;\
 static void __vnet_add_feature_arc_registration_##x (void)     \
@@ -138,6 +139,14 @@ static void __vnet_rm_feature_registration_##x (void)              \
   VLIB_REMOVE_FROM_LINKED_LIST (fm->next_feature, r, next);    \
 }                                                              \
 __VA_ARGS__ vnet_feature_registration_t vnet_feat_##x
+#else
+#define VNET_FEATURE_ARC_INIT(x,...)                           \
+extern vnet_feature_arc_registration_t __clib_unused vnet_feat_arc_##x; \
+static vnet_feature_arc_registration_t __clib_unused __clib_unused_vnet_feat_arc_##x
+#define VNET_FEATURE_INIT(x,...)                               \
+extern vnet_feature_registration_t __clib_unused vnet_feat_##x; \
+static vnet_feature_registration_t __clib_unused __clib_unused_vnet_feat_##x
+#endif
 
 void
 vnet_config_update_feature_count (vnet_feature_main_t * fm, u8 arc,
@@ -221,8 +230,8 @@ vnet_feature_arc_start (u8 arc, u32 sw_if_index, u32 * next0,
 }
 
 static_always_inline void *
-vnet_feature_next_with_data (u32 sw_if_index, u32 * next0,
-                            vlib_buffer_t * b0, u32 n_data_bytes)
+vnet_feature_next_with_data (u32 * next0, vlib_buffer_t * b0,
+                            u32 n_data_bytes)
 {
   vnet_feature_main_t *fm = &feature_main;
   u8 arc = vnet_buffer (b0)->feature_arc_index;
@@ -234,9 +243,9 @@ vnet_feature_next_with_data (u32 sw_if_index, u32 * next0,
 }
 
 static_always_inline void
-vnet_feature_next (u32 sw_if_index, u32 * next0, vlib_buffer_t * b0)
+vnet_feature_next (u32 * next0, vlib_buffer_t * b0)
 {
-  vnet_feature_next_with_data (sw_if_index, next0, b0, 0);
+  vnet_feature_next_with_data (next0, b0, 0);
 }
 
 static_always_inline int
@@ -265,9 +274,7 @@ vnet_feature_start_device_input_x1 (u32 sw_if_index, u32 * next0,
        */
       u16 adv;
 
-      vnet_buffer (b0)->device_input_feat.saved_next_index = *next0;
       adv = device_input_next_node_advance[*next0];
-      vnet_buffer (b0)->device_input_feat.buffer_advance = adv;
       vlib_buffer_advance (b0, -adv);
 
       vnet_buffer (b0)->feature_arc_index = feature_arc_index;
@@ -299,14 +306,10 @@ vnet_feature_start_device_input_x2 (u32 sw_if_index,
        */
       u16 adv;
 
-      vnet_buffer (b0)->device_input_feat.saved_next_index = *next0;
       adv = device_input_next_node_advance[*next0];
-      vnet_buffer (b0)->device_input_feat.buffer_advance = adv;
       vlib_buffer_advance (b0, -adv);
 
-      vnet_buffer (b1)->device_input_feat.saved_next_index = *next1;
       adv = device_input_next_node_advance[*next1];
-      vnet_buffer (b1)->device_input_feat.buffer_advance = adv;
       vlib_buffer_advance (b1, -adv);
 
       vnet_buffer (b0)->feature_arc_index = feature_arc_index;
@@ -346,24 +349,16 @@ vnet_feature_start_device_input_x4 (u32 sw_if_index,
        */
       u16 adv;
 
-      vnet_buffer (b0)->device_input_feat.saved_next_index = *next0;
       adv = device_input_next_node_advance[*next0];
-      vnet_buffer (b0)->device_input_feat.buffer_advance = adv;
       vlib_buffer_advance (b0, -adv);
 
-      vnet_buffer (b1)->device_input_feat.saved_next_index = *next1;
       adv = device_input_next_node_advance[*next1];
-      vnet_buffer (b1)->device_input_feat.buffer_advance = adv;
       vlib_buffer_advance (b1, -adv);
 
-      vnet_buffer (b2)->device_input_feat.saved_next_index = *next2;
       adv = device_input_next_node_advance[*next2];
-      vnet_buffer (b2)->device_input_feat.buffer_advance = adv;
       vlib_buffer_advance (b2, -adv);
 
-      vnet_buffer (b3)->device_input_feat.saved_next_index = *next3;
       adv = device_input_next_node_advance[*next3];
-      vnet_buffer (b3)->device_input_feat.buffer_advance = adv;
       vlib_buffer_advance (b3, -adv);
 
       vnet_buffer (b0)->feature_arc_index = feature_arc_index;
@@ -397,7 +392,8 @@ clib_error_t *vnet_feature_arc_init (vlib_main_t * vm,
                                     vnet_feature_registration_t *
                                     first_reg, char ***feature_nodes);
 
-void vnet_interface_features_show (vlib_main_t * vm, u32 sw_if_index);
+void vnet_interface_features_show (vlib_main_t * vm, u32 sw_if_index,
+                                  int verbose);
 
 #endif /* included_feature_h */