netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH bpf-next v3 0/2] bpf: support setting max RTO for bpf_setsockopt
@ 2025-02-19  8:13 Jason Xing
  2025-02-19  8:13 ` [PATCH bpf-next v3 1/2] bpf: support TCP_RTO_MAX_MS " Jason Xing
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Jason Xing @ 2025-02-19  8:13 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, dsahern, kuniyu, ast, daniel,
	andrii, martin.lau, eddyz87, song, yonghong.song, john.fastabend,
	kpsingh, sdf, haoluo, jolsa, shuah, ykolal
  Cc: bpf, netdev, Jason Xing

Support max RTO set by BPF program calling bpf_setsockopt().
Add corresponding selftests.

Jason Xing (2):
  bpf: support TCP_RTO_MAX_MS for bpf_setsockopt
  selftests/bpf: add rto max for bpf_setsockopt test

 net/core/filter.c                                   | 1 +
 tools/testing/selftests/bpf/progs/bpf_tracing_net.h | 1 +
 tools/testing/selftests/bpf/progs/setget_sockopt.c  | 1 +
 3 files changed, 3 insertions(+)

-- 
2.43.5


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH bpf-next v3 1/2] bpf: support TCP_RTO_MAX_MS for bpf_setsockopt
  2025-02-19  8:13 [PATCH bpf-next v3 0/2] bpf: support setting max RTO for bpf_setsockopt Jason Xing
@ 2025-02-19  8:13 ` Jason Xing
  2025-02-20  8:51   ` kernel test robot
  2025-02-22 22:51   ` kernel test robot
  2025-02-19  8:13 ` [PATCH bpf-next v3 2/2] selftests/bpf: add rto max for bpf_setsockopt test Jason Xing
  2025-02-19 21:11 ` [PATCH bpf-next v3 0/2] bpf: support setting max RTO for bpf_setsockopt patchwork-bot+netdevbpf
  2 siblings, 2 replies; 8+ messages in thread
From: Jason Xing @ 2025-02-19  8:13 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, dsahern, kuniyu, ast, daniel,
	andrii, martin.lau, eddyz87, song, yonghong.song, john.fastabend,
	kpsingh, sdf, haoluo, jolsa, shuah, ykolal
  Cc: bpf, netdev, Jason Xing

Some applications don't want to wait for too long because the
time of retransmission increases exponentially and can reach more
than 10 seconds, for example. Eric implements the core logic
on supporting rto max feature in the stack previously. Based on that,
we can support it for BPF use.

This patch reuses the same logic of TCP_RTO_MAX_MS in do_tcp_setsockopt()
and do_tcp_getsockopt(). BPF program can call bpf_{set/get}sockopt()
to set/get the maximum value of RTO.

Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: Jason Xing <kerneljasonxing@gmail.com>
---
 net/core/filter.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/net/core/filter.c b/net/core/filter.c
