aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_output.c
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2018-06-20 16:07:35 -0400
committerDavid S. Miller <davem@davemloft.net>2018-06-22 00:59:22 -0400
commitcadefe5f584abaac40dce72009e4de738cbff467 (patch)
tree1b40f040d84e576d231826bd19593918eb597d86 /net/ipv4/tcp_output.c
parent3f484a6e766740c9cb89cf576fdceeec49e221fd (diff)
tcp_bbr: fix bbr pacing rate for internal pacing
This commit makes BBR use only the MSS (without any headers) to calculate pacing rates when internal TCP-layer pacing is used. This is necessary to achieve the correct pacing behavior in this case, since tcp_internal_pacing() uses only the payload length to calculate pacing delays. Signed-off-by: Kevin Yang <yyd@google.com> Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Neal Cardwell <ncardwell@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_output.c')
-rw-r--r--net/ipv4/tcp_output.c14
1 files changed, 0 insertions, 14 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 8e08b409c71e..f8f6129160dd 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -973,17 +973,6 @@ enum hrtimer_restart tcp_pace_kick(struct hrtimer *timer)
973 return HRTIMER_NORESTART; 973 return HRTIMER_NORESTART;
974} 974}
975 975
976/* BBR congestion control needs pacing.
977 * Same remark for SO_MAX_PACING_RATE.
978 * sch_fq packet scheduler is efficiently handling pacing,
979 * but is not always installed/used.
980 * Return true if TCP stack should pace packets itself.
981 */
982static bool tcp_needs_internal_pacing(const struct sock *sk)
983{
984 return smp_load_acquire(&sk->sk_pacing_status) == SK_PACING_NEEDED;
985}
986
987static void tcp_internal_pacing(struct sock *sk, const struct sk_buff *skb) 976static void tcp_internal_pacing(struct sock *sk, const struct sk_buff *skb)
988{ 977{
989 u64 len_ns; 978 u64 len_ns;
@@ -995,9 +984,6 @@ static void tcp_internal_pacing(struct sock *sk, const struct sk_buff *skb)
995 if (!rate || rate == ~0U) 984 if (!rate || rate == ~0U)
996 return; 985 return;
997 986
998 /* Should account for header sizes as sch_fq does,
999 * but lets make things simple.
1000 */
1001 len_ns = (u64)skb->len * NSEC_PER_SEC; 987 len_ns = (u64)skb->len * NSEC_PER_SEC;
1002 do_div(len_ns, rate); 988 do_div(len_ns, rate);
1003 hrtimer_start(&tcp_sk(sk)->pacing_timer, 989 hrtimer_start(&tcp_sk(sk)->pacing_timer,