Loading...
Searching...
No Matches
reno.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2021 Freie Universität Berlin
3 *
4 * This file is subject to the terms and conditions of the GNU Lesser
5 * General Public License v2.1. See the file LICENSE in the top level
6 * directory for more details.
7 */
8
9#pragma once
10
25
26#include <stdint.h>
27
28#include "congure.h"
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
38
166
192
204 const congure_reno_snd_consts_t *consts);
205
228
237
248 unsigned msg_size);
249
257
266
275 congure_snd_msg_t *msgs);
276
285 congure_snd_msg_t *msgs);
286
295 congure_snd_ack_t *ack);
296
306
307#ifdef __cplusplus
308}
309#endif
310
void congure_reno_snd_report_msgs_lost(congure_snd_t *c, congure_snd_msg_t *msgs)
Use to override congure_snd_driver_t::report_msgs_lost.
void congure_reno_snd_report_ecn_ce(congure_snd_t *c, ztimer_now_t time)
Use to override congure_snd_driver_t::report_ecn_ce.
void congure_reno_snd_report_msg_acked(congure_snd_t *c, congure_snd_msg_t *msg, congure_snd_ack_t *ack)
Use to override congure_snd_driver_t::report_msg_acked.
void congure_reno_snd_init(congure_snd_t *c, void *ctx)
Use to override congure_snd_driver_t::init.
void congure_reno_snd_report_msgs_timeout(congure_snd_t *c, congure_snd_msg_t *msgs)
Use to override congure_snd_driver_t::report_msgs_timeout.
void congure_reno_snd_report_msg_sent(congure_snd_t *c, unsigned msg_size)
Use to override congure_snd_driver_t::report_msg_sent.
void congure_reno_snd_report_msg_discarded(congure_snd_t *c, unsigned msg_size)
Use to override congure_snd_driver_t::report_msg_discarded.
int32_t congure_reno_snd_inter_msg_interval(congure_snd_t *c, unsigned msg_size)
Use to override congure_snd_driver_t::inter_msg_interval.
void congure_reno_set_mss(congure_reno_snd_t *c, congure_wnd_size_t mss)
Set sender maximum segment size.
void congure_reno_snd_setup(congure_reno_snd_t *c, const congure_reno_snd_consts_t *consts)
Set-up CongURE implementation of TCP Reno driver and constants.
struct congure_reno_snd congure_reno_snd_t
Forward declaration of state object for CongURE Reno.
Definition reno.h:37
uint16_t congure_wnd_size_t
Define type for window size to allow for possible window size scaling.
Definition congure.h:41
uint32_t ztimer_now_t
type for ztimer_now() result
Definition ztimer.h:311
Constants for the congestion control.
Definition reno.h:60
congure_wnd_size_t init_ssthresh
Initial slow-start threshold in initiator-defined units.
Definition reno.h:159
void(* fr)(congure_reno_snd_t *c)
Callback to enter and perform fast retransmit.
Definition reno.h:67
congure_wnd_size_t cwnd_upper
Initial upper bound for initial window initiator-defined units.
Definition reno.h:146
void(* fr_cwnd_dec)(congure_reno_snd_t *c)
Callback to reset congestion window when entering fast recovery.
Definition reno.h:129
void(* ss_cwnd_inc)(congure_reno_snd_t *c)
Callback to increase congestion window in slow start.
Definition reno.h:93
void(* ca_cwnd_inc)(congure_reno_snd_t *c)
Callback to increase congestion window in congestion avoidance.
Definition reno.h:111
uint8_t frthresh
Threshold for duplicate ACKs to go into Fast Retransmit.
Definition reno.h:164
bool(* same_wnd_adv)(congure_reno_snd_t *c, congure_snd_ack_t *ack)
Callback to check if the advertised window within an ACK is the same as in the context.
Definition reno.h:77
congure_wnd_size_t cwnd_lower
Initial lower bound for initial window initiator-defined units.
Definition reno.h:154
unsigned init_mss
Initial maximum segment size of the sender in intiator-defined units.
Definition reno.h:138
State object for CongURE Reno.
Definition reno.h:172
uint16_t in_flight_size
Sum of caller-defined units of message sizes of all messages that are yet not ack'd or declared lost.
Definition reno.h:189
uint32_t last_ack
ID of the last ACK reported.
Definition reno.h:179
congure_wnd_size_t mss
Maximum segment size of the sender in caller-defined units.
Definition reno.h:183
congure_snd_t super
see congure_snd_t
Definition reno.h:173
uint8_t dup_acks
Number of duplicate ACKs reported.
Definition reno.h:190
const congure_reno_snd_consts_t * consts
Constants.
Definition reno.h:178
congure_wnd_size_t ssthresh
Slow-start threshold.
Definition reno.h:184
Object to represent an ACK to a message.
Definition congure.h:86
Object to represent a collection of sent messages.
Definition congure.h:68
Base state object for CongURE implementations.
Definition congure.h:51