index 2ec162dd83c4..ffec7b4357f9 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -5382,6 +5382,7 @@ static int sol_tcp_sockopt(struct sock *sk, int optname,
 	case TCP_USER_TIMEOUT:
 	case TCP_NOTSENT_LOWAT:
 	case TCP_SAVE_SYN:
+	case TCP_RTO_MAX_MS:
 		if (*optlen != sizeof(int))
 			return -EINVAL;
 		break;
-- 
2.43.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH bpf-next v3 2/2] selftests/bpf: add rto max for bpf_setsockopt test
  2025-02-19  8:13 [PATCH bpf-next v3 0/2] bpf: support setting max RTO for bpf_setsockopt Jason Xing
  2025-02-19  8:13 ` [PATCH bpf-next v3 1/2] bpf: support TCP_RTO_MAX_MS " Jason Xing
@ 2025-02-19  8:13 ` Jason Xing
  2025-02-19 21:11 ` [PATCH bpf-next v3 0/2] bpf: support setting max RTO for bpf_setsockopt patchwork-bot+netdevbpf
  2 siblings, 0 replies; 8+ messages in thread
From: Jason Xing @ 2025-02-19  8:13 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, dsahern, kuniyu, ast, daniel,
	andrii, martin.lau, eddyz87, song, yonghong.song, john.fastabend,
	kpsingh, sdf, haoluo, jolsa, shuah, ykolal
  Cc: bpf, netdev, Jason Xing

Test the TCP_RTO_MAX_MS optname in the existing setget_sockopt test.

Signed-off-by: Jason Xing <kerneljasonxing@gmail.com>
---
 tools/testing/selftests/bpf/progs/bpf_tracing_net.h | 1 +
 tools/testing/selftests/bpf/progs/setget_sockopt.c  | 1 +
 2 files changed, 2 insertions(+)

diff --git a/tools/testing/selftests/bpf/progs/bpf_tracing_net.h b/tools/testing/selftests/bpf/progs/bpf_tracing_net.h
index 59843b430f76..eb6ed1b7b2ef 100644
--- a/tools/testing/selftests/bpf/progs/bpf_tracing_net.h
+++ b/tools/testing/selftests/bpf/progs/bpf_tracing_net.h
@@ -49,6 +49,7 @@
 #define TCP_SAVED_SYN		28
 #define TCP_CA_NAME_MAX		16
 #define TCP_NAGLE_OFF		1
+#define TCP_RTO_MAX_MS		44
 
 #define TCP_ECN_OK              1
 #define TCP_ECN_QUEUE_CWR       2
diff --git a/tools/testing/selftests/bpf/progs/setget_sockopt.c b/tools/testing/selftests/bpf/progs/setget_sockopt.c
index 6dd4318debbf..106fe430f41b 100644
--- a/tools/testing/selftests/bpf/progs/setget_sockopt.c
+++ b/tools/testing/selftests/bpf/progs/setget_sockopt.c
@@ -61,6 +61,7 @@ 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_RTO_MAX_MS, .new = 2000, .expected = 2000, },
 	{ .opt = 0, },
 };
 
-- 
2.43.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH bpf-next v3 0/2] bpf: support setting max RTO for bpf_setsockopt
  2025-02-19  8:13 [PATCH bpf-next v3 0/2] bpf: support setting max RTO for bpf_setsockopt Jason Xing
  2025-02-19  8:13 ` [PATCH bpf-next v3 1/2] bpf: support TCP_RTO_MAX_MS " Jason Xing
  2025-02-19  8:13 ` [PATCH bpf-next v3 2/2] selftests/bpf: add rto max for bpf_setsockopt test Jason Xing
@ 2025-02-19 21:11 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 8+ messages in thread
From: patchwork-bot+netdevbpf @ 2025-02-19 21:11 UTC (permalink / raw)
  To: Jason Xing
  Cc: davem, edumazet, kuba, pabeni, dsahern, kuniyu, ast, daniel,
	andrii, martin.lau, eddyz87, song, yonghong.song, john.fastabend,
	kpsingh, sdf, haoluo, jolsa, shuah, ykolal, bpf, netdev

Hello:

This series was applied to bpf/bpf-next.git (net)
by Martin KaFai Lau <martin.lau@kernel.org>:

On Wed, 19 Feb 2025 16:13:30 +0800 you wrote:
> Support max RTO set by BPF program calling bpf_setsockopt().
> Add corresponding selftests.
> 
> Jason Xing (2):
>   bpf: support TCP_RTO_MAX_MS for bpf_setsockopt
>   selftests/bpf: add rto max for bpf_setsockopt test
> 
> [...]

Here is the summary with links:
  - [bpf-next,v3,1/2] bpf: support TCP_RTO_MAX_MS for bpf_setsockopt
    https://git.kernel.org/bpf/bpf-next/c/6810c771d316
  - [bpf-next,v3,2/2] selftests/bpf: add rto max for bpf_setsockopt test
    https://git.kernel.org/bpf/bpf-next/c/7a93ba804847

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH bpf-next v3 1/2] bpf: support TCP_RTO_MAX_MS for bpf_setsockopt
  2025-02-19  8:13 ` [PATCH bpf-next v3 1/2] bpf: support TCP_RTO_MAX_MS " Jason Xing
