mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-02-13 15:23:28 -05:00
tcp: clarify tcp_congestion_ops functions comments
The optional and required hints in the tcp_congestion_ops are information for the user of this interface to signalize its importance when implementing these functions. However, cong_avoid comment incorrectly tells that it is required, in reality congestion control must provide one of either cong_avoid or cong_control. In addition, min_tso_segs has not had any comment optional/required hints. So mark it as optional since it is used only in BBR. Co-developed-by: Neal Cardwell <ncardwell@google.com> Signed-off-by: Neal Cardwell <ncardwell@google.com> Signed-off-by: Daniel Sedlak <daniel.sedlak@cdn77.com> Link: https://patch.msgid.link/20260105115533.1151442-1-daniel.sedlak@cdn77.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
f66086798f
commit
55ffb0b14a
@@ -1243,12 +1243,27 @@ struct rate_sample {
|
||||
struct tcp_congestion_ops {
|
||||
/* fast path fields are put first to fill one cache line */
|
||||
|
||||
/* A congestion control (CC) must provide one of either:
|
||||
*
|
||||
* (a) a cong_avoid function, if the CC wants to use the core TCP
|
||||
* stack's default functionality to implement a "classic"
|
||||
* (Reno/CUBIC-style) response to packet loss, RFC3168 ECN,
|
||||
* idle periods, pacing rate computations, etc.
|
||||
*
|
||||
* (b) a cong_control function, if the CC wants custom behavior and
|
||||
* complete control of all congestion control behaviors.
|
||||
*/
|
||||
/* (a) "classic" response: calculate new cwnd.
|
||||
*/
|
||||
void (*cong_avoid)(struct sock *sk, u32 ack, u32 acked);
|
||||
/* (b) "custom" response: call when packets are delivered to update
|
||||
* cwnd and pacing rate, after all the ca_state processing.
|
||||
*/
|
||||
void (*cong_control)(struct sock *sk, u32 ack, int flag, const struct rate_sample *rs);
|
||||
|
||||
/* return slow start threshold (required) */
|
||||
u32 (*ssthresh)(struct sock *sk);
|
||||
|
||||
/* do new cwnd calculation (required) */
|
||||
void (*cong_avoid)(struct sock *sk, u32 ack, u32 acked);
|
||||
|
||||
/* call before changing ca_state (optional) */
|
||||
void (*set_state)(struct sock *sk, u8 new_state);
|
||||
|
||||
@@ -1261,15 +1276,9 @@ struct tcp_congestion_ops {
|
||||
/* hook for packet ack accounting (optional) */
|
||||
void (*pkts_acked)(struct sock *sk, const struct ack_sample *sample);
|
||||
|
||||
/* override sysctl_tcp_min_tso_segs */
|
||||
/* override sysctl_tcp_min_tso_segs (optional) */
|
||||
u32 (*min_tso_segs)(struct sock *sk);
|
||||
|
||||
/* call when packets are delivered to update cwnd and pacing rate,
|
||||
* after all the ca_state processing. (optional)
|
||||
*/
|
||||
void (*cong_control)(struct sock *sk, u32 ack, int flag, const struct rate_sample *rs);
|
||||
|
||||
|
||||
/* new value of cwnd after loss (required) */
|
||||
u32 (*undo_cwnd)(struct sock *sk);
|
||||
/* returns the multiplier used in tcp_sndbuf_expand (optional) */
|
||||
|
||||
Reference in New Issue
Block a user