netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH bpf-next 0/6] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP
@ 2025-02-20  8:41 Tushar Vyavahare
  2025-02-20  8:41 ` [PATCH bpf-next 1/6] selftests/xsk: Add packet stream replacement functions Tushar Vyavahare
                   ` (5 more replies)
  0 siblings, 6 replies; 13+ messages in thread
From: Tushar Vyavahare @ 2025-02-20  8:41 UTC (permalink / raw)
  To: bpf
  Cc: netdev, bjorn, magnus.karlsson, maciej.fijalkowski,
	jonathan.lemon, davem, kuba, pabeni, ast, daniel,
	tushar.vyavahare

This patch series adds tests to validate the XDP tail adjustment
functionality, focusing on its use within the AF_XDP context. The tests
verify dynamic packet size manipulation using the bpf_xdp_adjust_tail()
helper function, covering both single and multi-buffer scenarios.

---
Patch Summary:

1. Add functions to replace packet streams for ifobjects and test_spec.

2. Introduce xsk_xdp_adjust_tail to adjust packet tails dynamically.

3. Add userspace function to adjust packet tails using XDP program.

4. Add function to check if bpf_xdp_adjust_tail() is supported.

5. Add function to test packet resizing using bpf_xdp_adjust_tail.

6. Introduce test shrinking and growing packets using
   bpf_xdp_adjust_tail(), and cover multi-buffer scenarios when used with
   AF_XDP.
---

Tushar Vyavahare (6):
  selftests/xsk: Add packet stream replacement functions
  selftests/xsk: Add tail adjustment functionality to XDP
  selftests/xsk: Add testapp_xdp_adjust_tail function to userspace for
    packet tail adjustment
  selftests/xsk: Add support check for bpf_xdp_adjust_tail() helper in
    xskxceiver
  selftests/xsk: Implement packet resizing test with bpf_xdp_adjust_tail
  selftests/xsk: Add packet resizing tests with bpf_xdp_adjust_tail for
    AF_XDP

Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>

 .../selftests/bpf/progs/xsk_xdp_progs.c       |  48 ++++++
 tools/testing/selftests/bpf/xsk_xdp_common.h  |   1 +
 tools/testing/selftests/bpf/xskxceiver.c      | 147 ++++++++++++++++--
 tools/testing/selftests/bpf/xskxceiver.h      |   2 +
 4 files changed, 183 insertions(+), 15 deletions(-)

-- 
2.34.1


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

* [PATCH bpf-next 1/6] selftests/xsk: Add packet stream replacement functions
  2025-02-20  8:41 [PATCH bpf-next 0/6] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP Tushar Vyavahare
@ 2025-02-20  8:41 ` Tushar Vyavahare
  2025-02-20 17:45   ` Stanislav Fomichev
  2025-02-20  8:41 ` [PATCH bpf-next 2/6] selftests/xsk: Add tail adjustment functionality to XDP Tushar Vyavahare
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 13+ messages in thread
From: Tushar Vyavahare @ 2025-02-20  8:41 UTC (permalink / raw)
  To: bpf
  Cc: netdev, bjorn, magnus.karlsson, maciej.fijalkowski,
	jonathan.lemon, davem, kuba, pabeni, ast, daniel,
	tushar.vyavahare

Add pkt_stream_replace function to replace the packet stream for a given
ifobject. Add pkt_stream_replace_both function to replace the packet
streams for both transmit and receive ifobject in test_spec. Enhance test
framework to handle packet stream replacements efficiently.

Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>
---
 tools/testing/selftests/bpf/xskxceiver.c | 29 +++++++++++++-----------
 1 file changed, 16 insertions(+), 13 deletions(-)

diff --git a/tools/testing/selftests/bpf/xskxceiver.c b/tools/testing/selftests/bpf/xskxceiver.c
index 11f047b8af75..1d9b03666ee6 100644
--- a/tools/testing/selftests/bpf/xskxceiver.c
+++ b/tools/testing/selftests/bpf/xskxceiver.c
@@ -757,14 +757,15 @@ static struct pkt_stream *pkt_stream_clone(struct pkt_stream *pkt_stream)
 	return pkt_stream_generate(pkt_stream->nb_pkts, pkt_stream->pkts[0].len);
 }
 
-static void pkt_stream_replace(struct test_spec *test, u32 nb_pkts, u32 pkt_len)
+static void pkt_stream_replace(struct ifobject *ifobj, u32 nb_pkts, u32 pkt_len)
 {
-	struct pkt_stream *pkt_stream;
+	ifobj->xsk->pkt_stream = pkt_stream_generate(nb_pkts, pkt_len);
+}
 
-	pkt_stream = pkt_stream_generate(nb_pkts, pkt_len);
-	test->ifobj_tx->xsk->pkt_stream = pkt_stream;
-	pkt_stream = pkt_stream_generate(nb_pkts, pkt_len);
-	test->ifobj_rx->xsk->pkt_stream = pkt_stream;
+static void pkt_stream_replace_both(struct test_spec *test, u32 nb_pkts, u32 pkt_len)
+{
+	pkt_stream_replace(test->ifobj_tx, nb_pkts, pkt_len);
+	pkt_stream_replace(test->ifobj_rx, nb_pkts, pkt_len);
 }
 
 static void __pkt_stream_replace_half(struct ifobject *ifobj, u32 pkt_len,
@@ -2052,7 +2053,8 @@ static int testapp_stats_tx_invalid_descs(struct test_spec *test)
 
 static int testapp_stats_rx_full(struct test_spec *test)
 {
-	pkt_stream_replace(test, DEFAULT_UMEM_BUFFERS + DEFAULT_UMEM_BUFFERS / 2, MIN_PKT_SIZE);
+	pkt_stream_replace_both(test, DEFAULT_UMEM_BUFFERS + DEFAULT_UMEM_BUFFERS / 2,
+				MIN_PKT_SIZE);
 	test->ifobj_rx->xsk->pkt_stream = pkt_stream_generate(DEFAULT_UMEM_BUFFERS, MIN_PKT_SIZE);
 
 	test->ifobj_rx->xsk->rxqsize = DEFAULT_UMEM_BUFFERS;
@@ -2063,7 +2065,8 @@ static int testapp_stats_rx_full(struct test_spec *test)
 
 static int testapp_stats_fill_empty(struct test_spec *test)
 {
-	pkt_stream_replace(test, DEFAULT_UMEM_BUFFERS + DEFAULT_UMEM_BUFFERS / 2, MIN_PKT_SIZE);
+	pkt_stream_replace_both(test, DEFAULT_UMEM_BUFFERS + DEFAULT_UMEM_BUFFERS / 2,
+				MIN_PKT_SIZE);
 	test->ifobj_rx->xsk->pkt_stream = pkt_stream_generate(DEFAULT_UMEM_BUFFERS, MIN_PKT_SIZE);
 
 	test->ifobj_rx->use_fill_ring = false;
@@ -2086,7 +2089,7 @@ static int testapp_send_receive_unaligned_mb(struct test_spec *test)
 	test->mtu = MAX_ETH_JUMBO_SIZE;
 	test->ifobj_tx->umem->unaligned_mode = true;
 	test->ifobj_rx->umem->unaligned_mode = true;
-	pkt_stream_replace(test, DEFAULT_PKT_CNT, MAX_ETH_JUMBO_SIZE);
+	pkt_stream_replace_both(test, DEFAULT_PKT_CNT, MAX_ETH_JUMBO_SIZE);
 	return testapp_validate_traffic(test);
 }
 
@@ -2101,7 +2104,7 @@ static int testapp_single_pkt(struct test_spec *test)
 static int testapp_send_receive_mb(struct test_spec *test)
 {
 	test->mtu = MAX_ETH_JUMBO_SIZE;
-	pkt_stream_replace(test, DEFAULT_PKT_CNT, MAX_ETH_JUMBO_SIZE);
+	pkt_stream_replace_both(test, DEFAULT_PKT_CNT, MAX_ETH_JUMBO_SIZE);
 
 	return testapp_validate_traffic(test);
 }
@@ -2252,7 +2255,7 @@ static int testapp_poll_txq_tmout(struct test_spec *test)
 	test->ifobj_tx->use_poll = true;
 	/* create invalid frame by set umem frame_size and pkt length equal to 2048 */
 	test->ifobj_tx->umem->frame_size = 2048;
-	pkt_stream_replace(test, 2 * DEFAULT_PKT_CNT, 2048);
+	pkt_stream_replace_both(test, 2 * DEFAULT_PKT_CNT, 2048);
 	return testapp_validate_traffic_single_thread(test, test->ifobj_tx);
 }
 
@@ -2389,7 +2392,7 @@ static int testapp_send_receive_2k_frame(struct test_spec *test)
 {
 	test->ifobj_tx->umem->frame_size = 2048;
 	test->ifobj_rx->umem->frame_size = 2048;
-	pkt_stream_replace(test, DEFAULT_PKT_CNT, MIN_PKT_SIZE);
+	pkt_stream_replace_both(test, DEFAULT_PKT_CNT, MIN_PKT_SIZE);
 	return testapp_validate_traffic(test);
 }
 
@@ -2511,7 +2514,7 @@ static int testapp_hw_sw_max_ring_size(struct test_spec *test)
 	 */
 	test->ifobj_tx->xsk->batch_size = test->ifobj_tx->ring.tx_max_pending - 8;
 	test->ifobj_rx->xsk->batch_size = test->ifobj_tx->ring.tx_max_pending - 8;
-	pkt_stream_replace(test, max_descs, MIN_PKT_SIZE);
+	pkt_stream_replace_both(test, max_descs, MIN_PKT_SIZE);
 	return testapp_validate_traffic(test);
 }
 
-- 
2.34.1


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

* [PATCH bpf-next 2/6] selftests/xsk: Add tail adjustment functionality to XDP
  2025-02-20  8:41 [PATCH bpf-next 0/6] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP Tushar Vyavahare
  2025-02-20  8:41 ` [PATCH bpf-next 1/6] selftests/xsk: Add packet stream replacement functions Tushar Vyavahare