@ 2025-02-20  8:51   ` kernel test robot
  2025-02-20  8:57     ` Jason Xing
  2025-02-22 22:51   ` kernel test robot
  1 sibling, 1 reply; 8+ messages in thread
From: kernel test robot @ 2025-02-20  8:51 UTC (permalink / raw)
  To: Jason Xing, davem, edumazet, kuba, pabeni, dsahern, kuniyu, ast,
	daniel, andrii, martin.lau, eddyz87, song, yonghong.song,
	john.fastabend, kpsingh, sdf, haoluo, jolsa, shuah, ykolal
  Cc: oe-kbuild-all, bpf, netdev, Jason Xing

Hi Jason,

kernel test robot noticed the following build errors:

[auto build test ERROR on bpf-next/master]

url:    https://github.com/intel-lab-lkp/linux/commits/Jason-Xing/bpf-support-TCP_RTO_MAX_MS-for-bpf_setsockopt/20250219-161637
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
patch link:    https://lore.kernel.org/r/20250219081333.56378-2-kerneljasonxing%40gmail.com
patch subject: [PATCH bpf-next v3 1/2] bpf: support TCP_RTO_MAX_MS for bpf_setsockopt
config: x86_64-buildonly-randconfig-002-20250220 (https://download.01.org/0day-ci/archive/20250220/202502201843.xA1qZbKX-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250220/202502201843.xA1qZbKX-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202502201843.xA1qZbKX-lkp@intel.com/

All errors (new ones prefixed by >>):

   net/core/filter.c: In function 'sol_tcp_sockopt':
>> net/core/filter.c:5385:14: error: 'TCP_RTO_MAX_MS' undeclared (first use in this function); did you mean 'TCP_RTO_MAX'?
    5385 |         case TCP_RTO_MAX_MS:
         |              ^~~~~~~~~~~~~~
         |              TCP_RTO_MAX
   net/core/filter.c:5385:14: note: each undeclared identifier is reported only once for each function it appears in


vim +5385 net/core/filter.c

  5365	
  5366	static int sol_tcp_sockopt(struct sock *sk, int optname,
  5367				   char *optval, int *optlen,
  5368				   bool getopt)
  5369	{
  5370		if (sk->sk_protocol != IPPROTO_TCP)
  5371			return -EINVAL;
  5372	
  5373		switch (optname) {
  5374		case TCP_NODELAY:
  5375		case TCP_MAXSEG:
  5376		case TCP_KEEPIDLE:
  5377		case TCP_KEEPINTVL:
  5378		case TCP_KEEPCNT:
  5379		case TCP_SYNCNT:
  5380		case TCP_WINDOW_CLAMP:
  5381		case TCP_THIN_LINEAR_TIMEOUTS:
  5382		case TCP_USER_TIMEOUT:
  5383		case TCP_NOTSENT_LOWAT:
  5384		case TCP_SAVE_SYN:
> 5385		case TCP_RTO_MAX_MS:
  5386			if (*optlen != sizeof(int))
  5387				return -EINVAL;
  5388			break;
  5389		case TCP_CONGESTION:
  5390			return sol_tcp_sockopt_congestion(sk, optval, optlen, getopt);
  5391		case TCP_SAVED_SYN:
  5392			if (*optlen < 1)
  5393				return -EINVAL;
  5394			break;
  5395		case TCP_BPF_SOCK_OPS_CB_FLAGS:
  5396			if (*optlen != sizeof(int))
  5397				return -EINVAL;
  5398			if (getopt) {
  5399				struct tcp_sock *tp = tcp_sk(sk);
  5400				int cb_flags = tp->bpf_sock_ops_cb_flags;
  5401	
  5402				memcpy(optval, &cb_flags, *optlen);
  5403				return 0;
  5404			}
  5405			return bpf_sol_tcp_setsockopt(sk, optname, optval, *optlen);
  5406		default:
  5407			if (getopt)
  5408				return -EINVAL;
  5409			return bpf_sol_tcp_setsockopt(sk, optname, optval, *optlen);
  5410		}
  5411	
  5412		if (getopt) {
  5413			if (optname == TCP_SAVED_SYN) {
  5414				struct tcp_sock *tp = tcp_sk(sk);
  5415	
  5416				if (!tp->saved_syn ||
  5417				    *optlen > tcp_saved_syn_len(tp->saved_syn))
  5418					return -EINVAL;
  5419				memcpy(optval, tp->saved_syn->data, *optlen);
  5420				/* It cannot free tp->saved_syn here because it
  5421				 * does not know if the user space still needs it.
  5422				 */
  5423				return 0;
  5424			}
  5425	
  5426			return do_tcp_getsockopt(sk, SOL_TCP, optname,
  5427						 KERNEL_SOCKPTR(optval),
  5428						 KERNEL_SOCKPTR(optlen));
  5429		}
  5430	
  5431		return do_tcp_setsockopt(sk, SOL_TCP, optname,
  5432					 KERNEL_SOCKPTR(optval), *optlen);
  5433	}
  5434	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH bpf-next v3 1/2] bpf: support TCP_RTO_MAX_MS for bpf_setsockopt
  2025-02-20  8:51   ` kernel test robot
