Loading...
Searching...
No Matches

Many other congestion control mechanisms are just adaptations of TCP Reno, so this makes the methods of CongURE implementation of TCP Reno available to other CongURE - A Congestion control framework modules. More...

Detailed Description

Many other congestion control mechanisms are just adaptations of TCP Reno, so this makes the methods of CongURE implementation of TCP Reno available to other CongURE - A Congestion control framework modules.

Use module congure_reno_methods to only compile in these modules, but not the driver for congure_reno_snd_t or congure_reno_snd_setup().

Functions

void congure_reno_set_mss (congure_reno_snd_t *c, congure_wnd_size_t mss)
 Set sender maximum segment size.
 
void congure_reno_snd_init (congure_snd_t *c, void *ctx)
 Use to override congure_snd_driver_t::init.
 
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_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.
 
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_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_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_report_ecn_ce (congure_snd_t *c, ztimer_now_t time)
 Use to override congure_snd_driver_t::report_ecn_ce.
 

Function Documentation

◆ congure_reno_set_mss()

void congure_reno_set_mss ( congure_reno_snd_t c,
congure_wnd_size_t  mss 
)

Set sender maximum segment size.

Attention
This resets congure_reno_snd_t::cwnd to the new initial window size based on mss. So use with care.
Parameters
[in]cA CongURE state object
[in]mssMaximum segment size of the sender in caller-defined units

◆ congure_reno_snd_init()

void congure_reno_snd_init ( congure_snd_t c,
void *  ctx 
)

Use to override congure_snd_driver_t::init.

Parameters
[in,out]cThe CongURE object to initialize.
[in]ctxContext for callbacks specific to the congestion control (such as a TCP PCB). May be NULL.

◆ congure_reno_snd_inter_msg_interval()

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.

Parameters
[in,out]cThe CongURE object to initialize.
[in]msg_sizeSize of the next message to sent in caller-defined unit.
Returns
Always -1.

◆ congure_reno_snd_report_ecn_ce()

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.

Parameters
[in]cThe CongURE state object.
[in]timeTimestamp in milliseconds of the message the CE event occurred for was sent.

◆ congure_reno_snd_report_msg_acked()

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.

Parameters
[in]cThe CongURE state object.
[in]msgThe ACK'd message.
[in]ackThe received ACK.

◆ congure_reno_snd_report_msg_discarded()

void congure_reno_snd_report_msg_discarded ( congure_snd_t c,
unsigned  msg_size 
)

Use to override congure_snd_driver_t::report_msg_discarded.

Parameters
[in]cThe CongURE state object.
[in]msg_sizeSize of the discarded message in caller-defined unit.

◆ congure_reno_snd_report_msg_sent()

void congure_reno_snd_report_msg_sent ( congure_snd_t c,
unsigned  msg_size 
)

Use to override congure_snd_driver_t::report_msg_sent.

Parameters
[in]cThe CongURE state object.
[in]msg_sizeSize of the message in caller-defined unit.

◆ congure_reno_snd_report_msgs_lost()

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.

Parameters
[in]cThe CongURE state object.
[in]msgsA collection of messages for which the ACK timed out. The list must not be changed by the method.

◆ congure_reno_snd_report_msgs_timeout()

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.

Parameters
[in]cThe CongURE state object.
[in]msgsA collection of messages that are known to be lost. The list must not be changed by the method.