@ 2025-02-20  8:41 ` Tushar Vyavahare
  2025-02-20 17:46   ` Stanislav Fomichev
  2025-02-20  8:41 ` [PATCH bpf-next 3/6] selftests/xsk: Add testapp_xdp_adjust_tail function to userspace for packet tail adjustment Tushar Vyavahare
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 13+ messages in thread
From: Tushar Vyavahare @ 2025-02-20  8:41 UTC (permalink / raw)
  To: bpf
  Cc: netdev, bjorn, magnus.karlsson, maciej.fijalkowski,
	jonathan.lemon, davem, kuba, pabeni, ast, daniel,
	tushar.vyavahare

Introduce a new function, xsk_xdp_adjust_tail, within the XDP program to
adjust the tail of packets. This function utilizes bpf_xdp_adjust_tail to
modify the packet size dynamically based on the 'count' variable.

If the adjustment fails, the packet is dropped using XDP_DROP to ensure
processing of only correctly modified packets.

Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>
---
 .../selftests/bpf/progs/xsk_xdp_progs.c       | 48 +++++++++++++++++++
 tools/testing/selftests/bpf/xsk_xdp_common.h  |  1 +
 2 files changed, 49 insertions(+)

diff --git a/tools/testing/selftests/bpf/progs/xsk_xdp_progs.c b/tools/testing/selftests/bpf/progs/xsk_xdp_progs.c
index ccde6a4c6319..2e8e2faf17e0 100644
--- a/tools/testing/selftests/bpf/progs/xsk_xdp_progs.c
+++ b/tools/testing/selftests/bpf/progs/xsk_xdp_progs.c
@@ -4,6 +4,8 @@
 #include <linux/bpf.h>
 #include <bpf/bpf_helpers.h>
 #include <linux/if_ether.h>
+#include <linux/ip.h>
+#include <linux/errno.h>
 #include "xsk_xdp_common.h"
 
 struct {
@@ -70,4 +72,50 @@ SEC("xdp") int xsk_xdp_shared_umem(struct xdp_md *xdp)
 	return bpf_redirect_map(&xsk, idx, XDP_DROP);
 }
 
+SEC("xdp.frags") int xsk_xdp_adjust_tail(struct xdp_md *xdp)
+{
+	__u32 buff_len, curr_buff_len;
+	int ret;
+
+	buff_len = bpf_xdp_get_buff_len(xdp);
+	if (buff_len == 0)
+		return XDP_DROP;
+
+	ret = bpf_xdp_adjust_tail(xdp, count);
+	if (ret < 0) {
+		/* Handle unsupported cases */
+		if (ret == -EOPNOTSUPP) {
+			/* Set count to -EOPNOTSUPP to indicate to userspace that this case is
+			 * unsupported
+			 */
+			count = -EOPNOTSUPP;
+			return bpf_redirect_map(&xsk, 0, XDP_DROP);
+		}
+
+		return XDP_DROP;
+	}
+
+	curr_buff_len = bpf_xdp_get_buff_len(xdp);
+	if (curr_buff_len != buff_len + count)
+		return XDP_DROP;
+
+	if (curr_buff_len > buff_len) {
+		__u32 *pkt_data = (void *)(long)xdp->data;
+		__u32 len, words_to_end, seq_num;
+
+		len = curr_buff_len - PKT_HDR_ALIGN;
+		words_to_end = len / sizeof(*pkt_data) - 1;
+		seq_num = words_to_end;
+
+		/* Convert sequence number to network byte order. Store this in the last 4 bytes of
+		 * the packet. Use 'count' to determine the position at the end of the packet for
+		 * storing the sequence number.
+		 */
+		seq_num = __constant_htonl(words_to_end);
+		bpf_xdp_store_bytes(xdp, curr_buff_len - count, &seq_num, sizeof(seq_num));
+	}
+
+	return bpf_redirect_map(&xsk, 0, XDP_DROP);
+}
+
 char _license[] SEC("license") = "GPL";
diff --git a/tools/testing/selftests/bpf/xsk_xdp_common.h b/tools/testing/selftests/bpf/xsk_xdp_common.h
index 5a6f36f07383..45810ff552da 100644
--- a/tools/testing/selftests/bpf/xsk_xdp_common.h
+++ b/tools/testing/selftests/bpf/xsk_xdp_common.h
@@ -4,6 +4,7 @@
 #define XSK_XDP_COMMON_H_
 
 #define MAX_SOCKETS 2
+#define PKT_HDR_ALIGN (sizeof(struct ethhdr) + 2) /* Just to align the data in the packet */
 
 struct xdp_info {
 	__u64 count;
-- 
2.34.1


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

* [PATCH bpf-next 3/6] selftests/xsk: Add testapp_xdp_adjust_tail function to userspace for packet tail adjustment
  2025-02-20  8:41 [PATCH bpf-next 0/6] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP Tushar Vyavahare
  2025-02-20  8:41 ` [PATCH bpf-next 1/6] selftests/xsk: Add packet stream replacement functions Tushar Vyavahare
  2025-02-20  8:41 ` [PATCH bpf-next 2/6] selftests/xsk: Add tail adjustment functionality to XDP Tushar Vyavahare
@ 2025-02-20  8:41 ` Tushar Vyavahare
  2025-02-20  8:41 ` [PATCH bpf-next 4/6] selftests/xsk: Add support check for bpf_xdp_adjust_tail() helper in xskxceiver Tushar Vyavahare
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 13+ messages in thread
From: Tushar Vyavahare @ 2025-02-20  8:41 UTC (permalink / raw)
  To: bpf
  Cc: netdev, bjorn, magnus.karlsson, maciej.fijalkowski,
	jonathan.lemon, davem, kuba, pabeni, ast, daniel,
	tushar.vyavahare

This commit adds the testapp_xdp_adjust_tail function in the userspace
code. The function is responsible for adjusting the tail of packets using
the xsk_xdp_adjust_tail XDP program.

The function performs the following tasks:
1. Retrieves the XDP program objects (skel_rx and skel_tx) from the
   test_spec structure.
2. Finds the bpf_map for the XDP program's bss section.
3. Updates the 'count' variable in the XDP program's bss section with the
   provided adjust_value.
4. Sets the XDP program (xsk_xdp_adjust_tail) for both RX and TX
   interfaces using test_spec_set_xdp_prog.
5. Calls testapp_validate_traffic to validate the traffic after adjusting
   the packet tail.

This function allows testing and validating the XDP program's behavior when
adjusting the packet tail using the bpf_xdp_adjust_tail helper function.

Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>
---
 tools/testing/selftests/bpf/xskxceiver.c | 25 ++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/tools/testing/selftests/bpf/xskxceiver.c b/tools/testing/selftests/bpf/xskxceiver.c
index 1d9b03666ee6..ff3316f6174e 100644
--- a/tools/testing/selftests/bpf/xskxceiver.c
+++ b/tools/testing/selftests/bpf/xskxceiver.c
@@ -2518,6 +2518,31 @@ static int testapp_hw_sw_max_ring_size(struct test_spec *test)
 	return testapp_validate_traffic(test);
 }
 
+static int testapp_xdp_adjust_tail(struct test_spec *test, int count)
+{
+	struct xsk_xdp_progs *skel_rx = test->ifobj_rx->xdp_progs;
+	struct xsk_xdp_progs *skel_tx = test->ifobj_tx->xdp_progs;
+	struct bpf_map *data_map;
+	int key = 0;
+
+	test_spec_set_xdp_prog(test, skel_rx->progs.xsk_xdp_adjust_tail,
+			       skel_tx->progs.xsk_xdp_adjust_tail,
+			       skel_rx->maps.xsk, skel_tx->maps.xsk);
+
+	data_map = bpf_object__find_map_by_name(skel_rx->obj, "xsk_xdp_.bss");
+	if (!data_map || !bpf_map__is_internal(data_map)) {
+		ksft_print_msg("Error: could not find bss section of XDP program\n");
+		return TEST_FAILURE;
+	}
+
+	if (bpf_map_update_elem(bpf_map__fd(data_map), &key, &count, BPF_ANY)) {
+		ksft_print_msg("Error: could not update count element\n");
+		return TEST_FAILURE;
+	}
+
+	return testapp_validate_traffic(test);
+}
+
 static void run_pkt_test(struct test_spec *test)
 {
 	int ret;
-- 
2.34.1


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

* [PATCH bpf-next 4/6] selftests/xsk: Add support check for bpf_xdp_adjust_tail() helper in xskxceiver
  2025-02-20  8:41 [PATCH bpf-next 0/6] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP Tushar Vyavahare
                   ` (2 preceding siblings ...)
  2025-02-20  8:41 ` [PATCH bpf-next 3/6] selftests/xsk: Add testapp_xdp_adjust_tail function to userspace for packet tail adjustment Tushar Vyavahare
@ 2025-02-20  8:41 ` Tushar Vyavahare
  2025-02-20  8:41 ` [PATCH bpf-next 5/6] selftests/xsk: Implement packet resizing test with bpf_xdp_adjust_tail Tushar Vyavahare
  2025-02-20  8:41 ` [PATCH bpf-next 6/6] selftests/xsk: Add packet resizing tests with bpf_xdp_adjust_tail for AF_XDP Tushar Vyavahare
  5 siblings, 0 replies; 13+ messages in thread