@ 2025-02-20  8:57     ` Jason Xing
  2025-02-22  1:40       ` Philip Li
  0 siblings, 1 reply; 8+ messages in thread
From: Jason Xing @ 2025-02-20  8:57 UTC (permalink / raw)
  To: kernel test robot
  Cc: davem, edumazet, kuba, pabeni, dsahern, kuniyu, ast, daniel,
	andrii, martin.lau, eddyz87, song, yonghong.song, john.fastabend,
	kpsingh, sdf, haoluo, jolsa, shuah, ykolal, oe-kbuild-all, bpf,
	netdev

On Thu, Feb 20, 2025 at 4:52 PM kernel test robot <lkp@intel.com> wrote:
>
> Hi Jason,
>
> kernel test robot noticed the following build errors:
>
> [auto build test ERROR on bpf-next/master]
>
> url:    https://github.com/intel-lab-lkp/linux/commits/Jason-Xing/bpf-support-TCP_RTO_MAX_MS-for-bpf_setsockopt/20250219-161637
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
> patch link:    https://lore.kernel.org/r/20250219081333.56378-2-kerneljasonxing%40gmail.com
> patch subject: [PATCH bpf-next v3 1/2] bpf: support TCP_RTO_MAX_MS for bpf_setsockopt
> config: x86_64-buildonly-randconfig-002-20250220 (https://download.01.org/0day-ci/archive/20250220/202502201843.xA1qZbKX-lkp@intel.com/config)
> compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250220/202502201843.xA1qZbKX-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202502201843.xA1qZbKX-lkp@intel.com/
>
> All errors (new ones prefixed by >>):
>
>    net/core/filter.c: In function 'sol_tcp_sockopt':
> >> net/core/filter.c:5385:14: error: 'TCP_RTO_MAX_MS' undeclared (first use in this function); did you mean 'TCP_RTO_MAX'?
>     5385 |         case TCP_RTO_MAX_MS:
>          |              ^~~~~~~~~~~~~~
>          |              TCP_RTO_MAX
>    net/core/filter.c:5385:14: note: each undeclared identifier is reported only once for each function it appears in

We've discussed this a few hours ago. It turned out to be the wrong
branch which this series applied to. Please try bpf-next net branch
instead :)

Thanks,
Jason

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH bpf-next v3 1/2] bpf: support TCP_RTO_MAX_MS for bpf_setsockopt
  2025-02-20  8:57     ` Jason Xing
@ 2025-02-22  1:40       ` Philip Li
  0 siblings, 0 replies; 8+ messages in thread
From: Philip Li @ 2025-02-22  1:40 UTC (permalink / raw)
  To: Jason Xing
  Cc: kernel test robot, davem, edumazet, kuba, pabeni, dsahern, kuniyu,
	ast, daniel, andrii, martin.lau, eddyz87, song, yonghong.song,
	john.fastabend, kpsingh, sdf, haoluo, jolsa, shuah, ykolal,
	oe-kbuild-all, bpf, netdev

