Need to modify the ds field to support upcoming
Wifi QoS Alliance spec. Instead of adding generic
function for just modifying the ds field, add
skb_store_bytes for BPF_PROG_TYPE_CGROUP_SKB. This
allows other fields in the network and transport header
to be modified in the future.
Signed-off-by: Tyler Wear <redacted>
---
net/core/filter.c | 2 ++
1 file changed, 2 insertions(+)
From: Yonghong Song <hidden> Date: 2021-12-22 03:44:04
On 12/21/21 6:27 PM, Tyler Wear wrote:
Need to modify the ds field to support upcoming
Wifi QoS Alliance spec. Instead of adding generic
function for just modifying the ds field, add
skb_store_bytes for BPF_PROG_TYPE_CGROUP_SKB. This
allows other fields in the network and transport header
to be modified in the future.
Could change tag from "[PATCH]" to "[PATCH bpf-next]"?
Please also indicate the version of the patch, so in
this case, it should be "[PATCH bpf-next v2]".
I think you can add more contents in the commit
message about why existing bpf_setsockopt() won't work
and why CGROUP_UDP[4|6]_SENDMSG is not preferred.
These have been discussed in v1 of this patch and they
are valuable for people to understand full context
and reasoning.
Typically different 'case's are added in chronological order to people
can guess what is added earlier and what is added later. Maybe add
the new helper after BPF_FUNC_perf_event_output?
case BPF_FUNC_get_local_storage:
return &bpf_get_local_storage_proto;
case BPF_FUNC_sk_fullsock:
Please add a test case to exercise the new usage of bpf_skb_store_bytes() helper. You may piggy back on
some existing cg_skb progs if it is easier to do.
Need to modify the ds field to support upcoming Wifi QoS Alliance
spec. Instead of adding generic function for just modifying the ds
field, add skb_store_bytes for BPF_PROG_TYPE_CGROUP_SKB. This allows
other fields in the network and transport header to be modified in the
future.
Could change tag from "[PATCH]" to "[PATCH bpf-next]"?
Please also indicate the version of the patch, so in this case, it should be "[PATCH bpf-next v2]".
I think you can add more contents in the commit message about why existing bpf_setsockopt() won't work and why
CGROUP_UDP[4|6]_SENDMSG is not preferred.
These have been discussed in v1 of this patch and they are valuable for people to understand full context and reasoning.
Typically different 'case's are added in chronological order to people can guess what is added earlier and what is added later. Maybe
add the new helper after BPF_FUNC_perf_event_output?
quoted
case BPF_FUNC_get_local_storage:
return &bpf_get_local_storage_proto;
case BPF_FUNC_sk_fullsock:
Please add a test case to exercise the new usage of
bpf_skb_store_bytes() helper. You may piggy back on some existing cg_skb progs if it is easier to do.
Would it be sufficient to change the dscp value in tools/testing/selftests/bpf/progs/test_sock_fields.c via bpf_skb_store_bytes()
From: Martin KaFai Lau <hidden> Date: 2021-12-22 23:51:05
On Wed, Dec 22, 2021 at 10:49:45PM +0000, Tyler Wear wrote:
quoted
On 12/21/21 6:27 PM, Tyler Wear wrote:
quoted
Need to modify the ds field to support upcoming Wifi QoS Alliance
spec. Instead of adding generic function for just modifying the ds
field, add skb_store_bytes for BPF_PROG_TYPE_CGROUP_SKB. This allows
other fields in the network and transport header to be modified in the
future.
Could change tag from "[PATCH]" to "[PATCH bpf-next]"?
Please also indicate the version of the patch, so in this case, it should be "[PATCH bpf-next v2]".
I think you can add more contents in the commit message about why existing bpf_setsockopt() won't work and why
CGROUP_UDP[4|6]_SENDMSG is not preferred.
These have been discussed in v1 of this patch and they are valuable for people to understand full context and reasoning.
Typically different 'case's are added in chronological order to people can guess what is added earlier and what is added later. Maybe
add the new helper after BPF_FUNC_perf_event_output?
quoted
case BPF_FUNC_get_local_storage:
return &bpf_get_local_storage_proto;
case BPF_FUNC_sk_fullsock:
Please add a test case to exercise the new usage of
bpf_skb_store_bytes() helper. You may piggy back on some existing cg_skb progs if it is easier to do.
Would it be sufficient to change the dscp value in tools/testing/selftests/bpf/progs/test_sock_fields.c via bpf_skb_store_bytes()
test_sock_fields focus on sk instead of skb, so it will not be a good fit.
load_bytes_relative.c may be a better fit.
The minimal is to write the dscp value by bpf_skb_store_bytes()
and be able to read it back at the receiver side (e.g.
by making a TCP connection like load_bytes_relative).
-----Original Message-----
From: Martin KaFai Lau <redacted>
Sent: Wednesday, December 22, 2021 3:51 PM
To: Tyler Wear <redacted>
Cc: Yonghong Song <redacted>; Tyler Wear (QUIC) <redacted>; netdev@vger.kernel.org; bpf@vger.kernel.org;
maze@google.com
Subject: Re: [PATCH] Add skb_store_bytes() for BPF_PROG_TYPE_CGROUP_SKB
WARNING: This email originated from outside of Qualcomm. Please be wary of any links or attachments, and do not enable macros.
On Wed, Dec 22, 2021 at 10:49:45PM +0000, Tyler Wear wrote:
quoted
quoted
On 12/21/21 6:27 PM, Tyler Wear wrote:
quoted
Need to modify the ds field to support upcoming Wifi QoS Alliance
spec. Instead of adding generic function for just modifying the ds
field, add skb_store_bytes for BPF_PROG_TYPE_CGROUP_SKB. This
allows other fields in the network and transport header to be
modified in the future.
Could change tag from "[PATCH]" to "[PATCH bpf-next]"?
Please also indicate the version of the patch, so in this case, it should be "[PATCH bpf-next v2]".
I think you can add more contents in the commit message about why
existing bpf_setsockopt() won't work and why CGROUP_UDP[4|6]_SENDMSG is not preferred.
These have been discussed in v1 of this patch and they are valuable for people to understand full context and reasoning.
Typically different 'case's are added in chronological order to
people can guess what is added earlier and what is added later. Maybe add the new helper after BPF_FUNC_perf_event_output?
quoted
case BPF_FUNC_get_local_storage:
return &bpf_get_local_storage_proto;
case BPF_FUNC_sk_fullsock:
Please add a test case to exercise the new usage of
bpf_skb_store_bytes() helper. You may piggy back on some existing cg_skb progs if it is easier to do.
Would it be sufficient to change the dscp value in
tools/testing/selftests/bpf/progs/test_sock_fields.c via
bpf_skb_store_bytes()
test_sock_fields focus on sk instead of skb, so it will not be a good fit.
load_bytes_relative.c may be a better fit.
The minimal is to write the dscp value by bpf_skb_store_bytes() and be able to read it back at the receiver side (e.g.
by making a TCP connection like load_bytes_relative).
Unable to run any bpf tests do to errors below. These occur with and without the new patch. Is this a known issue?
Is the new test case required since bpf_skb_store_bytes() is already a tested function for other prog types?
libbpf: failed to find BTF for extern 'bpf_testmod_invalid_mod_kfunc' [18] section: -2
Error: failed to open BPF object file: No such file or directory
libbpf: failed to find BTF info for global/extern symbol 'my_tid'
Error: failed to link '/local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/linked_funcs1.o': Unknown error -2 (-2)
libbpf: failed to find BTF for extern 'bpf_kfunc_call_test1' [27] section: -2
Error: failed to open BPF object file: No such file or directory
make: *** [Makefile:484: /local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/test_ksyms_module.skel.h] Error 255
make: *** Deleting file '/local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/test_ksyms_module.skel.h'
make: *** Waiting for unfinished jobs....
make: *** [Makefile:484: /local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/kfunc_call_test_subprog.skel.h] Error 255
make: *** Deleting file '/local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/kfunc_call_test_subprog.skel.h'
make: *** [Makefile:482: /local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/linked_funcs.skel.h] Error 254
libbpf: failed to find BTF info for global/extern symbol 'input_rodata_weak'
Error: failed to link '/local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/linked_vars1.o': Unknown error -2 (-2)
make: *** [Makefile:482: /local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/linked_vars.skel.h] Error 254
libbpf: failed to find BTF for extern 'tcp_cong_avoid_ai' [27] section: -2
Error: failed to open BPF object file: No such file or directory
make: *** [Makefile:486: /local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/bpf_cubic.skel.h] Error 255
make: *** Deleting file '/local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/bpf_cubic.skel.h'
libbpf: failed to find BTF for extern 'bpf_kfunc_call_test1' [28] section: -2
Error: failed to open BPF object file: No such file or directory
make: *** [Makefile:486: /local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/kfunc_call_test.lskel.h] Error 255
make: *** Deleting file '/local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/kfunc_call_test.lskel.h'
libbpf: failed to find BTF for extern 'tcp_reno_cong_avoid' [38] section: -2
Error: failed to open BPF object file: No such file or directory
libbpf: failed to find BTF for extern 'bpf_testmod_invalid_mod_kfunc' [18] section: -2
Error: failed to open BPF object file: No such file or directory
make: *** [Makefile:486: /local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/bpf_dctcp.skel.h] Error 255
make: *** Deleting file '/local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/bpf_dctcp.skel.h'
make: *** [Makefile:486: /local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/test_ksyms_module.lskel.h] Error 255
make: *** Deleting file '/local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/test_ksyms_module.lskel.h'
From: Martin KaFai Lau <hidden> Date: 2021-12-29 21:05:59
On Wed, Dec 29, 2021 at 06:29:05PM +0000, Tyler Wear wrote:
Unable to run any bpf tests do to errors below. These occur with and without the new patch. Is this a known issue?
Is the new test case required since bpf_skb_store_bytes() is already a tested function for other prog types?
libbpf: failed to find BTF for extern 'bpf_testmod_invalid_mod_kfunc' [18] section: -2
Error: failed to open BPF object file: No such file or directory
libbpf: failed to find BTF info for global/extern symbol 'my_tid'
Error: failed to link '/local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/linked_funcs1.o': Unknown error -2 (-2)
libbpf: failed to find BTF for extern 'bpf_kfunc_call_test1' [27] section: -2
tools/testing/selftests/bpf/README.rst has details on these.
Ensure the llvm and pahole are up to date.
Also take a look at the "Testing patches" and "LLVM" section
in Documentation/bpf/bpf_devel_QA.rst.
-----Original Message-----
From: Martin KaFai Lau <redacted>
Sent: Wednesday, December 29, 2021 1:06 PM
To: Tyler Wear <redacted>
Cc: Yonghong Song <redacted>; Tyler Wear (QUIC) <redacted>; netdev@vger.kernel.org; bpf@vger.kernel.org;
maze@google.com
Subject: Re: [PATCH] Add skb_store_bytes() for BPF_PROG_TYPE_CGROUP_SKB
WARNING: This email originated from outside of Qualcomm. Please be wary of any links or attachments, and do not enable macros.
On Wed, Dec 29, 2021 at 06:29:05PM +0000, Tyler Wear wrote:
quoted
Unable to run any bpf tests do to errors below. These occur with and without the new patch. Is this a known issue?
Is the new test case required since bpf_skb_store_bytes() is already a tested function for other prog types?
libbpf: failed to find BTF for extern 'bpf_testmod_invalid_mod_kfunc'
[18] section: -2
Error: failed to open BPF object file: No such file or directory
libbpf: failed to find BTF info for global/extern symbol 'my_tid'
Error: failed to link
'/local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/linked_
funcs1.o': Unknown error -2 (-2)
libbpf: failed to find BTF for extern 'bpf_kfunc_call_test1' [27]
section: -2
tools/testing/selftests/bpf/README.rst has details on these.
Ensure the llvm and pahole are up to date.
Also take a look at the "Testing patches" and "LLVM" section in Documentation/bpf/bpf_devel_QA.rst.
This will also require adding the l3/l4_ csum_replace() api's then. Adding the csum_replace() to a cgroup test case results in the below error during bpf program validation:
"BPF_LD_[ABS|IND] instructions not allowed for this program type"
Is there something else that needs to be added? Or would it be better to create the function just for ds_field?
From: Yonghong Song <hidden> Date: 2022-01-06 07:51:10
On 1/4/22 4:27 PM, Tyler Wear (QUIC) wrote:
quoted
-----Original Message-----
From: Martin KaFai Lau <redacted>
Sent: Wednesday, December 29, 2021 1:06 PM
To: Tyler Wear <redacted>
Cc: Yonghong Song <redacted>; Tyler Wear (QUIC) <redacted>; netdev@vger.kernel.org; bpf@vger.kernel.org;
maze@google.com
Subject: Re: [PATCH] Add skb_store_bytes() for BPF_PROG_TYPE_CGROUP_SKB
WARNING: This email originated from outside of Qualcomm. Please be wary of any links or attachments, and do not enable macros.
On Wed, Dec 29, 2021 at 06:29:05PM +0000, Tyler Wear wrote:
quoted
Unable to run any bpf tests do to errors below. These occur with and without the new patch. Is this a known issue?
Is the new test case required since bpf_skb_store_bytes() is already a tested function for other prog types?
libbpf: failed to find BTF for extern 'bpf_testmod_invalid_mod_kfunc'
[18] section: -2
Error: failed to open BPF object file: No such file or directory
libbpf: failed to find BTF info for global/extern symbol 'my_tid'
Error: failed to link
'/local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/linked_
funcs1.o': Unknown error -2 (-2)
libbpf: failed to find BTF for extern 'bpf_kfunc_call_test1' [27]
section: -2
tools/testing/selftests/bpf/README.rst has details on these.
Ensure the llvm and pahole are up to date.
Also take a look at the "Testing patches" and "LLVM" section in Documentation/bpf/bpf_devel_QA.rst.
This will also require adding the l3/l4_ csum_replace() api's then. Adding the csum_replace() to a cgroup test case results in the below error during bpf program validation:
"BPF_LD_[ABS|IND] instructions not allowed for this program type"
I saw you posted a new patch, so it seems you have resolved this BPF_LD_[ABS|IND] issue. Do you know what is the reason for this verification error? Here, the program type is cgroup_skb which should not mess up with BPF_LD_[ABS|IND] which is mostly for classic bpf to extended bpf conversion. Did I miss anything here?
Is there something else that needs to be added? Or would it be better to create the function just for ds_field?
-----Original Message-----
From: Yonghong Song <redacted>
Sent: Wednesday, January 5, 2022 11:51 PM
To: Tyler Wear (QUIC) <redacted>; Martin KaFai Lau <redacted>
Cc: netdev@vger.kernel.org; bpf@vger.kernel.org; maze@google.com
Subject: Re: [PATCH] Add skb_store_bytes() for BPF_PROG_TYPE_CGROUP_SKB
WARNING: This email originated from outside of Qualcomm. Please be wary of any links or attachments, and do not enable macros.
On 1/4/22 4:27 PM, Tyler Wear (QUIC) wrote:
quoted
quoted
-----Original Message-----
From: Martin KaFai Lau <redacted>
Sent: Wednesday, December 29, 2021 1:06 PM
To: Tyler Wear <redacted>
Cc: Yonghong Song <redacted>; Tyler Wear (QUIC)
[off-list ref]; netdev@vger.kernel.org;
bpf@vger.kernel.org; maze@google.com
Subject: Re: [PATCH] Add skb_store_bytes() for
BPF_PROG_TYPE_CGROUP_SKB
WARNING: This email originated from outside of Qualcomm. Please be wary of any links or attachments, and do not enable
macros.
quoted
quoted
On Wed, Dec 29, 2021 at 06:29:05PM +0000, Tyler Wear wrote:
quoted
Unable to run any bpf tests do to errors below. These occur with and without the new patch. Is this a known issue?
Is the new test case required since bpf_skb_store_bytes() is already a tested function for other prog types?
libbpf: failed to find BTF for extern 'bpf_testmod_invalid_mod_kfunc'
[18] section: -2
Error: failed to open BPF object file: No such file or directory
libbpf: failed to find BTF info for global/extern symbol 'my_tid'
Error: failed to link
'/local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/linke
d_
funcs1.o': Unknown error -2 (-2)
libbpf: failed to find BTF for extern 'bpf_kfunc_call_test1' [27]
section: -2
tools/testing/selftests/bpf/README.rst has details on these.
Ensure the llvm and pahole are up to date.
Also take a look at the "Testing patches" and "LLVM" section in Documentation/bpf/bpf_devel_QA.rst.
This will also require adding the l3/l4_ csum_replace() api's then. Adding the csum_replace() to a cgroup test case results in the
below error during bpf program validation:
quoted
"BPF_LD_[ABS|IND] instructions not allowed for this program type"
I saw you posted a new patch, so it seems you have resolved this BPF_LD_[ABS|IND] issue. Do you know what is the reason for this
verification error? Here, the program type is cgroup_skb which should not mess up with BPF_LD_[ABS|IND] which is mostly for classic
bpf to extended bpf conversion. Did I miss anything here?
Was an issue with using bpf_legacy.h to load bytes.
From: Yonghong Song <hidden> Date: 2022-01-06 22:36:04
On 1/6/22 9:18 AM, Tyler Wear (QUIC) wrote:
quoted
-----Original Message-----
From: Yonghong Song <redacted>
Sent: Wednesday, January 5, 2022 11:51 PM
To: Tyler Wear (QUIC) <redacted>; Martin KaFai Lau <redacted>
Cc: netdev@vger.kernel.org; bpf@vger.kernel.org; maze@google.com
Subject: Re: [PATCH] Add skb_store_bytes() for BPF_PROG_TYPE_CGROUP_SKB
WARNING: This email originated from outside of Qualcomm. Please be wary of any links or attachments, and do not enable macros.
On 1/4/22 4:27 PM, Tyler Wear (QUIC) wrote:
quoted
quoted
-----Original Message-----
From: Martin KaFai Lau <redacted>
Sent: Wednesday, December 29, 2021 1:06 PM
To: Tyler Wear <redacted>
Cc: Yonghong Song <redacted>; Tyler Wear (QUIC)
[off-list ref]; netdev@vger.kernel.org;
bpf@vger.kernel.org; maze@google.com
Subject: Re: [PATCH] Add skb_store_bytes() for
BPF_PROG_TYPE_CGROUP_SKB
WARNING: This email originated from outside of Qualcomm. Please be wary of any links or attachments, and do not enable
macros.
quoted
quoted
On Wed, Dec 29, 2021 at 06:29:05PM +0000, Tyler Wear wrote:
quoted
Unable to run any bpf tests do to errors below. These occur with and without the new patch. Is this a known issue?
Is the new test case required since bpf_skb_store_bytes() is already a tested function for other prog types?
libbpf: failed to find BTF for extern 'bpf_testmod_invalid_mod_kfunc'
[18] section: -2
Error: failed to open BPF object file: No such file or directory
libbpf: failed to find BTF info for global/extern symbol 'my_tid'
Error: failed to link
'/local/mnt/workspace/linux-stable/tools/testing/selftests/bpf/linke
d_
funcs1.o': Unknown error -2 (-2)
libbpf: failed to find BTF for extern 'bpf_kfunc_call_test1' [27]
section: -2
tools/testing/selftests/bpf/README.rst has details on these.
Ensure the llvm and pahole are up to date.
Also take a look at the "Testing patches" and "LLVM" section in Documentation/bpf/bpf_devel_QA.rst.
This will also require adding the l3/l4_ csum_replace() api's then. Adding the csum_replace() to a cgroup test case results in the
below error during bpf program validation:
quoted
"BPF_LD_[ABS|IND] instructions not allowed for this program type"
I saw you posted a new patch, so it seems you have resolved this BPF_LD_[ABS|IND] issue. Do you know what is the reason for this
verification error? Here, the program type is cgroup_skb which should not mess up with BPF_LD_[ABS|IND] which is mostly for classic
bpf to extended bpf conversion. Did I miss anything here?
Was an issue with using bpf_legacy.h to load bytes.
Okay, I see. that makes sense. The helper bpf_skb_load_bytes() is the way to go.