1 /* Copyright (c) 2019-2021, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
5 * \file congestion_control_vegas.h
6 * \brief Private-ish APIs for the TOR_VEGAS congestion control algorithm
9 #ifndef TOR_CONGESTION_CONTROL_VEGAS_H
10 #define TOR_CONGESTION_CONTROL_VEGAS_H
12 #include "core/or/crypt_path_st.h"
13 #include "core/or/circuit_st.h"
15 extern double cc_stats_vegas_exit_ss_cwnd_ma
;
16 extern double cc_stats_vegas_exit_ss_bdp_ma
;
17 extern double cc_stats_vegas_exit_ss_inc_ma
;
18 extern double cc_stats_vegas_gamma_drop_ma
;
19 extern double cc_stats_vegas_delta_drop_ma
;
20 extern double cc_stats_vegas_ss_csig_blocked_ma
;
21 extern double cc_stats_vegas_csig_blocked_ma
;
22 extern uint64_t cc_stats_vegas_above_delta
;
23 extern uint64_t cc_stats_vegas_above_ss_cwnd_max
;
25 extern double cc_stats_vegas_csig_alpha_ma
;
26 extern double cc_stats_vegas_csig_beta_ma
;
27 extern double cc_stats_vegas_csig_delta_ma
;
29 extern double cc_stats_vegas_ss_queue_ma
;
30 extern double cc_stats_vegas_queue_ma
;
31 extern double cc_stats_vegas_bdp_ma
;
33 extern uint64_t cc_stats_vegas_below_ss_inc_floor
;
34 extern uint64_t cc_stats_vegas_circ_exited_ss
;
36 /* Processing SENDME cell. */
37 int congestion_control_vegas_process_sendme(struct congestion_control_t
*cc
,
38 const circuit_t
*circ
);
39 void congestion_control_vegas_set_params(struct congestion_control_t
*cc
,
42 /* Private section starts. */
43 #ifdef TOR_CONGESTION_CONTROL_VEGAS_PRIVATE
46 * Unit tests declaractions.
50 #endif /* defined(TOR_UNIT_TESTS) */
52 #endif /* defined(TOR_CONGESTION_CONTROL_VEGAS_PRIVATE) */
54 #endif /* !defined(TOR_CONGESTION_CONTROL_VEGAS_H) */