On Thu, Feb 20, 2025 at 04:57:08PM +0800, Jason Xing wrote:
> On Thu, Feb 20, 2025 at 4:52 PM kernel test robot <lkp@intel.com> wrote:
> >
> > Hi Jason,
> >
> > kernel test robot noticed the following build errors:
> >
> > [auto build test ERROR on bpf-next/master]
> >
> > url:    https://github.com/intel-lab-lkp/linux/commits/Jason-Xing/bpf-support-TCP_RTO_MAX_MS-for-bpf_setsockopt/20250219-161637
> > base:   https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
> > patch link:    https://lore.kernel.org/r/20250219081333.56378-2-kerneljasonxing%40gmail.com
> > patch subject: [PATCH bpf-next v3 1/2] bpf: support TCP_RTO_MAX_MS for bpf_setsockopt
> > config: x86_64-buildonly-randconfig-002-20250220 (https://download.01.org/0day-ci/archive/20250220/202502201843.xA1qZbKX-lkp@intel.com/config)
> > compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
> > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250220/202502201843.xA1qZbKX-lkp@intel.com/reproduce)
> >
> > If you fix the issue in a separate patch/commit (i.e. not just a new version of
> > the same patch/commit), kindly add following tags
> > | Reported-by: kernel test robot <lkp@intel.com>
> > | Closes: https://lore.kernel.org/oe-kbuild-all/202502201843.xA1qZbKX-lkp@intel.com/
> >
> > All errors (new ones prefixed by >>):
> >
> >    net/core/filter.c: In function 'sol_tcp_sockopt':
> > >> net/core/filter.c:5385:14: error: 'TCP_RTO_MAX_MS' undeclared (first use in this function); did you mean 'TCP_RTO_MAX'?
> >     5385 |         case TCP_RTO_MAX_MS:
> >          |              ^~~~~~~~~~~~~~
> >          |              TCP_RTO_MAX
> >    net/core/filter.c:5385:14: note: each undeclared identifier is reported only once for each function it appears in
> 
> We've discussed this a few hours ago. It turned out to be the wrong
> branch which this series applied to. Please try bpf-next net branch
> instead :)

Thanks for the info, we will configure this branch in the bot side. Sorry
for the false positive.

> 
> Thanks,
> Jason
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH bpf-next v3 1/2] bpf: support TCP_RTO_MAX_MS for bpf_setsockopt
  2025-02-19  8:13 ` [PATCH bpf-next v3 1/2] bpf: support TCP_RTO_MAX_MS " Jason Xing
  2025-02-20  8:51   ` kernel test robot