From: Tushar Vyavahare @ 2025-02-20  8:41 UTC (permalink / raw)
  To: bpf
  Cc: netdev, bjorn, magnus.karlsson, maciej.fijalkowski,
	jonathan.lemon, davem, kuba, pabeni, ast, daniel,
	tushar.vyavahare

Add is_adjust_tail_supported function to check if the
bpf_xdp_adjust_tail() helper is supported when 'adjust_tail' is set in the
test. Look up a specific key in the bss section of the XDP program. If the
key is not found or its value is -EOPNOTSUPP, return false, indicating that
the helper is not supported.

Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>
---
 tools/testing/selftests/bpf/xskxceiver.c | 36 ++++++++++++++++++++++--
 tools/testing/selftests/bpf/xskxceiver.h |  2 ++
 2 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/bpf/xskxceiver.c b/tools/testing/selftests/bpf/xskxceiver.c
index ff3316f6174e..ccf35b73418b 100644
--- a/tools/testing/selftests/bpf/xskxceiver.c
+++ b/tools/testing/selftests/bpf/xskxceiver.c
@@ -524,6 +524,8 @@ static void __test_spec_init(struct test_spec *test, struct ifobject *ifobj_tx,
 	test->nb_sockets = 1;
 	test->fail = false;
 	test->set_ring = false;
+	test->adjust_tail = false;
+	test->adjust_tail_support = false;
 	test->mtu = MAX_ETH_PKT_SIZE;
 	test->xdp_prog_rx = ifobj_rx->xdp_progs->progs.xsk_def_prog;
 	test->xskmap_rx = ifobj_rx->xdp_progs->maps.xsk;
@@ -992,6 +994,31 @@ static bool is_metadata_correct(struct pkt *pkt, void *buffer, u64 addr)
 	return true;
 }
 
