Lorenzo Bianconi
056e9bcc19
xdp: add xdp_set_features_flag utility routine
...
Introduce xdp_set_features_flag utility routine in order to update
dynamically xdp_features according to the dynamic hw configuration via
ethtool (e.g. changing number of hw rx/tx queues).
Add xdp_clear_features_flag() in order to clear all xdp_feature flag.
Reviewed-by: Shay Agroskin <shayagr@amazon.com >
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Signed-off-by: Jakub Kicinski <kuba@kernel.org >
Signed-off-by: Daniel Müller <deso@posteo.net >
2023-03-30 16:24:24 -07:00
Lorenzo Bianconi
6333ea6a3a
libbpf: Always use libbpf_err to return an error in bpf_xdp_query()
...
In order to properly set errno, rely on libbpf_err utility routine in
bpf_xdp_query() to return an error to the caller.
Fixes: 04d58f1b26a4 ("libbpf: add API to get XDP/XSK supported features")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net >
Link: https://lore.kernel.org/bpf/827d40181f9f90fb37702f44328e1614df7c0503.1675768112.git.lorenzo@kernel.org
2023-02-17 17:17:27 -08:00
Lorenzo Bianconi
547881e04e
libbpf: add API to get XDP/XSK supported features
...
Extend bpf_xdp_query routine in order to get XDP/XSK supported features
of netdev over route netlink interface.
Extend libbpf netlink implementation in order to support netlink_generic
protocol.
Co-developed-by: Kumar Kartikeya Dwivedi <memxor@gmail.com >
Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com >
Co-developed-by: Marek Majtyka <alardam@gmail.com >
Signed-off-by: Marek Majtyka <alardam@gmail.com >
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://lore.kernel.org/r/a72609ef4f0de7fee5376c40dbf54ad7f13bfb8d.1675245258.git.lorenzo@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org >
2023-02-17 17:17:27 -08:00
Lorenzo Bianconi
41b96a8c08
libbpf: add the capability to specify netlink proto in libbpf_netlink_send_recv
...
This is a preliminary patch in order to introduce netlink_generic
protocol support to libbpf.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://lore.kernel.org/r/7878a54667e74afeec3ee519999c044bd514b44c.1675245258.git.lorenzo@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org >
2023-02-17 17:17:27 -08:00
Lorenzo Bianconi
c245b0eeaf
libbpf: Deprecate xdp_cpumap, xdp_devmap and classifier sec definitions
...
Deprecate xdp_cpumap, xdp_devmap and classifier sec definitions.
Introduce xdp/devmap and xdp/cpumap definitions according to the
standard for SEC("") in libbpf:
- prog_type.prog_flags/attach_place
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Signed-off-by: Andrii Nakryiko <andrii@kernel.org >
Link: https://lore.kernel.org/bpf/5c7bd9426b3ce6a31d9a4b1f97eb299e1467fc52.1643727185.git.lorenzo@kernel.org
2022-02-04 10:27:02 -08:00
Lorenzo Bianconi
fb0b8a7cea
net: xdp: introduce bpf_xdp_pointer utility routine
...
Similar to skb_header_pointer, introduce bpf_xdp_pointer utility routine
to return a pointer to a given position in the xdp_buff if the requested
area (offset + len) is contained in a contiguous memory area otherwise it
will be copied in a bounce buffer provided by the caller.
Similar to the tc counterpart, introduce the two following xdp helpers:
- bpf_xdp_load_bytes
- bpf_xdp_store_bytes
Reviewed-by: Eelco Chaudron <echaudro@redhat.com >
Acked-by: Toke Hoiland-Jorgensen <toke@redhat.com >
Acked-by: John Fastabend <john.fastabend@gmail.com >
Acked-by: Jakub Kicinski <kuba@kernel.org >
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://lore.kernel.org/r/ab285c1efdd5b7a9d361348b1e7d3ef49f6382b3.1642758637.git.lorenzo@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org >
2022-01-25 23:37:04 -08:00
Lorenzo Bianconi
4ae89237d4
libbpf: Add SEC name for xdp frags programs
...
Introduce support for the following SEC entries for XDP frags
property:
- SEC("xdp.frags")
- SEC("xdp.frags/devmap")
- SEC("xdp.frags/cpumap")
Acked-by: Toke Hoiland-Jorgensen <toke@redhat.com >
Acked-by: John Fastabend <john.fastabend@gmail.com >
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://lore.kernel.org/r/af23b6e4841c171ad1af01917839b77847a4bc27.1642758637.git.lorenzo@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org >
2022-01-25 23:37:04 -08:00
Lorenzo Bianconi
9af0e19376
bpf: introduce bpf_xdp_get_buff_len helper
...
Introduce bpf_xdp_get_buff_len helper in order to return the xdp buffer
total size (linear and paged area)
Acked-by: Toke Hoiland-Jorgensen <toke@redhat.com >
Acked-by: John Fastabend <john.fastabend@gmail.com >
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://lore.kernel.org/r/aac9ac3504c84026cf66a3c71b7c5ae89bc991be.1642758637.git.lorenzo@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org >
2022-01-25 23:37:04 -08:00
Lorenzo Bianconi
57df70e180
bpf: introduce BPF_F_XDP_HAS_FRAGS flag in prog_flags loading the ebpf program
...
Introduce BPF_F_XDP_HAS_FRAGS and the related field in bpf_prog_aux
in order to notify the driver the loaded program support xdp frags.
Acked-by: Toke Hoiland-Jorgensen <toke@redhat.com >
Acked-by: John Fastabend <john.fastabend@gmail.com >
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Link: https://lore.kernel.org/r/db2e8075b7032a356003f407d1b0deb99adaa0ed.1642758637.git.lorenzo@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org >
2022-01-25 23:37:04 -08:00
Lorenzo Bianconi
4a5aecf034
libbpf: Add SEC name for xdp programs attached to CPUMAP
...
As for DEVMAP, support SEC("xdp_cpumap/") as a short cut for loading
the program with type BPF_PROG_TYPE_XDP and expected attach type
BPF_XDP_CPUMAP.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net >
Acked-by: Jesper Dangaard Brouer <brouer@redhat.com >
Acked-by: Andrii Nakryiko <andriin@fb.com >
Link: https://lore.kernel.org/bpf/33174c41993a6d860d9c7c1f280a2477ee39ed11.1594734381.git.lorenzo@kernel.org
2020-07-28 14:03:17 -07:00
Lorenzo Bianconi
77f11b3674
bpf: cpumap: Add the possibility to attach an eBPF program to cpumap
...
Introduce the capability to attach an eBPF program to cpumap entries.
The idea behind this feature is to add the possibility to define on
which CPU run the eBPF program if the underlying hw does not support
RSS. Current supported verdicts are XDP_DROP and XDP_PASS.
This patch has been tested on Marvell ESPRESSObin using xdp_redirect_cpu
sample available in the kernel tree to identify possible performance
regressions. Results show there are no observable differences in
packet-per-second:
$./xdp_redirect_cpu --progname xdp_cpu_map0 --dev eth0 --cpu 1
rx: 354.8 Kpps
rx: 356.0 Kpps
rx: 356.8 Kpps
rx: 356.3 Kpps
rx: 356.6 Kpps
rx: 356.6 Kpps
rx: 356.7 Kpps
rx: 355.8 Kpps
rx: 356.8 Kpps
rx: 356.8 Kpps
Co-developed-by: Jesper Dangaard Brouer <brouer@redhat.com >
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net >
Acked-by: Jesper Dangaard Brouer <brouer@redhat.com >
Link: https://lore.kernel.org/bpf/5c9febdf903d810b3415732e5cd98491d7d9067a.1594734381.git.lorenzo@kernel.org
2020-07-28 14:03:17 -07:00
Lorenzo Bianconi
cd46c9d67e
cpumap: Formalize map value as a named struct
...
As it has been already done for devmap, introduce 'struct bpf_cpumap_val'
to formalize the expected values that can be passed in for a CPUMAP.
Update cpumap code to use the struct.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org >
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net >
Acked-by: Jesper Dangaard Brouer <brouer@redhat.com >
Link: https://lore.kernel.org/bpf/754f950674665dae6139c061d28c1d982aaf4170.1594734381.git.lorenzo@kernel.org
2020-07-28 14:03:17 -07:00