@ 2025-02-22 22:51   ` kernel test robot
  1 sibling, 0 replies; 8+ messages in thread
From: kernel test robot @ 2025-02-22 22:51 UTC (permalink / raw)
  To: Jason Xing, davem, edumazet, kuba, pabeni, dsahern, kuniyu, ast,
	daniel, andrii, martin.lau, eddyz87, song, yonghong.song,
	john.fastabend, kpsingh, sdf, haoluo, jolsa, shuah, ykolal
  Cc: llvm, oe-kbuild-all, bpf, netdev, Jason Xing

Hi Jason,

kernel test robot noticed the following build errors:

[auto build test ERROR on bpf-next/master]

url:    https://github.com/intel-lab-lkp/linux/commits/Jason-Xing/bpf-support-TCP_RTO_MAX_MS-for-bpf_setsockopt/20250219-161637
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
patch link:    https://lore.kernel.org/r/20250219081333.56378-2-kerneljasonxing%40gmail.com
patch subject: [PATCH bpf-next v3 1/2] bpf: support TCP_RTO_MAX_MS for bpf_setsockopt
config: i386-buildonly-randconfig-004-20250220 (https://download.01.org/0day-ci/archive/20250223/202502230656.sZc7duhR-lkp@intel.com/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250223/202502230656.sZc7duhR-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202502230656.sZc7duhR-lkp@intel.com/

All errors (new ones prefixed by >>):

   net/core/filter.c:1726:30: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    1726 |         .arg3_type      = ARG_PTR_TO_MEM | MEM_RDONLY,
         |                           ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~
   net/core/filter.c:2041:30: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    2041 |         .arg1_type      = ARG_PTR_TO_MEM | PTR_MAYBE_NULL | MEM_RDONLY,
         |                           ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~
   net/core/filter.c:2043:30: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    2043 |         .arg3_type      = ARG_PTR_TO_MEM | PTR_MAYBE_NULL | MEM_RDONLY,
         |                           ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~
   net/core/filter.c:2580:35: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    2580 |         .arg2_type      = ARG_PTR_TO_MEM | PTR_MAYBE_NULL | MEM_RDONLY,
         |                           ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~
   net/core/filter.c:4649:30: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    4649 |         .arg4_type      = ARG_PTR_TO_MEM | MEM_RDONLY,
         |                           ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~
   net/core/filter.c:4663:30: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    4663 |         .arg4_type      = ARG_PTR_TO_MEM | MEM_RDONLY,
         |                           ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~
   net/core/filter.c:4863:30: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    4863 |         .arg2_type      = ARG_PTR_TO_MEM | MEM_RDONLY,
         |                           ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~
   net/core/filter.c:4891:30: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    4891 |         .arg2_type      = ARG_PTR_TO_MEM | MEM_RDONLY,
         |                           ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~
   net/core/filter.c:5063:30: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    5063 |         .arg4_type      = ARG_PTR_TO_MEM | MEM_RDONLY,
         |                           ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~
   net/core/filter.c:5077:30: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    5077 |         .arg4_type      = ARG_PTR_TO_MEM | MEM_RDONLY,
         |                           ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~
   net/core/filter.c:5126:45: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    5126 |         .arg1_type      = ARG_PTR_TO_BTF_ID_SOCK_COMMON | PTR_MAYBE_NULL,
         |                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~
>> net/core/filter.c:5385:7: error: use of undeclared identifier 'TCP_RTO_MAX_MS'; did you mean 'TCA_RED_MAX_P'?
    5385 |         case TCP_RTO_MAX_MS:
         |              ^~~~~~~~~~~~~~
         |              TCA_RED_MAX_P
   include/uapi/linux/pkt_sched.h:258:2: note: 'TCA_RED_MAX_P' declared here
     258 |         TCA_RED_MAX_P,
         |         ^
   net/core/filter.c:5562:30: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    5562 |         .arg4_type      = ARG_PTR_TO_MEM | MEM_RDONLY,
         |                           ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~
   net/core/filter.c:5596:30: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    5596 |         .arg4_type      = ARG_PTR_TO_MEM | MEM_RDONLY,
         |                           ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~
   net/core/filter.c:5630:30: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    5630 |         .arg4_type      = ARG_PTR_TO_MEM | MEM_RDONLY,
         |                           ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~
   net/core/filter.c:5664:30: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    5664 |         .arg4_type      = ARG_PTR_TO_MEM | MEM_RDONLY,
         |                           ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~
   net/core/filter.c:5839:30: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    5839 |         .arg2_type      = ARG_PTR_TO_MEM | MEM_RDONLY,
         |                           ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~
   net/core/filter.c:6376:46: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    6376 |         .arg3_type      = ARG_PTR_TO_FIXED_SIZE_MEM | MEM_WRITE | MEM_ALIGNED,
         |                           ~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~
   net/core/filter.c:6388:46: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    6388 |         .arg3_type      = ARG_PTR_TO_FIXED_SIZE_MEM | MEM_WRITE | MEM_ALIGNED,
         |                           ~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~
   net/core/filter.c:6474:30: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    6474 |         .arg3_type      = ARG_PTR_TO_MEM | MEM_RDONLY,
         |                           ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~
   net/core/filter.c:6484:30: warning: bitwise operation between different enumeration types ('enum bpf_arg_type' and 'enum bpf_type_flag') [-Wenum-enum-conversion]
    6484 |         .arg3_type      = ARG_PTR_TO_MEM | MEM_RDONLY,
         |                           ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~
   20 warnings and 1 error generated.


vim +5385 net/core/filter.c

  5365	
  5366	static int sol_tcp_sockopt(struct sock *sk, int optname,
  5367				   char *optval, int *optlen,
  5368				   bool getopt)
  5369	{
  5370		if (sk->sk_protocol != IPPROTO_TCP)
  5371			return -EINVAL;
  5372	
  5373		switch (optname) {
  5374		case TCP_NODELAY:
  5375		case TCP_MAXSEG:
  5376		case TCP_KEEPIDLE:
  5377		case TCP_KEEPINTVL:
  5378		case TCP_KEEPCNT:
  5379		case TCP_SYNCNT:
  5380		case TCP_WINDOW_CLAMP:
  5381		case TCP_THIN_LINEAR_TIMEOUTS:
  5382		case TCP_USER_TIMEOUT:
  5383		case TCP_NOTSENT_LOWAT:
  5384		case TCP_SAVE_SYN:
> 5385		case TCP_RTO_MAX_MS:
  5386			if (*optlen != sizeof(int))
  5387				return -EINVAL;
  5388			break;
  5389		case TCP_CONGESTION:
  5390			return sol_tcp_sockopt_congestion(sk, optval, optlen, getopt);
  5391		case TCP_SAVED_SYN:
  5392			if (*optlen < 1)
  5393				return -EINVAL;
  5394			break;
  5395		case TCP_BPF_SOCK_OPS_CB_FLAGS:
  5396			if (*optlen != sizeof(int))
  5397				return -EINVAL;
  5398			if (getopt) {
  5399				struct tcp_sock *tp = tcp_sk(sk);
  5400				int cb_flags = tp->bpf_sock_ops_cb_flags;
  5401	
  5402				memcpy(optval, &cb_flags, *optlen);
  5403				return 0;
  5404			}
  5405			return bpf_sol_tcp_setsockopt(sk, optname, optval, *optlen);
  5406		default:
  5407			if (getopt)
  5408				return -EINVAL;
  5409			return bpf_sol_tcp_setsockopt(sk, optname, optval, *optlen);
  5410		}
  5411	
  5412		if (getopt) {
  5413			if (optname == TCP_SAVED_SYN) {
  5414				struct tcp_sock *tp = tcp_sk(sk);
  5415	
  5416				if (!tp->saved_syn ||
  5417				    *optlen > tcp_saved_syn_len(tp->saved_syn))
  5418					return -EINVAL;
  5419				memcpy(optval, tp->saved_syn->data, *optlen);
  5420				/* It cannot free tp->saved_syn here because it
  5421				 * does not know if the user space still needs it.
  5422				 */
  5423				return 0;
  5424			}
  5425	
  5426			return do_tcp_getsockopt(sk, SOL_TCP, optname,
  5427						 KERNEL_SOCKPTR(optval),
  5428						 KERNEL_SOCKPTR(optlen));
  5429		}
  5430	
  5431		return do_tcp_setsockopt(sk, SOL_TCP, optname,
  5432					 KERNEL_SOCKPTR(optval), *optlen);
  5433	}
  5434	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2025-02-22 22:52 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-19  8:13 [PATCH bpf-next v3 0/2] bpf: support setting max RTO for bpf_setsockopt Jason Xing
2025-02-19  8:13 ` [PATCH bpf-next v3 1/2] bpf: support TCP_RTO_MAX_MS " Jason Xing
2025-02-20  8:51   ` kernel test robot
2025-02-20  8:57     ` Jason Xing
2025-02-22  1:40       ` Philip Li
2025-02-22 22:51   ` kernel test robot
2025-02-19  8:13 ` [PATCH bpf-next v3 2/2] selftests/bpf: add rto max for bpf_setsockopt test Jason Xing
2025-02-19 21:11 ` [PATCH bpf-next v3 0/2] bpf: support setting max RTO for bpf_setsockopt patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).