+static bool is_adjust_tail_supported(struct xsk_xdp_progs *skel_rx)
+{
+	struct bpf_map *data_map;
+	int value = 0;
+	int key = 0;
+	int ret;
+
+	data_map = bpf_object__find_map_by_name(skel_rx->obj, "xsk_xdp_.bss");
+	if (!data_map || !bpf_map__is_internal(data_map)) {
+		ksft_print_msg("Error: could not find bss section of XDP program\n");
+		exit_with_error(errno);
+	}
+
+	ret = bpf_map_lookup_elem(bpf_map__fd(data_map), &key, &value);
+	if (ret) {
+		ksft_print_msg("Error: bpf_map_lookup_elem failed with error %d\n", ret);
+		return false;
+	}
+
+	/* Set the 'count' variable to -EOPNOTSUPP in the XDP program if the adjust_tail helper is
+	 * not supported. Skip the adjust_tail test case in this scenario.
+	 */
+	return value != -EOPNOTSUPP;
+}
+
 static bool is_frag_valid(struct xsk_umem_info *umem, u64 addr, u32 len, u32 expected_pkt_nb,
 			  u32 bytes_processed)
 {
@@ -1768,8 +1795,13 @@ static void *worker_testapp_validate_rx(void *arg)
 
 	if (!err && ifobject->validation_func)
 		err = ifobject->validation_func(ifobject);
-	if (err)
-		report_failure(test);
+
+	if (err) {
+		if (test->adjust_tail && !is_adjust_tail_supported(ifobject->xdp_progs))
+			test->adjust_tail_support = false;
+		else
+			report_failure(test);
+	}
 
 	pthread_exit(NULL);
 }
diff --git a/tools/testing/selftests/bpf/xskxceiver.h b/tools/testing/selftests/bpf/xskxceiver.h
index e46e823f6a1a..67fc44b2813b 100644
--- a/tools/testing/selftests/bpf/xskxceiver.h
+++ b/tools/testing/selftests/bpf/xskxceiver.h
@@ -173,6 +173,8 @@ struct test_spec {
 	u16 nb_sockets;
 	bool fail;
 	bool set_ring;
+	bool adjust_tail;
+	bool adjust_tail_support;
 	enum test_mode mode;
 	char name[MAX_TEST_NAME_SIZE];
 };
-- 
2.34.1


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

* [PATCH bpf-next 5/6] selftests/xsk: Implement packet resizing test with bpf_xdp_adjust_tail
  2025-02-20  8:41 [PATCH bpf-next 0/6] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP Tushar Vyavahare
                   ` (3 preceding siblings ...)
  2025-02-20  8:41 ` [PATCH bpf-next 4/6] selftests/xsk: Add support check for bpf_xdp_adjust_tail() helper in xskxceiver Tushar Vyavahare
@ 2025-02-20  8:41 ` Tushar Vyavahare
  2025-02-20  8:41 ` [PATCH bpf-next 6/6] selftests/xsk: Add packet resizing tests with bpf_xdp_adjust_tail for AF_XDP Tushar Vyavahare
  5 siblings, 0 replies; 13+ messages in thread
From: Tushar Vyavahare @ 2025-02-20  8:41 UTC (permalink / raw)
  To: bpf
  Cc: netdev, bjorn, magnus.karlsson, maciej.fijalkowski,
	jonathan.lemon, davem, kuba, pabeni, ast, daniel,
	tushar.vyavahare

Implement a packet resizing test using the bpf_xdp_adjust_tail() function.
Add the testapp_adjust_tail function to test packet resizing capabilities.

Replace packet streams for both transmit and receive with adjusted lengths.
Include logic to skip the test if bpf_xdp_adjust_tail is not supported.
Update the test framework to handle various packet resizing scenarios.

Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>
---
 tools/testing/selftests/bpf/xskxceiver.c | 25 ++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/tools/testing/selftests/bpf/xskxceiver.c b/tools/testing/selftests/bpf/xskxceiver.c
index ccf35b73418b..52ce0217d3d5 100644
--- a/tools/testing/selftests/bpf/xskxceiver.c
+++ b/tools/testing/selftests/bpf/xskxceiver.c
@@ -2575,6 +2575,31 @@ static int testapp_xdp_adjust_tail(struct test_spec *test, int count)
 	return testapp_validate_traffic(test);
 }
 
