Jesper Dangaard Brouer
76af06aaab
AF_XDP-interaction: Start on new tx and rx batch process code
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-29 16:02:57 +01:00
Jesper Dangaard Brouer
fcb6ef74f3
Merge pull request #30 from xdp-project/vestas02_AF_XDP_example
...
AF_XDP example added some results
2021-11-24 18:01:52 +01:00
Jesper Dangaard Brouer
021d262a0b
AF_XDP-interaction: Debug RX-batch processing
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-24 17:54:52 +01:00
Jesper Dangaard Brouer
9584e53e57
AF_XDP-interaction: Record NIC chip used
...
As drivers supports multiple chips.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-24 17:10:20 +01:00
Jesper Dangaard Brouer
457a7a5e1e
AF_XDP-interaction: Add results from system with RT kernel
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-24 17:06:25 +01:00
Jesper Dangaard Brouer
46cc148a03
AF_XDP-interaction: Add spin results from system B
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-19 16:21:33 +01:00
Jesper Dangaard Brouer
d5ff1ac505
AF_XDP-interaction: Adjust formatting#2, test GitHub rendering
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-19 16:12:14 +01:00
Jesper Dangaard Brouer
5a45bcbb16
AF_XDP-interaction: Adjust formatting, test GitHub rendering
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-19 16:07:18 +01:00
Jesper Dangaard Brouer
ff01e2a300
AF_XDP-interaction: Collect interesting data-points
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-19 15:43:45 +01:00
Jesper Dangaard Brouer
987dd6a15d
AF_XDP-interaction: Crude stats on time-delay
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-19 15:10:43 +01:00
Jesper Dangaard Brouer
5e31a04734
AF_XDP-interaction: Update results table
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-19 14:49:21 +01:00
Jesper Dangaard Brouer
d22c08c231
AF_XDP-interaction: Add some time-delay XDP to AF_XDP results
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-19 14:41:58 +01:00
Jesper Dangaard Brouer
1bb141e9e3
Extend xdp_hints_rx_time with xdp_rx_cpu
...
The latency or time-delay between XDP and AF_XDP depend highly
on whether the XDP and AF_XDP runs on same CPU or remote CPU.
Extend xdp_hints_rx_time, without worrying about the layout
as BTF will adjust, so we can determine case of same CPU or
remote CPU.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-19 14:33:58 +01:00
Jesper Dangaard Brouer
1ba7209fd4
AF_XDP-interaction: README why RX-ktime matters
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-19 13:41:27 +01:00
Jesper Dangaard Brouer
ac95a4b498
Merge pull request #29 from xdp-project/vestas01_AF_XDP_example
...
Adding AF_XDP example that implement local XDP-hints via BTF
2021-11-17 09:07:33 +01:00
Jesper Dangaard Brouer
01aa47c814
AF_XDP-interaction: Disable stats poll as it is broken
...
The stats poll doesn't take into account multiple XSK sockets.
Simply disable until there is time to fix it.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-16 20:46:46 +01:00
Jesper Dangaard Brouer
446653f4b4
AF_XDP-interaction: Add option for real-time priority
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-16 20:12:04 +01:00
Jesper Dangaard Brouer
e9ec65d667
AF_XDP-interaction: README: Explaning XDP-hints via local BTF info
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-16 19:45:43 +01:00
Jesper Dangaard Brouer
ae4f6a5846
AF_XDP-interaction: Print XSK queue_id packet was RXed on
...
Now that program process all queues it is relevant to know
what queue_id received the packet.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-16 18:49:06 +01:00
Jesper Dangaard Brouer
732bd6ec41
AF_XDP-interaction: This example bind to all queues
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-16 18:07:09 +01:00
Jesper Dangaard Brouer
0f08e825bd
AF_XDP-interaction: README update AF_XDP documentation section
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-16 17:44:27 +01:00
Jesper Dangaard Brouer
f5833725cc
AF_XDP-interaction: Fix xsk_bind_flags options
...
This allows enabling another AF_XDP mode e.g. --zero-copy.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-16 17:12:29 +01:00
Jesper Dangaard Brouer
37f00015b6
AF_XDP-interaction: Cleanups
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-16 17:10:34 +01:00
Jesper Dangaard Brouer
a80aab5ae7
AF_XDP-interaction: Allocate more frame when we have more queues
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-16 16:29:38 +01:00
Jesper Dangaard Brouer
e558ab94e2
Make simple mem_frame_allocator more dynamic
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-16 16:07:35 +01:00
Jesper Dangaard Brouer
34dd6fc6c4
AF_XDP-interaction: Refactor a bit
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-16 15:53:56 +01:00
Jesper Dangaard Brouer
ca9ef962de
AF_XDP-interaction: Update ethtool_utils
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-16 15:24:31 +01:00
Jesper Dangaard Brouer
9bca7ea4ff
AF_XDP-interaction: Implement ethtool_get_max_queues
...
Need to get configured queues on the NIC device
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-16 13:03:38 +01:00
Jesper Dangaard Brouer
9c3a6a7a9d
AF_XDP-interaction: Default to AF_XDP copy mode
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-16 12:10:04 +01:00
Jesper Dangaard Brouer
8806cf2264
AF_XDP-interaction: refactor FQ+CQ per xsk_socket_info
...
Cannot share/associate the FQ (Fill Queue) and CQ (Completion Q) with
umem container (xsk_umem_info). This is the reason current program
cannot handle packets for each queue ID.
As described in [1] we need more FQ and CQ ring pairs, a pair per for each
unique netdev and queue IP tuple.
Thus, add FQ and CQ for each queue id in struct xsk_socket_info.
[1] https://www.kernel.org/doc/html/latest/networking/af_xdp.html
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-15 12:54:22 +01:00
Jesper Dangaard Brouer
529256b00c
Mannally insert XSK FDs into xsks_map
...
Do like enter_xsks_into_map() in kernels xdpsock_user.c
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-12 22:19:45 +01:00
Jesper Dangaard Brouer
062b5d96fb
AF_XDP-interaction: call handle_receive_packets on all XSKs
...
Strangely multiple RX-queues still doesn't work
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-12 22:03:13 +01:00
Jesper Dangaard Brouer
e0b044085c
AF_XDP-interaction: Processing multiple XSKs doesn't work
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-12 20:52:23 +01:00
Jesper Dangaard Brouer
cf47f471aa
AF_XDP-interaction: Handle queue id per xsk socket
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-12 19:15:25 +01:00
Jesper Dangaard Brouer
acf251c8bc
AF_XDP-interaction: Introduce xsk_container for multiple XSK sockets
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-12 18:53:41 +01:00
Jesper Dangaard Brouer
7150416ccf
AF_XDP-interaction: Split out memory allocator for umem frames
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-12 15:44:12 +01:00
Jesper Dangaard Brouer
d1d57c1dfc
AF_XDP-interaction: Prepare for multiple XSK sockets
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-12 13:23:29 +01:00
Jesper Dangaard Brouer
de646516c3
AF_XDP-interaction: Shared header for defining MAX_AF_SOCKS
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-12 12:46:11 +01:00
Jesper Dangaard Brouer
396854e2e1
AF_XDP-interaction: Add --spin-mode that disables --wakeup-mode
...
And default that AF_XDP userspace prog to use wakeup-mode
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-12 11:47:48 +01:00
Jesper Dangaard Brouer
b950ab63f0
AF_XDP-interaction: rename --poll-mode to --wakeup-mode
...
It is confusing to name the option what will wait for packets
on the file descriptor, for --poll, just because the function
call have this name. It confusing as AF_XDP users often want
to busy-poll for packets (for max performance reasons).
Name the new option --wakeup instead of --wait as the effect
of waiting for the FD is that the kernel needs to wakeup
the userspace process.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-12 10:59:37 +01:00
Jesper Dangaard Brouer
8db4d3b33c
lib_xsk_extend: Avoid crashing in XSK_BTF_READ_xxx macros
...
The macros XSK_BTF_READ_xxx doesn't handle or report on errors
if the input or field were wrong, which is not uncommon for macros.
The bad behavior is that the macro continue to dereference the
pointer even-when xsk_btf__read_xxx() functions returns an error.
This often leads to crashing the application.
Change macro to only dereference when no errors were reported.
Side-note: The compiler warnings will detect if API user didn't
init the 'dest' value with a default value. As the effect of
the change is that the 'dest' value will not be touch, and thus
contain the value before the macro was used.
Example:
warning: ‘mark’ may be used uninitialized in this function
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-12 10:01:58 +01:00
Jesper Dangaard Brouer
1337b2dbaa
AF_XDP-interaction: Reorg BTF access code
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-12 09:18:04 +01:00
Jesper Dangaard Brouer
e3c2ded159
AF_XDP-interaction: Move BTF code to separate setup vs. using
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-11 15:56:22 +01:00
Jesper Dangaard Brouer
8703e1a320
AF_XDP-interaction: Explain xsk_btf__read_field in user code
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-11 14:34:43 +01:00
Jesper Dangaard Brouer
a333281166
lib_xsk_extend: Explain xsk_btf__read_field hashmap caching
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-09 22:10:43 +01:00
Jesper Dangaard Brouer
f61c9be97f
lib_xsk_extend: Rename xsk_btf__read_member to xsk_btf__read
...
Making it the main API.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-09 21:59:14 +01:00
Jesper Dangaard Brouer
9b36c233fe
lib_xsk_extend: Let XSK_BTF_READ_INTO call xsk_btf__read_member
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-09 21:52:56 +01:00
Jesper Dangaard Brouer
465f069fab
lib_xsk_extend: API change introduce xsk_btf__read_field
...
Rename xsk_btf__read to xsk_btf__read_field.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-09 20:56:32 +01:00
Jesper Dangaard Brouer
be949736ef
AF_XDP-interaction: Also introduce BTF mirror for struct xdp_hints_mark
...
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-09 19:39:50 +01:00
Jesper Dangaard Brouer
219ea356a4
AF_XDP-interaction: btf_id zero indicate no BTF info
...
Zero init xdp_hints_rx_time, which means xdp_hints_rx_time.btf_type_id
is zero if setup_btf_info() didn't find the struct name.
In print_meta_info_via_btf() we also exit if btf_id is zero, as
this isn't a valid BTF type id.
Thus, we don't need to explicitly handle "error" case of a btf_type_id
being zero, it will just naturally not match when userspace could not
find the struct name.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com >
2021-11-09 17:47:11 +01:00