u32 (*send_space) (transport_connection_t * tc);
u32 (*tx_fifo_offset) (transport_connection_t * tc);
void (*update_time) (f64 time_now, u8 thread_index);
+ void (*flush_data) (transport_connection_t *tconn);
/*
* Connection retrieval
void transport_update_time (f64 time_now, u8 thread_index);
void transport_enable_disable (vlib_main_t * vm, u8 is_en);
+always_inline u32
+transport_elog_track_index (transport_connection_t * tc)
+{
+#if TRANSPORT_DEBUG
+ return tc->elog_track.track_index_plus_one - 1;
+#else
+ return ~0;
+#endif
+}
+
+void transport_connection_tx_pacer_reset (transport_connection_t * tc,
+ u32 rate_bytes_per_sec,
+ u32 initial_bucket, u64 time_now);
/**
* Initialize tx pacer for connection
*
*/
void transport_connection_tx_pacer_init (transport_connection_t * tc,
u32 rate_bytes_per_sec,
- u32 burst_bytes);
+ u32 initial_bucket);
/**
* Update tx pacer pacing rate
*
* @param tc transport connection
* @param time_now current cpu time as returned by @ref clib_cpu_time_now
+ * @param mss transport's mss
*/
-u32 transport_connection_max_tx_burst (transport_connection_t * tc,
- u64 time_now);
+u32 transport_connection_snd_space (transport_connection_t * tc,
+ u64 time_now, u16 mss);
+
+u32 transport_connection_tx_pacer_burst (transport_connection_t * tc,
+ u64 time_now);
/**
* Initialize period for tx pacers
void transport_connection_update_tx_stats (transport_connection_t * tc,
u32 bytes);
+void
+transport_connection_tx_pacer_update_bytes (transport_connection_t * tc,
+ u32 bytes);
+
#endif /* SRC_VNET_SESSION_TRANSPORT_INTERFACE_H_ */
/*