+static int testapp_adjust_tail(struct test_spec *test, u32 value, u32 pkt_len)
+{
+	u32 pkt_cnt = DEFAULT_BATCH_SIZE;
+	int ret;
+
+	test->adjust_tail_support = true;
+	test->adjust_tail = true;
+	test->total_steps = 1;
+
+	pkt_stream_replace(test->ifobj_tx, pkt_cnt, pkt_len);
+	pkt_stream_replace(test->ifobj_rx, pkt_cnt, pkt_len + value);
+
+	ret = testapp_xdp_adjust_tail(test, value);
+	if (ret)
+		return ret;
+
+	if (!test->adjust_tail_support) {
+		ksft_test_result_skip("%s %sResize pkt with bpf_xdp_adjust_tail() not supported\n",
+				      mode_string(test), busy_poll_string(test));
+	return TEST_SKIP;
+	}
+
+	return 0;
+}
+
 static void run_pkt_test(struct test_spec *test)
 {
 	int ret;
-- 
2.34.1


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

* [PATCH bpf-next 6/6] selftests/xsk: Add packet resizing tests with bpf_xdp_adjust_tail for AF_XDP
  2025-02-20  8:41 [PATCH bpf-next 0/6] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP Tushar Vyavahare
                   ` (4 preceding siblings ...)
  2025-02-20  8:41 ` [PATCH bpf-next 5/6] selftests/xsk: Implement packet resizing test with bpf_xdp_adjust_tail Tushar Vyavahare
@ 2025-02-20  8:41 ` Tushar Vyavahare
  5 siblings, 0 replies; 13+ messages in thread
From: Tushar Vyavahare @ 2025-02-20  8:41 UTC (permalink / raw)
  To: bpf
  Cc: netdev, bjorn, magnus.karlsson, maciej.fijalkowski,
	jonathan.lemon, davem, kuba, pabeni, ast, daniel,
	tushar.vyavahare

Add packet resizing tests using the bpf_xdp_adjust_tail()function within
the AF_XDP framework. Implement testapp_adjust_tail_common() to handle
common logic for packet resizing tests, streamlining the testing process.
Allow setting MTU to MAX_ETH_JUMBO_SIZE for specific tests.

Implement testapp_adjust_tail_shrink() and testapp_adjust_tail_shrink_mb()
to test shrinking packets, including multi-buffer scenarios, under AF_XDP.
Implement testapp_adjust_tail_grow() and testapp_adjust_tail_grow_mb() to
test growing packets within the AF_XDP context, utilizing the common logic
function for consistency and efficiency.

Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>
---
 tools/testing/selftests/bpf/xskxceiver.c | 32 ++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/tools/testing/selftests/bpf/xskxceiver.c b/tools/testing/selftests/bpf/xskxceiver.c
index 52ce0217d3d5..36f32b7ef31d 100644
--- a/tools/testing/selftests/bpf/xskxceiver.c
+++ b/tools/testing/selftests/bpf/xskxceiver.c
@@ -2600,6 +2600,34 @@ static int testapp_adjust_tail(struct test_spec *test, u32 value, u32 pkt_len)
 	return 0;
 }
 
+static int testapp_adjust_tail_common(struct test_spec *test, int adjust_value, u32 len,
+				      bool set_mtu)
+{
+	if (set_mtu)
+		test->mtu = MAX_ETH_JUMBO_SIZE;
+	return testapp_adjust_tail(test, adjust_value, len);
+}
+
+static int testapp_adjust_tail_shrink(struct test_spec *test)
+{
+	return testapp_adjust_tail_common(test, -4, MIN_PKT_SIZE, false);
+}
+
+static int testapp_adjust_tail_shrink_mb(struct test_spec *test)
+{
+	return testapp_adjust_tail_common(test, -4, XSK_RING_PROD__DEFAULT_NUM_DESCS * 3, true);
+}
+
+static int testapp_adjust_tail_grow(struct test_spec *test)
+{
+	return testapp_adjust_tail_common(test, 4, MIN_PKT_SIZE, false);
+}
+
+static int testapp_adjust_tail_grow_mb(struct test_spec *test)
+{
+	return testapp_adjust_tail_common(test, 4, XSK_RING_PROD__DEFAULT_NUM_DESCS * 3, true);
+}
+
 static void run_pkt_test(struct test_spec *test)
 {
 	int ret;
@@ -2706,6 +2734,10 @@ static const struct test_spec tests[] = {
 	{.name = "TOO_MANY_FRAGS", .test_func = testapp_too_many_frags},
 	{.name = "HW_SW_MIN_RING_SIZE", .test_func = testapp_hw_sw_min_ring_size},
 	{.name = "HW_SW_MAX_RING_SIZE", .test_func = testapp_hw_sw_max_ring_size},
+	{.name = "XDP_ADJUST_TAIL_SHRINK", .test_func = testapp_adjust_tail_shrink},
+	{.name = "XDP_ADJUST_TAIL_SHRINK_MULTI_BUFF", .test_func = testapp_adjust_tail_shrink_mb},
+	{.name = "XDP_ADJUST_TAIL_GROW", .test_func = testapp_adjust_tail_grow},
+	{.name = "XDP_ADJUST_TAIL_GROW_MULTI_BUFF", .test_func = testapp_adjust_tail_grow_mb},
 	};
 
 static void print_tests(void)
-- 
2.34.1


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

* Re: [PATCH bpf-next 1/6] selftests/xsk: Add packet stream replacement functions
  2025-02-20  8:41 ` [PATCH bpf-next 1/6] selftests/xsk: Add packet stream replacement functions Tushar Vyavahare
@ 2025-02-20 17:45   ` Stanislav Fomichev
  2025-02-25 15:57     ` Vyavahare, Tushar
  0 siblings, 1 reply; 13+ messages in thread
From: Stanislav Fomichev @ 2025-02-20 17:45 UTC (permalink / raw)
  To: Tushar Vyavahare
  Cc: bpf, netdev, bjorn, magnus.karlsson, maciej.fijalkowski,
	jonathan.lemon, davem, kuba, pabeni, ast, daniel

On 02/20, Tushar Vyavahare wrote:
> Add pkt_stream_replace function to replace the packet stream for a given
> ifobject. Add pkt_stream_replace_both function to replace the packet
> streams for both transmit and receive ifobject in test_spec. Enhance test
> framework to handle packet stream replacements efficiently.
> 
> Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>
> ---
>  tools/testing/selftests/bpf/xskxceiver.c | 29 +++++++++++++-----------
>  1 file changed, 16 insertions(+), 13 deletions(-)
> 
> diff --git a/tools/testing/selftests/bpf/xskxceiver.c b/tools/testing/selftests/bpf/xskxceiver.c
> index 11f047b8af75..1d9b03666ee6 100644
> --- a/tools/testing/selftests/bpf/xskxceiver.c
> +++ b/tools/testing/selftests/bpf/xskxceiver.c
> @@ -757,14 +757,15 @@ static struct pkt_stream *pkt_stream_clone(struct pkt_stream *pkt_stream)
>  	return pkt_stream_generate(pkt_stream->nb_pkts, pkt_stream->pkts[0].len);
>  }
>  
> -static void pkt_stream_replace(struct test_spec *test, u32 nb_pkts, u32 pkt_len)
> +static void pkt_stream_replace(struct ifobject *ifobj, u32 nb_pkts, u32 pkt_len)
>  {
> -	struct pkt_stream *pkt_stream;
> +	ifobj->xsk->pkt_stream = pkt_stream_generate(nb_pkts, pkt_len);
> +}
>  
> -	pkt_stream = pkt_stream_generate(nb_pkts, pkt_len);
> -	test->ifobj_tx->xsk->pkt_stream = pkt_stream;
> -	pkt_stream = pkt_stream_generate(nb_pkts, pkt_len);
> -	test->ifobj_rx->xsk->pkt_stream = pkt_stream;

