From e6c3e8f0ee47799c76bdca362c4d75af62aacac3 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Tue, 28 Jul 2020 19:20:40 -0700 Subject: nsim: basic reorder support Reorder delayed packets, i.e., flush instead of delay, with a configured rate. Type: feature Change-Id: Ib1294f5f1c9b6e98a12b1bb0be655e54facfed3a Signed-off-by: Florin Coras --- src/plugins/nsim/nsim.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'src/plugins/nsim/nsim.h') diff --git a/src/plugins/nsim/nsim.h b/src/plugins/nsim/nsim.h index 0ed9b251fbc..7222a96dcb4 100644 --- a/src/plugins/nsim/nsim.h +++ b/src/plugins/nsim/nsim.h @@ -45,11 +45,44 @@ typedef struct CLIB_CACHE_LINE_ALIGN_MARK (pad); } nsim_wheel_t; +typedef struct nsim_node_ctx +{ + vnet_feature_config_main_t *fcm; + f64 expires; + u32 *drop; + u32 *reord; + u16 *reord_nexts; + u8 *action; + u64 n_buffered; + u64 n_loss; +} nsim_node_ctx_t; + +#define foreach_nsm_action \ + _(DROP, "Packet loss") \ + _(REORDER, "Packet reorder") + +enum nsm_action_bit +{ +#define _(sym, str) NSIM_ACTION_##sym##_BIT, + foreach_nsm_action +#undef _ +}; + +typedef enum nsm_action +{ +#define _(sym, str) NSIM_ACTION_##sym = 1 << NSIM_ACTION_##sym##_BIT, + foreach_nsm_action +#undef _ +} nsm_action_e; + typedef struct { /* API message ID base */ u16 msg_id_base; + /* output feature arc index */ + u16 arc_index; + /* Two interfaces, cross-connected with delay */ u32 sw_if_index0, sw_if_index1; u32 output_next_index0, output_next_index1; @@ -68,6 +101,7 @@ typedef struct f64 bandwidth; f64 packet_size; f64 drop_fraction; + f64 reorder_fraction; u32 poll_main_thread; u64 mmap_size; -- cgit 1.2.3-korg