mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 20:46:48 +02:00
bpf-next-for-netdev
-----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQQ6NaUOruQGUkvPdG4raS+Z+3y5EwUCZ9NWrwAKCRAraS+Z+3y5 E2VIAP4iIdMobFDEm04JuXyrOK6HasnkOFkuEgLNNhGRbCCTTwD/X/2A8baSXnjg eqYN2DJfrs7OZ1ZUku/ic1VGtJg7Sgk= =jTyW -----END PGP SIGNATURE----- Merge tag 'for-netdev' of https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next Martin KaFai Lau says: ==================== pull-request: bpf-next 2025-03-13 The following pull-request contains BPF updates for your *net-next* tree. We've added 4 non-merge commits during the last 3 day(s) which contain a total of 2 files changed, 35 insertions(+), 12 deletions(-). The main changes are: 1) bpf_getsockopt support for TCP_BPF_RTO_MIN and TCP_BPF_DELACK_MAX, from Jason Xing bpf-next-for-netdev * tag 'for-netdev' of https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next: selftests/bpf: Add bpf_getsockopt() for TCP_BPF_DELACK_MAX and TCP_BPF_RTO_MIN tcp: bpf: Support bpf_getsockopt for TCP_BPF_DELACK_MAX tcp: bpf: Support bpf_getsockopt for TCP_BPF_RTO_MIN tcp: bpf: Introduce bpf_sol_tcp_getsockopt to support TCP_BPF flags ==================== Link: https://patch.msgid.link/20250313221620.2512684-1-martin.lau@linux.dev Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
commit
6f13bec53a
|
|
@ -5282,6 +5282,38 @@ static int sol_socket_sockopt(struct sock *sk, int optname,
|
|||
KERNEL_SOCKPTR(optval), *optlen);
|
||||
}
|
||||
|
||||
static int bpf_sol_tcp_getsockopt(struct sock *sk, int optname,
|
||||
char *optval, int optlen)
|
||||
{
|
||||
if (optlen != sizeof(int))
|
||||
return -EINVAL;
|
||||
|
||||
switch (optname) {
|
||||
case TCP_BPF_SOCK_OPS_CB_FLAGS: {
|
||||
int cb_flags = tcp_sk(sk)->bpf_sock_ops_cb_flags;
|
||||
|
||||
memcpy(optval, &cb_flags, optlen);
|
||||
break;
|
||||
}
|
||||
case TCP_BPF_RTO_MIN: {
|
||||
int rto_min_us = jiffies_to_usecs(inet_csk(sk)->icsk_rto_min);
|
||||
|
||||
memcpy(optval, &rto_min_us, optlen);
|
||||
break;
|
||||
}
|
||||
case TCP_BPF_DELACK_MAX: {
|
||||
int delack_max_us = jiffies_to_usecs(inet_csk(sk)->icsk_delack_max);
|
||||
|
||||
memcpy(optval, &delack_max_us, optlen);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int bpf_sol_tcp_setsockopt(struct sock *sk, int optname,
|
||||
char *optval, int optlen)
|
||||
{
|
||||
|
|
@ -5415,20 +5447,9 @@ static int sol_tcp_sockopt(struct sock *sk, int optname,
|
|||
if (*optlen < 1)
|
||||
return -EINVAL;
|
||||
break;
|
||||
case TCP_BPF_SOCK_OPS_CB_FLAGS:
|
||||
if (*optlen != sizeof(int))
|
||||
return -EINVAL;
|
||||
if (getopt) {
|
||||
struct tcp_sock *tp = tcp_sk(sk);
|
||||
int cb_flags = tp->bpf_sock_ops_cb_flags;
|
||||
|
||||
memcpy(optval, &cb_flags, *optlen);
|
||||
return 0;
|
||||
}
|
||||
return bpf_sol_tcp_setsockopt(sk, optname, optval, *optlen);
|
||||
default:
|
||||
if (getopt)
|
||||
return -EINVAL;
|
||||
return bpf_sol_tcp_getsockopt(sk, optname, optval, *optlen);
|
||||
return bpf_sol_tcp_setsockopt(sk, optname, optval, *optlen);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -61,6 +61,8 @@ static const struct sockopt_test sol_tcp_tests[] = {
|
|||
{ .opt = TCP_NOTSENT_LOWAT, .new = 1314, .expected = 1314, },
|
||||
{ .opt = TCP_BPF_SOCK_OPS_CB_FLAGS, .new = BPF_SOCK_OPS_ALL_CB_FLAGS,
|
||||
.expected = BPF_SOCK_OPS_ALL_CB_FLAGS, },
|
||||
{ .opt = TCP_BPF_DELACK_MAX, .new = 30000, .expected = 30000, },
|
||||
{ .opt = TCP_BPF_RTO_MIN, .new = 30000, .expected = 30000, },
|
||||
{ .opt = TCP_RTO_MAX_MS, .new = 2000, .expected = 2000, },
|
||||
{ .opt = 0, },
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user