[..]

> +static void pkt_stream_replace_both(struct test_spec *test, u32 nb_pkts, u32 pkt_len)
> +{
> +	pkt_stream_replace(test->ifobj_tx, nb_pkts, pkt_len);
> +	pkt_stream_replace(test->ifobj_rx, nb_pkts, pkt_len);
>  }

nit: maybe keep existing name pkt_stream_replace here? and add new
helper pkt_stream_replace_ifobject to work on particular ifobject?

static void pkt_stream_replace_both(struct test_spec *test, u32 nb_pkts, u32 pkt_len)
{
	pkt_stream_replace_ifobject(test->ifobj_tx, nb_pkts, pkt_len);
	pkt_stream_replace_ifobject(test->ifobj_rx, nb_pkts, pkt_len);
}

This should avoid touching existing call sites.

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

* Re: [PATCH bpf-next 2/6] selftests/xsk: Add tail adjustment functionality to XDP
  2025-02-20  8:41 ` [PATCH bpf-next 2/6] selftests/xsk: Add tail adjustment functionality to XDP Tushar Vyavahare
@ 2025-02-20 17:46   ` Stanislav Fomichev
  2025-02-25 15:58     ` Vyavahare, Tushar
  0 siblings, 1 reply; 13+ messages in thread
From: Stanislav Fomichev @ 2025-02-20 17:46 UTC (permalink / raw)
  To: Tushar Vyavahare
  Cc: bpf, netdev, bjorn, magnus.karlsson, maciej.fijalkowski,
	jonathan.lemon, davem, kuba, pabeni, ast, daniel

On 02/20, Tushar Vyavahare wrote:
> Introduce a new function, xsk_xdp_adjust_tail, within the XDP program to
> adjust the tail of packets. This function utilizes bpf_xdp_adjust_tail to
> modify the packet size dynamically based on the 'count' variable.
> 
> If the adjustment fails, the packet is dropped using XDP_DROP to ensure
> processing of only correctly modified packets.
> 
> Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>

Any reason not to combine patches 2..5 into a single one? I looked
through each one briefly and it's a bit hard to follow when trying
to put everything together..

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

* RE: [PATCH bpf-next 1/6] selftests/xsk: Add packet stream replacement functions
  2025-02-20 17:45   ` Stanislav Fomichev
@ 2025-02-25 15:57     ` Vyavahare, Tushar
  0 siblings, 0 replies; 13+ messages in thread
From: Vyavahare, Tushar @ 2025-02-25 15:57 UTC (permalink / raw)
  To: Stanislav Fomichev
  Cc: bpf@vger.kernel.org, netdev@vger.kernel.org, bjorn@kernel.org,
	Karlsson, Magnus, Fijalkowski, Maciej, jonathan.lemon@gmail.com,
	davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com,
	ast@kernel.org, daniel@iogearbox.net



> -----Original Message-----
> From: Stanislav Fomichev <stfomichev@gmail.com>
> Sent: Thursday, February 20, 2025 11:16 PM
> To: Vyavahare, Tushar <tushar.vyavahare@intel.com>
> Cc: bpf@vger.kernel.org; netdev@vger.kernel.org; bjorn@kernel.org; Karlsson,
> Magnus <magnus.karlsson@intel.com>; Fijalkowski, Maciej
> <maciej.fijalkowski@intel.com>; jonathan.lemon@gmail.com;
> davem@davemloft.net; kuba@kernel.org; pabeni@redhat.com; ast@kernel.org;
> daniel@iogearbox.net
> Subject: Re: [PATCH bpf-next 1/6] selftests/xsk: Add packet stream replacement
> functions
> 
> On 02/20, Tushar Vyavahare wrote:
> > Add pkt_stream_replace function to replace the packet stream for a
> > given ifobject. Add pkt_stream_replace_both function to replace the
> > packet streams for both transmit and receive ifobject in test_spec.
> > Enhance test framework to handle packet stream replacements efficiently.
> >
> > Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>
> > ---
> >  tools/testing/selftests/bpf/xskxceiver.c | 29
> > +++++++++++++-----------
> >  1 file changed, 16 insertions(+), 13 deletions(-)
> >
> > diff --git a/tools/testing/selftests/bpf/xskxceiver.c
> > b/tools/testing/selftests/bpf/xskxceiver.c
> > index 11f047b8af75..1d9b03666ee6 100644
> > --- a/tools/testing/selftests/bpf/xskxceiver.c
> > +++ b/tools/testing/selftests/bpf/xskxceiver.c
> > @@ -757,14 +757,15 @@ static struct pkt_stream *pkt_stream_clone(struct
> pkt_stream *pkt_stream)
> >  	return pkt_stream_generate(pkt_stream->nb_pkts,
> > pkt_stream->pkts[0].len);  }
> >
> > -static void pkt_stream_replace(struct test_spec *test, u32 nb_pkts,
> > u32 pkt_len)
> > +static void pkt_stream_replace(struct ifobject *ifobj, u32 nb_pkts,
> > +u32 pkt_len)
> >  {
> > -	struct pkt_stream *pkt_stream;
> > +	ifobj->xsk->pkt_stream = pkt_stream_generate(nb_pkts, pkt_len); }
> >
> > -	pkt_stream = pkt_stream_generate(nb_pkts, pkt_len);
> > -	test->ifobj_tx->xsk->pkt_stream = pkt_stream;
> > -	pkt_stream = pkt_stream_generate(nb_pkts, pkt_len);
> > -	test->ifobj_rx->xsk->pkt_stream = pkt_stream;
> 
> [..]
> 
> > +static void pkt_stream_replace_both(struct test_spec *test, u32
> > +nb_pkts, u32 pkt_len) {
> > +	pkt_stream_replace(test->ifobj_tx, nb_pkts, pkt_len);
> > +	pkt_stream_replace(test->ifobj_rx, nb_pkts, pkt_len);
> >  }
> 
> nit: maybe keep existing name pkt_stream_replace here? and add new helper
> pkt_stream_replace_ifobject to work on particular ifobject?
> 

Will do. Thank you.

> static void pkt_stream_replace_both(struct test_spec *test, u32 nb_pkts, u32
> pkt_len) {
> 	pkt_stream_replace_ifobject(test->ifobj_tx, nb_pkts, pkt_len);
> 	pkt_stream_replace_ifobject(test->ifobj_rx, nb_pkts, pkt_len); }
> 
> This should avoid touching existing call sites.

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

* RE: [PATCH bpf-next 2/6] selftests/xsk: Add tail adjustment functionality to XDP
  2025-02-20 17:46   ` Stanislav Fomichev
