From: Hugo Landau Date: Mon, 31 Oct 2022 13:51:09 +0000 (+0000) Subject: QUIC Congestion Control: API to determine deadline at which more credit will be available X-Git-Tag: openssl-3.2.0-alpha1~1529 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=97c5c52d6c2c5d13db0cc59b3dbf4d75c40ec3ba;p=thirdparty%2Fopenssl.git QUIC Congestion Control: API to determine deadline at which more credit will be available Reviewed-by: Tomas Mraz Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/19703) --- diff --git a/doc/designs/quic-design/congestion-control.md b/doc/designs/quic-design/congestion-control.md index 231d4ef360b..7881ca98716 100644 --- a/doc/designs/quic-design/congestion-control.md +++ b/doc/designs/quic-design/congestion-control.md @@ -177,6 +177,12 @@ struct ossl_cc_method_st { */ size_t (*get_bytes_in_flight_max)(OSSL_CC_DATA *ccdata); + /* + * Returns the time at which the CC will next release more budget + * for sending, or ossl_time_infinite(). + */ + OSSL_TIME (*get_next_credit_time)(OSSL_CC_DATA *ccdata); + /* * To be called when a packet with retransmittable data was sent. * |num_retransmittable_bytes| is the number of bytes sent diff --git a/include/internal/quic_cc.h b/include/internal/quic_cc.h index 2a702b07313..f056f0dbeef 100644 --- a/include/internal/quic_cc.h +++ b/include/internal/quic_cc.h @@ -81,6 +81,12 @@ typedef struct ossl_cc_method_st { */ uint64_t (*get_bytes_in_flight_max)(OSSL_CC_DATA *ccdata); + /* + * Returns the time at which the CC will next release more budget + * for sending, or ossl_time_infinite(). + */ + OSSL_TIME (*get_next_credit_time)(OSSL_CC_DATA *ccdata); + /* * To be called when a packet with retransmittable data was sent. * |num_retransmittable_bytes| is the number of bytes sent diff --git a/ssl/quic/cc_dummy.c b/ssl/quic/cc_dummy.c index feeb6cb015c..195c4324bf9 100644 --- a/ssl/quic/cc_dummy.c +++ b/ssl/quic/cc_dummy.c @@ -56,6 +56,11 @@ static uint64_t dummy_get_bytes_in_flight_max(OSSL_CC_DATA *cc) return SIZE_MAX; } +static OSSL_TIME dummy_get_next_credit_time(OSSL_CC_DATA *cc_data) +{ + return ossl_time_infinite(); +} + static int dummy_on_data_sent(OSSL_CC_DATA *cc, uint64_t num_retransmittable_bytes) { @@ -99,6 +104,7 @@ const OSSL_CC_METHOD ossl_cc_dummy_method = { dummy_can_send, dummy_get_send_allowance, dummy_get_bytes_in_flight_max, + dummy_get_next_credit_time, dummy_on_data_sent, dummy_on_data_invalidated, dummy_on_data_acked,