aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/tcp.h
diff options
context:
space:
mode:
authorNeal Cardwell <ncardwell@google.com>2016-09-19 23:39:17 -0400
committerDavid S. Miller <davem@davemloft.net>2016-09-21 00:23:00 -0400
commited6e7268b930e0a9a65d895d368eac79a438d992 (patch)
tree4dddd837b12a0691140285fac90c1bac9ff5f82b /include/net/tcp.h
parenteb8329e0a04db0061f714f033b4454326ba147f4 (diff)
tcp: allow congestion control module to request TSO skb segment count
Add the tso_segs_goal() function in tcp_congestion_ops to allow the congestion control module to specify the number of segments that should be in a TSO skb sent by tcp_write_xmit() and tcp_xmit_retransmit_queue(). The congestion control module can either request a particular number of segments in TSO skb that we transmit, or return 0 if it doesn't care. This allows the upcoming BBR congestion control module to select small TSO skb sizes if the module detects that the bottleneck bandwidth is very low, or that the connection is policed to a low rate. Signed-off-by: Van Jacobson <vanj@google.com> Signed-off-by: Neal Cardwell <ncardwell@google.com> Signed-off-by: Yuchung Cheng <ycheng@google.com> Signed-off-by: Nandita Dukkipati <nanditad@google.com> Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/tcp.h')
-rw-r--r--include/net/tcp.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/net/tcp.h b/include/net/tcp.h
index a69ed7f0030c..f8f581fd05f5 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -913,6 +913,8 @@ struct tcp_congestion_ops {
913 u32 (*undo_cwnd)(struct sock *sk); 913 u32 (*undo_cwnd)(struct sock *sk);
914 /* hook for packet ack accounting (optional) */ 914 /* hook for packet ack accounting (optional) */
915 void (*pkts_acked)(struct sock *sk, const struct ack_sample *sample); 915 void (*pkts_acked)(struct sock *sk, const struct ack_sample *sample);
916 /* suggest number of segments for each skb to transmit (optional) */
917 u32 (*tso_segs_goal)(struct sock *sk);
916 /* get info for inet_diag (optional) */ 918 /* get info for inet_diag (optional) */
917 size_t (*get_info)(struct sock *sk, u32 ext, int *attr, 919 size_t (*get_info)(struct sock *sk, u32 ext, int *attr,
918 union tcp_cc_info *info); 920 union tcp_cc_info *info);