@ 2025-02-25 15:58     ` Vyavahare, Tushar
  2025-02-25 22:37       ` Stanislav Fomichev
  0 siblings, 1 reply; 13+ messages in thread
From: Vyavahare, Tushar @ 2025-02-25 15:58 UTC (permalink / raw)
  To: Stanislav Fomichev
  Cc: bpf@vger.kernel.org, netdev@vger.kernel.org, bjorn@kernel.org,
	Karlsson, Magnus, Fijalkowski, Maciej, jonathan.lemon@gmail.com,
	davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com,
	ast@kernel.org, daniel@iogearbox.net



> -----Original Message-----
> From: Stanislav Fomichev <stfomichev@gmail.com>
> Sent: Thursday, February 20, 2025 11:17 PM
> To: Vyavahare, Tushar <tushar.vyavahare@intel.com>
> Cc: bpf@vger.kernel.org; netdev@vger.kernel.org; bjorn@kernel.org; Karlsson,
> Magnus <magnus.karlsson@intel.com>; Fijalkowski, Maciej
> <maciej.fijalkowski@intel.com>; jonathan.lemon@gmail.com;
> davem@davemloft.net; kuba@kernel.org; pabeni@redhat.com; ast@kernel.org;
> daniel@iogearbox.net
> Subject: Re: [PATCH bpf-next 2/6] selftests/xsk: Add tail adjustment functionality
> to XDP
> 
> On 02/20, Tushar Vyavahare wrote:
> > Introduce a new function, xsk_xdp_adjust_tail, within the XDP program
> > to adjust the tail of packets. This function utilizes
> > bpf_xdp_adjust_tail to modify the packet size dynamically based on the 'count'
> variable.
> >
> > If the adjustment fails, the packet is dropped using XDP_DROP to
> > ensure processing of only correctly modified packets.
> >
> > Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>
> 
> Any reason not to combine patches 2..5 into a single one? I looked through each
> one briefly and it's a bit hard to follow when trying to put everything together..

Maybe that was too many patches. How about this?
 
#1: selftests/xsk: Add packet stream replacement function
#2: selftests/xsk: Add tail adjustment test functionality to AF_XDP.
#3: selftests/xsk: Add support check for bpf_xdp_adjust_tail() helper in
    xskxceiver
#4: selftests/xsk: Implement and test packet resizing with
    bpf_xdp_adjust_tail


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

* Re: [PATCH bpf-next 2/6] selftests/xsk: Add tail adjustment functionality to XDP
  2025-02-25 15:58     ` Vyavahare, Tushar
@ 2025-02-25 22:37       ` Stanislav Fomichev
  2025-02-26 12:23         ` Vyavahare, Tushar
  0 siblings, 1 reply; 13+ messages in thread
From: Stanislav Fomichev @ 2025-02-25 22:37 UTC (permalink / raw)
  To: Vyavahare, Tushar
  Cc: bpf@vger.kernel.org, netdev@vger.kernel.org, bjorn@kernel.org,
	Karlsson, Magnus, Fijalkowski, Maciej, jonathan.lemon@gmail.com,
	davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com,
	ast@kernel.org, daniel@iogearbox.net

On 02/25, Vyavahare, Tushar wrote:
> 
> 
> > -----Original Message-----
> > From: Stanislav Fomichev <stfomichev@gmail.com>
> > Sent: Thursday, February 20, 2025 11:17 PM
> > To: Vyavahare, Tushar <tushar.vyavahare@intel.com>
> > Cc: bpf@vger.kernel.org; netdev@vger.kernel.org; bjorn@kernel.org; Karlsson,
> > Magnus <magnus.karlsson@intel.com>; Fijalkowski, Maciej
> > <maciej.fijalkowski@intel.com>; jonathan.lemon@gmail.com;
> > davem@davemloft.net; kuba@kernel.org; pabeni@redhat.com; ast@kernel.org;
> > daniel@iogearbox.net
> > Subject: Re: [PATCH bpf-next 2/6] selftests/xsk: Add tail adjustment functionality
> > to XDP
> > 
> > On 02/20, Tushar Vyavahare wrote:
> > > Introduce a new function, xsk_xdp_adjust_tail, within the XDP program
> > > to adjust the tail of packets. This function utilizes
> > > bpf_xdp_adjust_tail to modify the packet size dynamically based on the 'count'
> > variable.
> > >
> > > If the adjustment fails, the packet is dropped using XDP_DROP to
> > > ensure processing of only correctly modified packets.
> > >
> > > Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>
> > 
> > Any reason not to combine patches 2..5 into a single one? I looked through each
> > one briefly and it's a bit hard to follow when trying to put everything together..
> 
> Maybe that was too many patches. How about this?
>  
> #1: selftests/xsk: Add packet stream replacement function
> #2: selftests/xsk: Add tail adjustment test functionality to AF_XDP.
> #3: selftests/xsk: Add support check for bpf_xdp_adjust_tail() helper in
>     xskxceiver
> #4: selftests/xsk: Implement and test packet resizing with
>     bpf_xdp_adjust_tail
 
Even that might be too much. #1 is clearly refactoring - keep it separate. The
rest seems like it belongs to the same testcase(s)? I'd put patches 2,3,4,5,6
in the same patch.

For example, you add bpf xsk_xdp_adjust_tail function, but there are
not callers in the same patch, so it's not clear what's the context.
Same for testapp_xdp_adjust_tail - there is no caller, so the reader
needs to go to the next patch to put it all together. Same for
testapp_adjust_tail...

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

* RE: [PATCH bpf-next 2/6] selftests/xsk: Add tail adjustment functionality to XDP
  2025-02-25 22:37       ` Stanislav Fomichev
