Skip to content

Commit c715aac

Browse files
LPhghintel-lab-lkp
authored andcommitted
bpf: add mrtt and srtt as BPF_SOCK_OPS_RTT_CB args
Two important arguments in RTT estimation, mrtt and srtt, are passed to tcp_bpf_rtt(), so that bpf programs get more information about RTT computation in BPF_SOCK_OPS_RTT_CB. The difference between bpf_sock_ops->srtt_us and the srtt here is: the former is an old rtt before update, while srtt passed by tcp_bpf_rtt() is that after update. Signed-off-by: Philo Lu <lulie@linux.alibaba.com>
1 parent 52578f7 commit c715aac

File tree

4 files changed

+8
-4
lines changed

4 files changed

+8
-4
lines changed

include/net/tcp.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2706,10 +2706,10 @@ static inline bool tcp_bpf_ca_needs_ecn(struct sock *sk)
27062706
return (tcp_call_bpf(sk, BPF_SOCK_OPS_NEEDS_ECN, 0, NULL) == 1);
27072707
}
27082708

2709-
static inline void tcp_bpf_rtt(struct sock *sk)
2709+
static inline void tcp_bpf_rtt(struct sock *sk, long mrtt, u32 srtt)
27102710
{
27112711
if (BPF_SOCK_OPS_TEST_FLAG(tcp_sk(sk), BPF_SOCK_OPS_RTT_CB_FLAG))
2712-
tcp_call_bpf(sk, BPF_SOCK_OPS_RTT_CB, 0, NULL);
2712+
tcp_call_bpf_2arg(sk, BPF_SOCK_OPS_RTT_CB, mrtt, srtt);
27132713
}
27142714

27152715
#if IS_ENABLED(CONFIG_SMC)

include/uapi/linux/bpf.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6947,6 +6947,8 @@ enum {
69476947
* socket transition to LISTEN state.
69486948
*/
69496949
BPF_SOCK_OPS_RTT_CB, /* Called on every RTT.
6950+
* Arg1: measured RTT input (mrtt)
6951+
* Arg2: updated srtt
69506952
*/
69516953
BPF_SOCK_OPS_PARSE_HDR_OPT_CB, /* Parse the header option.
69526954
* It will be called to handle

net/ipv4/tcp_input.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -911,7 +911,7 @@ static void tcp_rtt_estimator(struct sock *sk, long mrtt_us)
911911
tp->rtt_seq = tp->snd_nxt;
912912
tp->mdev_max_us = tcp_rto_min_us(sk);
913913

914-
tcp_bpf_rtt(sk);
914+
tcp_bpf_rtt(sk, mrtt_us, srtt);
915915
}
916916
} else {
917917
/* no previous measure. */
@@ -921,7 +921,7 @@ static void tcp_rtt_estimator(struct sock *sk, long mrtt_us)
921921
tp->mdev_max_us = tp->rttvar_us;
922922
tp->rtt_seq = tp->snd_nxt;
923923

924-
tcp_bpf_rtt(sk);
924+
tcp_bpf_rtt(sk, mrtt_us, srtt);
925925
}
926926
tp->srtt_us = max(1U, srtt);
927927
}

tools/include/uapi/linux/bpf.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6947,6 +6947,8 @@ enum {
69476947
* socket transition to LISTEN state.
69486948
*/
69496949
BPF_SOCK_OPS_RTT_CB, /* Called on every RTT.
6950+
* Arg1: measured RTT input (mrtt)
6951+
* Arg2: updated srtt
69506952
*/
69516953
BPF_SOCK_OPS_PARSE_HDR_OPT_CB, /* Parse the header option.
69526954
* It will be called to handle

0 commit comments

Comments
 (0)