@ 2025-02-26 12:23         ` Vyavahare, Tushar
  0 siblings, 0 replies; 13+ messages in thread
From: Vyavahare, Tushar @ 2025-02-26 12:23 UTC (permalink / raw)
  To: Stanislav Fomichev
  Cc: bpf@vger.kernel.org, netdev@vger.kernel.org, bjorn@kernel.org,
	Karlsson, Magnus, Fijalkowski, Maciej, jonathan.lemon@gmail.com,
	davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com,
	ast@kernel.org, daniel@iogearbox.net



> -----Original Message-----
> From: Stanislav Fomichev <stfomichev@gmail.com>
> Sent: Wednesday, February 26, 2025 4:07 AM
> To: Vyavahare, Tushar <tushar.vyavahare@intel.com>
> Cc: bpf@vger.kernel.org; netdev@vger.kernel.org; bjorn@kernel.org; Karlsson,
> Magnus <magnus.karlsson@intel.com>; Fijalkowski, Maciej
> <maciej.fijalkowski@intel.com>; jonathan.lemon@gmail.com;
> davem@davemloft.net; kuba@kernel.org; pabeni@redhat.com; ast@kernel.org;
> daniel@iogearbox.net
> Subject: Re: [PATCH bpf-next 2/6] selftests/xsk: Add tail adjustment functionality
> to XDP
> 
> On 02/25, Vyavahare, Tushar wrote:
> >
> >
> > > -----Original Message-----
> > > From: Stanislav Fomichev <stfomichev@gmail.com>
> > > Sent: Thursday, February 20, 2025 11:17 PM
> > > To: Vyavahare, Tushar <tushar.vyavahare@intel.com>
> > > Cc: bpf@vger.kernel.org; netdev@vger.kernel.org; bjorn@kernel.org;
> > > Karlsson, Magnus <magnus.karlsson@intel.com>; Fijalkowski, Maciej
> > > <maciej.fijalkowski@intel.com>; jonathan.lemon@gmail.com;
> > > davem@davemloft.net; kuba@kernel.org; pabeni@redhat.com;
> > > ast@kernel.org; daniel@iogearbox.net
> > > Subject: Re: [PATCH bpf-next 2/6] selftests/xsk: Add tail adjustment
> > > functionality to XDP
> > >
> > > On 02/20, Tushar Vyavahare wrote:
> > > > Introduce a new function, xsk_xdp_adjust_tail, within the XDP
> > > > program to adjust the tail of packets. This function utilizes
> > > > bpf_xdp_adjust_tail to modify the packet size dynamically based on the
> 'count'
> > > variable.
> > > >
> > > > If the adjustment fails, the packet is dropped using XDP_DROP to
> > > > ensure processing of only correctly modified packets.
> > > >
> > > > Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>
> > >
> > > Any reason not to combine patches 2..5 into a single one? I looked
> > > through each one briefly and it's a bit hard to follow when trying to put
> everything together..
> >
> > Maybe that was too many patches. How about this?
> >
> > #1: selftests/xsk: Add packet stream replacement function
> > #2: selftests/xsk: Add tail adjustment test functionality to AF_XDP.
> > #3: selftests/xsk: Add support check for bpf_xdp_adjust_tail() helper in
> >     xskxceiver
> > #4: selftests/xsk: Implement and test packet resizing with
> >     bpf_xdp_adjust_tail
> 
> Even that might be too much. #1 is clearly refactoring - keep it separate. The rest
> seems like it belongs to the same testcase(s)? I'd put patches 2,3,4,5,6 in the
> same patch.
> 
> For example, you add bpf xsk_xdp_adjust_tail function, but there are not callers
> in the same patch, so it's not clear what's the context.
> Same for testapp_xdp_adjust_tail - there is no caller, so the reader needs to go to
> the next patch to put it all together. Same for testapp_adjust_tail...


Make sense. Will fix it and submit a v2.

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

end of thread, other threads:[~2025-02-26 12:23 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-20  8:41 [PATCH bpf-next 0/6] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP Tushar Vyavahare
2025-02-20  8:41 ` [PATCH bpf-next 1/6] selftests/xsk: Add packet stream replacement functions Tushar Vyavahare
2025-02-20 17:45   ` Stanislav Fomichev
2025-02-25 15:57     ` Vyavahare, Tushar
2025-02-20  8:41 ` [PATCH bpf-next 2/6] selftests/xsk: Add tail adjustment functionality to XDP Tushar Vyavahare
2025-02-20 17:46   ` Stanislav Fomichev
2025-02-25 15:58     ` Vyavahare, Tushar
2025-02-25 22:37       ` Stanislav Fomichev
2025-02-26 12:23         ` Vyavahare, Tushar
2025-02-20  8:41 ` [PATCH bpf-next 3/6] selftests/xsk: Add testapp_xdp_adjust_tail function to userspace for packet tail adjustment Tushar Vyavahare
2025-02-20  8:41 ` [PATCH bpf-next 4/6] selftests/xsk: Add support check for bpf_xdp_adjust_tail() helper in xskxceiver Tushar Vyavahare
2025-02-20  8:41 ` [PATCH bpf-next 5/6] selftests/xsk: Implement packet resizing test with bpf_xdp_adjust_tail Tushar Vyavahare
2025-02-20  8:41 ` [PATCH bpf-next 6/6] selftests/xsk: Add packet resizing tests with bpf_xdp_adjust_tail for AF_XDP Tushar Vyavahare

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).