netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH bpf-next v4 0/2] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP
@ 2025-03-21  0:54 Tushar Vyavahare
  2025-03-21  0:54 ` [PATCH bpf-next v4 1/2] selftests/xsk: Add packet stream replacement function Tushar Vyavahare
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Tushar Vyavahare @ 2025-03-21  0:54 UTC (permalink / raw)
  To: bpf
  Cc: netdev, bjorn, magnus.karlsson, maciej.fijalkowski,
	jonathan.lemon, davem, kuba, pabeni, ast, daniel,
	tirthendu.sarkar, 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.

v1 -> v2:
1. Retain and extend stream replacement: Keep `pkt_stream_replace`
   unchanged. Add `pkt_stream_replace_ifobject` for targeted ifobject
   handling.

2. Consolidate patches: Merge patches 2 to 6 for tail adjustment tests and
   check.

v2 -> v3:
1. Introduce `adjust_value` to replace `count` for clearer communication
   with userspace.

v3 -> v4:
1. Remove `testapp_adjust_tail_common()`. [Maciej]

2. Add comments and modify code for buffer resizing logic in test cases
   (shrink/grow by specific byte sizes for testing purposes). [Maciej]

---
Patch Summary:

1. Packet stream replacement: Add `pkt_stream_replace_ifobject` to manage
   packet streams efficiently.

2. Tail adjustment tests and support check: Implement dynamic packet
   resizing in xskxceiver by adding `xsk_xdp_adjust_tail` and extend this
   functionality to userspace with `testapp_xdp_adjust_tail` for
   validation. Ensure support by adding `is_adjust_tail_supported` to
   verify the availability of `bpf_xdp_adjust_tail()`. Introduce tests for
   shrinking and growing packets using `bpf_xdp_adjust_tail()`, covering
   both single and multi-buffer scenarios when used with AF_XDP.
---

Tushar Vyavahare (2):
  selftests/xsk: Add packet stream replacement function
  selftests/xsk: Add tail adjustment tests and support check

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

 .../selftests/bpf/progs/xsk_xdp_progs.c       |  50 ++++++++
 tools/testing/selftests/bpf/xsk_xdp_common.h  |   1 +
 tools/testing/selftests/bpf/xskxceiver.c      | 118 ++++++++++++++++--
 tools/testing/selftests/bpf/xskxceiver.h      |   2 +
 4 files changed, 163 insertions(+), 8 deletions(-)

-- 
2.34.1


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

* [PATCH bpf-next v4 1/2] selftests/xsk: Add packet stream replacement function
  2025-03-21  0:54 [PATCH bpf-next v4 0/2] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP Tushar Vyavahare
@ 2025-03-21  0:54 ` Tushar Vyavahare
  2025-03-22 13:02   ` Maciej Fijalkowski
  2025-03-21  0:54 ` [PATCH bpf-next v4 2/2] selftests/xsk: Add tail adjustment tests and support check Tushar Vyavahare
  2025-04-08 16:54 ` [PATCH bpf-next v4 0/2] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP Maciej Fijalkowski
  2 siblings, 1 reply; 11+ messages in thread
From: Tushar Vyavahare @ 2025-03-21  0:54 UTC (permalink / raw)
  To: bpf
  Cc: netdev, bjorn, magnus.karlsson, maciej.fijalkowski,
	jonathan.lemon, davem, kuba, pabeni, ast, daniel,
	tirthendu.sarkar, tushar.vyavahare

Add pkt_stream_replace_ifobject function to replace the packet stream for
a given ifobject.

Enable separate TX and RX packet replacement, allowing RX side packet
length adjustments using bpf_xdp_adjust_tail() in the upcoming patch.
Currently, pkt_stream_replace() works on both TX and RX packet streams,
and this new function provides the ability to modify one of them.

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

diff --git a/tools/testing/selftests/bpf/xskxceiver.c b/tools/testing/selftests/bpf/xskxceiver.c
index 11f047b8af75..d60ee6a31c09 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_ifobject(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(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);
 }
 
 static void __pkt_stream_replace_half(struct ifobject *ifobj, u32 pkt_len,
-- 
2.34.1


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

* [PATCH bpf-next v4 2/2] selftests/xsk: Add tail adjustment tests and support check
  2025-03-21  0:54 [PATCH bpf-next v4 0/2] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP Tushar Vyavahare
  2025-03-21  0:54 ` [PATCH bpf-next v4 1/2] selftests/xsk: Add packet stream replacement function Tushar Vyavahare
@ 2025-03-21  0:54 ` Tushar Vyavahare
  2025-03-22 13:14   ` Maciej Fijalkowski
  2025-04-08 16:54 ` [PATCH bpf-next v4 0/2] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP Maciej Fijalkowski
  2 siblings, 1 reply; 11+ messages in thread
From: Tushar Vyavahare @ 2025-03-21  0:54 UTC (permalink / raw)
  To: bpf
  Cc: netdev, bjorn, magnus.karlsson, maciej.fijalkowski,
	jonathan.lemon, davem, kuba, pabeni, ast, daniel,
	tirthendu.sarkar, tushar.vyavahare

Introduce tail adjustment functionality in xskxceiver using
bpf_xdp_adjust_tail(). Add `xsk_xdp_adjust_tail` to modify packet sizes
and drop unmodified packets. Implement `is_adjust_tail_supported` to check
helper availability. Develop packet resizing tests, including shrinking
and growing scenarios, with functions for both single-buffer and
multi-buffer cases. Update the test framework to handle various scenarios
and adjust MTU settings. These changes enhance the testing of packet tail
adjustments, improving AF_XDP framework reliability.

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

diff --git a/tools/testing/selftests/bpf/progs/xsk_xdp_progs.c b/tools/testing/selftests/bpf/progs/xsk_xdp_progs.c
index ccde6a4c6319..683306db8594 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 {
@@ -14,6 +16,7 @@ struct {
 } xsk SEC(".maps");
 
 static unsigned int idx;
+int adjust_value = 0;
 int count = 0;
 
 SEC("xdp.frags") int xsk_def_prog(struct xdp_md *xdp)
@@ -70,4 +73,51 @@ 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, adjust_value);
+	if (ret < 0) {
+		/* Handle unsupported cases */
+		if (ret == -EOPNOTSUPP) {
+			/* Set adjust_value to -EOPNOTSUPP to indicate to userspace that this case
+			 * is unsupported
+			 */
+			adjust_value = -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 + adjust_value)
+		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 'adjust_value' 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 - sizeof(seq_num), &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;
diff --git a/tools/testing/selftests/bpf/xskxceiver.c b/tools/testing/selftests/bpf/xskxceiver.c
index d60ee6a31c09..0ced4026ee44 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 adjust_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, &adjust_value);
+	if (ret) {
+		ksft_print_msg("Error: bpf_map_lookup_elem failed with error %d\n", ret);
+		exit_with_error(errno);
+	}
+
+	/* Set the 'adjust_value' 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 adjust_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);
 }
@@ -2516,6 +2548,71 @@ 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 adjust_value)
+{
+	struct xsk_xdp_progs *skel_rx = test->ifobj_rx->xdp_progs;
+	struct xsk_xdp_progs *skel_tx = test->ifobj_tx->xdp_progs;
+
+	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);
+
+	skel_rx->bss->adjust_value = adjust_value;
+
+	return testapp_validate_traffic(test);
+}
+
+static int testapp_adjust_tail(struct test_spec *test, u32 value, u32 pkt_len)
+{
+	int ret;
+
+	test->adjust_tail_support = true;
+	test->adjust_tail = true;
+	test->total_steps = 1;
+
+	pkt_stream_replace_ifobject(test->ifobj_tx, DEFAULT_BATCH_SIZE, pkt_len);
+	pkt_stream_replace_ifobject(test->ifobj_rx, DEFAULT_BATCH_SIZE, 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 int testapp_adjust_tail_shrink(struct test_spec *test)
+{
+	/* Shrink by 4 bytes for testing purpose */
+	return testapp_adjust_tail(test, -4, MIN_PKT_SIZE * 2);
+}
+
+static int testapp_adjust_tail_shrink_mb(struct test_spec *test)
+{
+	test->mtu = MAX_ETH_JUMBO_SIZE;
+	/* Shrink by the frag size */
+	return testapp_adjust_tail(test, -XSK_UMEM__MAX_FRAME_SIZE, XSK_UMEM__LARGE_FRAME_SIZE * 2);
+}
+
+static int testapp_adjust_tail_grow(struct test_spec *test)
+{
+	/* Grow by 4 bytes for testing purpose */
+	return testapp_adjust_tail(test, 4, MIN_PKT_SIZE * 2);
+}
+
+static int testapp_adjust_tail_grow_mb(struct test_spec *test)
+{
+	test->mtu = MAX_ETH_JUMBO_SIZE;
+	/* Grow by (frag_size - last_frag_Size) - 1 to stay inside the last fragment */
+	return testapp_adjust_tail(test, (XSK_UMEM__MAX_FRAME_SIZE / 2) - 1,
+				   XSK_UMEM__LARGE_FRAME_SIZE * 2);
+}
+
 static void run_pkt_test(struct test_spec *test)
 {
 	int ret;
@@ -2622,6 +2719,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)
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] 11+ messages in thread

* Re: [PATCH bpf-next v4 1/2] selftests/xsk: Add packet stream replacement function
  2025-03-21  0:54 ` [PATCH bpf-next v4 1/2] selftests/xsk: Add packet stream replacement function Tushar Vyavahare
@ 2025-03-22 13:02   ` Maciej Fijalkowski
  0 siblings, 0 replies; 11+ messages in thread
From: Maciej Fijalkowski @ 2025-03-22 13:02 UTC (permalink / raw)
  To: Tushar Vyavahare
  Cc: bpf, netdev, bjorn, magnus.karlsson, jonathan.lemon, davem, kuba,
	pabeni, ast, daniel, tirthendu.sarkar

On Fri, Mar 21, 2025 at 12:54:18AM +0000, Tushar Vyavahare wrote:
> Add pkt_stream_replace_ifobject function to replace the packet stream for
> a given ifobject.
> 
> Enable separate TX and RX packet replacement, allowing RX side packet
> length adjustments using bpf_xdp_adjust_tail() in the upcoming patch.
> Currently, pkt_stream_replace() works on both TX and RX packet streams,
> and this new function provides the ability to modify one of them.
> 
> Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>
> ---
>  tools/testing/selftests/bpf/xskxceiver.c | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)

Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>

> 
> diff --git a/tools/testing/selftests/bpf/xskxceiver.c b/tools/testing/selftests/bpf/xskxceiver.c
> index 11f047b8af75..d60ee6a31c09 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_ifobject(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(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);
>  }
>  
>  static void __pkt_stream_replace_half(struct ifobject *ifobj, u32 pkt_len,
> -- 
> 2.34.1
> 

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

* Re: [PATCH bpf-next v4 2/2] selftests/xsk: Add tail adjustment tests and support check
  2025-03-21  0:54 ` [PATCH bpf-next v4 2/2] selftests/xsk: Add tail adjustment tests and support check Tushar Vyavahare
@ 2025-03-22 13:14   ` Maciej Fijalkowski
  2025-03-24 12:32     ` Bastien Curutchet
  0 siblings, 1 reply; 11+ messages in thread
From: Maciej Fijalkowski @ 2025-03-22 13:14 UTC (permalink / raw)
  To: Tushar Vyavahare
  Cc: bpf, netdev, bjorn, magnus.karlsson, jonathan.lemon, davem, kuba,
	pabeni, ast, daniel, tirthendu.sarkar, bastien.curutchet

On Fri, Mar 21, 2025 at 12:54:19AM +0000, Tushar Vyavahare wrote:
> Introduce tail adjustment functionality in xskxceiver using
> bpf_xdp_adjust_tail(). Add `xsk_xdp_adjust_tail` to modify packet sizes
> and drop unmodified packets. Implement `is_adjust_tail_supported` to check
> helper availability. Develop packet resizing tests, including shrinking
> and growing scenarios, with functions for both single-buffer and
> multi-buffer cases. Update the test framework to handle various scenarios
> and adjust MTU settings. These changes enhance the testing of packet tail
> adjustments, improving AF_XDP framework reliability.
> 
> Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>

Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>

We carry the description of executed tests at the beginning of
xskxceiver.c and you have not updated it with these adjust tail tests but
it's not a show-stopper to me. I'm okay with current state of this patch.

Bastien, you probably would want to take into consideration these changes
if they go in before your bigger work.

> ---
>  .../selftests/bpf/progs/xsk_xdp_progs.c       |  50 +++++++++
>  tools/testing/selftests/bpf/xsk_xdp_common.h  |   1 +
>  tools/testing/selftests/bpf/xskxceiver.c      | 105 +++++++++++++++++-
>  tools/testing/selftests/bpf/xskxceiver.h      |   2 +
>  4 files changed, 156 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/testing/selftests/bpf/progs/xsk_xdp_progs.c b/tools/testing/selftests/bpf/progs/xsk_xdp_progs.c
> index ccde6a4c6319..683306db8594 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 {
> @@ -14,6 +16,7 @@ struct {
>  } xsk SEC(".maps");
>  
>  static unsigned int idx;
> +int adjust_value = 0;
>  int count = 0;
>  
>  SEC("xdp.frags") int xsk_def_prog(struct xdp_md *xdp)
> @@ -70,4 +73,51 @@ 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, adjust_value);
> +	if (ret < 0) {
> +		/* Handle unsupported cases */
> +		if (ret == -EOPNOTSUPP) {
> +			/* Set adjust_value to -EOPNOTSUPP to indicate to userspace that this case
> +			 * is unsupported
> +			 */
> +			adjust_value = -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 + adjust_value)
> +		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 'adjust_value' 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 - sizeof(seq_num), &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;
> diff --git a/tools/testing/selftests/bpf/xskxceiver.c b/tools/testing/selftests/bpf/xskxceiver.c
> index d60ee6a31c09..0ced4026ee44 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 adjust_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, &adjust_value);
> +	if (ret) {
> +		ksft_print_msg("Error: bpf_map_lookup_elem failed with error %d\n", ret);
> +		exit_with_error(errno);
> +	}
> +
> +	/* Set the 'adjust_value' 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 adjust_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);
>  }
> @@ -2516,6 +2548,71 @@ 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 adjust_value)
> +{
> +	struct xsk_xdp_progs *skel_rx = test->ifobj_rx->xdp_progs;
> +	struct xsk_xdp_progs *skel_tx = test->ifobj_tx->xdp_progs;
> +
> +	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);
> +
> +	skel_rx->bss->adjust_value = adjust_value;
> +
> +	return testapp_validate_traffic(test);
> +}
> +
> +static int testapp_adjust_tail(struct test_spec *test, u32 value, u32 pkt_len)
> +{
> +	int ret;
> +
> +	test->adjust_tail_support = true;
> +	test->adjust_tail = true;
> +	test->total_steps = 1;
> +
> +	pkt_stream_replace_ifobject(test->ifobj_tx, DEFAULT_BATCH_SIZE, pkt_len);
> +	pkt_stream_replace_ifobject(test->ifobj_rx, DEFAULT_BATCH_SIZE, 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 int testapp_adjust_tail_shrink(struct test_spec *test)
> +{
> +	/* Shrink by 4 bytes for testing purpose */
> +	return testapp_adjust_tail(test, -4, MIN_PKT_SIZE * 2);
> +}
> +
> +static int testapp_adjust_tail_shrink_mb(struct test_spec *test)
> +{
> +	test->mtu = MAX_ETH_JUMBO_SIZE;
> +	/* Shrink by the frag size */
> +	return testapp_adjust_tail(test, -XSK_UMEM__MAX_FRAME_SIZE, XSK_UMEM__LARGE_FRAME_SIZE * 2);
> +}
> +
> +static int testapp_adjust_tail_grow(struct test_spec *test)
> +{
> +	/* Grow by 4 bytes for testing purpose */
> +	return testapp_adjust_tail(test, 4, MIN_PKT_SIZE * 2);
> +}
> +
> +static int testapp_adjust_tail_grow_mb(struct test_spec *test)
> +{
> +	test->mtu = MAX_ETH_JUMBO_SIZE;
> +	/* Grow by (frag_size - last_frag_Size) - 1 to stay inside the last fragment */
> +	return testapp_adjust_tail(test, (XSK_UMEM__MAX_FRAME_SIZE / 2) - 1,
> +				   XSK_UMEM__LARGE_FRAME_SIZE * 2);
> +}
> +
>  static void run_pkt_test(struct test_spec *test)
>  {
>  	int ret;
> @@ -2622,6 +2719,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)
> 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	[flat|nested] 11+ messages in thread

* Re: [PATCH bpf-next v4 2/2] selftests/xsk: Add tail adjustment tests and support check
  2025-03-22 13:14   ` Maciej Fijalkowski
@ 2025-03-24 12:32     ` Bastien Curutchet
  0 siblings, 0 replies; 11+ messages in thread
From: Bastien Curutchet @ 2025-03-24 12:32 UTC (permalink / raw)
  To: Maciej Fijalkowski, Tushar Vyavahare
  Cc: bpf, netdev, bjorn, magnus.karlsson, jonathan.lemon, davem, kuba,
	pabeni, ast, daniel, tirthendu.sarkar, Alexis Lothoré

Hi Maciej

On 3/22/25 2:14 PM, Maciej Fijalkowski wrote:
> On Fri, Mar 21, 2025 at 12:54:19AM +0000, Tushar Vyavahare wrote:
>> Introduce tail adjustment functionality in xskxceiver using
>> bpf_xdp_adjust_tail(). Add `xsk_xdp_adjust_tail` to modify packet sizes
>> and drop unmodified packets. Implement `is_adjust_tail_supported` to check
>> helper availability. Develop packet resizing tests, including shrinking
>> and growing scenarios, with functions for both single-buffer and
>> multi-buffer cases. Update the test framework to handle various scenarios
>> and adjust MTU settings. These changes enhance the testing of packet tail
>> adjustments, improving AF_XDP framework reliability.
>>
>> Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>
> 
> Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
> 
> We carry the description of executed tests at the beginning of
> xskxceiver.c and you have not updated it with these adjust tail tests but
> it's not a show-stopper to me. I'm okay with current state of this patch.
> 
> Bastien, you probably would want to take into consideration these changes
> if they go in before your bigger work.
> 

Thanks for the pointer, I'll keep an eye on it.

Best regards,
Bastien

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

* Re: [PATCH bpf-next v4 0/2] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP
  2025-03-21  0:54 [PATCH bpf-next v4 0/2] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP Tushar Vyavahare
  2025-03-21  0:54 ` [PATCH bpf-next v4 1/2] selftests/xsk: Add packet stream replacement function Tushar Vyavahare
  2025-03-21  0:54 ` [PATCH bpf-next v4 2/2] selftests/xsk: Add tail adjustment tests and support check Tushar Vyavahare
@ 2025-04-08 16:54 ` Maciej Fijalkowski
  2025-04-09 15:37   ` Alexei Starovoitov
  2 siblings, 1 reply; 11+ messages in thread
From: Maciej Fijalkowski @ 2025-04-08 16:54 UTC (permalink / raw)
  To: Tushar Vyavahare
  Cc: bpf, netdev, bjorn, magnus.karlsson, jonathan.lemon, davem, kuba,
	pabeni, ast, daniel, tirthendu.sarkar

On Fri, Mar 21, 2025 at 12:54:17AM +0000, Tushar Vyavahare wrote:
> 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.
> 
> v1 -> v2:
> 1. Retain and extend stream replacement: Keep `pkt_stream_replace`
>    unchanged. Add `pkt_stream_replace_ifobject` for targeted ifobject
>    handling.
> 
> 2. Consolidate patches: Merge patches 2 to 6 for tail adjustment tests and
>    check.
> 
> v2 -> v3:
> 1. Introduce `adjust_value` to replace `count` for clearer communication
>    with userspace.
> 
> v3 -> v4:
> 1. Remove `testapp_adjust_tail_common()`. [Maciej]
> 
> 2. Add comments and modify code for buffer resizing logic in test cases
>    (shrink/grow by specific byte sizes for testing purposes). [Maciej]

Hi BPF maintainers,

could we merge this patch set as i have acked the patches? Or is there
something that stops us? I suppose this might have slipped during the
merge window?

Thanks,
Maciej

> 
> ---
> Patch Summary:
> 
> 1. Packet stream replacement: Add `pkt_stream_replace_ifobject` to manage
>    packet streams efficiently.
> 
> 2. Tail adjustment tests and support check: Implement dynamic packet
>    resizing in xskxceiver by adding `xsk_xdp_adjust_tail` and extend this
>    functionality to userspace with `testapp_xdp_adjust_tail` for
>    validation. Ensure support by adding `is_adjust_tail_supported` to
>    verify the availability of `bpf_xdp_adjust_tail()`. Introduce tests for
>    shrinking and growing packets using `bpf_xdp_adjust_tail()`, covering
>    both single and multi-buffer scenarios when used with AF_XDP.
> ---
> 
> Tushar Vyavahare (2):
>   selftests/xsk: Add packet stream replacement function
>   selftests/xsk: Add tail adjustment tests and support check
> 
> Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>
> 
>  .../selftests/bpf/progs/xsk_xdp_progs.c       |  50 ++++++++
>  tools/testing/selftests/bpf/xsk_xdp_common.h  |   1 +
>  tools/testing/selftests/bpf/xskxceiver.c      | 118 ++++++++++++++++--
>  tools/testing/selftests/bpf/xskxceiver.h      |   2 +
>  4 files changed, 163 insertions(+), 8 deletions(-)
> 
> -- 
> 2.34.1
> 

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

* Re: [PATCH bpf-next v4 0/2] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP
  2025-04-08 16:54 ` [PATCH bpf-next v4 0/2] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP Maciej Fijalkowski
@ 2025-04-09 15:37   ` Alexei Starovoitov
  0 siblings, 0 replies; 11+ messages in thread
From: Alexei Starovoitov @ 2025-04-09 15:37 UTC (permalink / raw)
  To: Maciej Fijalkowski
  Cc: Tushar Vyavahare, bpf, Network Development, Björn Töpel,
	Karlsson, Magnus, Jonathan Lemon, David S. Miller, Jakub Kicinski,
	Paolo Abeni, Alexei Starovoitov, Daniel Borkmann,
	Sarkar, Tirthendu

On Tue, Apr 8, 2025 at 9:55 AM Maciej Fijalkowski
<maciej.fijalkowski@intel.com> wrote:
>
> On Fri, Mar 21, 2025 at 12:54:17AM +0000, Tushar Vyavahare wrote:
> > 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.
> >
> > v1 -> v2:
> > 1. Retain and extend stream replacement: Keep `pkt_stream_replace`
> >    unchanged. Add `pkt_stream_replace_ifobject` for targeted ifobject
> >    handling.
> >
> > 2. Consolidate patches: Merge patches 2 to 6 for tail adjustment tests and
> >    check.
> >
> > v2 -> v3:
> > 1. Introduce `adjust_value` to replace `count` for clearer communication
> >    with userspace.
> >
> > v3 -> v4:
> > 1. Remove `testapp_adjust_tail_common()`. [Maciej]
> >
> > 2. Add comments and modify code for buffer resizing logic in test cases
> >    (shrink/grow by specific byte sizes for testing purposes). [Maciej]
>
> Hi BPF maintainers,
>
> could we merge this patch set as i have acked the patches? Or is there
> something that stops us? I suppose this might have slipped during the
> merge window?

Sorry. It got lost. Please resend the set.

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

* [PATCH bpf-next v4 0/2] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP
@ 2025-04-10  3:31 Tushar Vyavahare
  2025-04-10 17:20 ` patchwork-bot+netdevbpf
  0 siblings, 1 reply; 11+ messages in thread
From: Tushar Vyavahare @ 2025-04-10  3:31 UTC (permalink / raw)
  To: bpf
  Cc: netdev, bjorn, magnus.karlsson, maciej.fijalkowski,
	jonathan.lemon, davem, kuba, pabeni, ast, daniel,
	tirthendu.sarkar, 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.

v1 -> v2:
1. Retain and extend stream replacement: Keep `pkt_stream_replace`
   unchanged. Add `pkt_stream_replace_ifobject` for targeted ifobject
   handling.

2. Consolidate patches: Merge patches 2 to 6 for tail adjustment tests and
   check.

v2 -> v3:
1. Introduce `adjust_value` to replace `count` for clearer communication
   with userspace.

v3 -> v4:
1. Remove `testapp_adjust_tail_common()`. [Maciej]

2. Add comments and modify code for buffer resizing logic in test cases
   (shrink/grow by specific byte sizes for testing purposes). [Maciej]

---
Patch Summary:

1. Packet stream replacement: Add `pkt_stream_replace_ifobject` to manage
   packet streams efficiently.

2. Tail adjustment tests and support check: Implement dynamic packet
   resizing in xskxceiver by adding `xsk_xdp_adjust_tail` and extend this
   functionality to userspace with `testapp_xdp_adjust_tail` for
   validation. Ensure support by adding `is_adjust_tail_supported` to
   verify the availability of `bpf_xdp_adjust_tail()`. Introduce tests for
   shrinking and growing packets using `bpf_xdp_adjust_tail()`, covering
   both single and multi-buffer scenarios when used with AF_XDP.
---

Tushar Vyavahare (2):
  selftests/xsk: Add packet stream replacement function
  selftests/xsk: Add tail adjustment tests and support check

Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>
Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>

 .../selftests/bpf/progs/xsk_xdp_progs.c       |  50 ++++++++
 tools/testing/selftests/bpf/xsk_xdp_common.h  |   1 +
 tools/testing/selftests/bpf/xskxceiver.c      | 118 ++++++++++++++++--
 tools/testing/selftests/bpf/xskxceiver.h      |   2 +
 4 files changed, 163 insertions(+), 8 deletions(-)

-- 
2.34.1


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

* Re: [PATCH bpf-next v4 0/2] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP
  2025-04-10  3:31 Tushar Vyavahare
@ 2025-04-10 17:20 ` patchwork-bot+netdevbpf
  2025-05-28  2:27   ` Vyavahare, Tushar
  0 siblings, 1 reply; 11+ messages in thread
From: patchwork-bot+netdevbpf @ 2025-04-10 17:20 UTC (permalink / raw)
  To: Tushar Vyavahare
  Cc: bpf, netdev, bjorn, magnus.karlsson, maciej.fijalkowski,
	jonathan.lemon, davem, kuba, pabeni, ast, daniel,
	tirthendu.sarkar

Hello:

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

On Thu, 10 Apr 2025 03:31:14 +0000 you wrote:
> 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.
> 
> v1 -> v2:
> 1. Retain and extend stream replacement: Keep `pkt_stream_replace`
>    unchanged. Add `pkt_stream_replace_ifobject` for targeted ifobject
>    handling.
> 
> [...]

Here is the summary with links:
  - [bpf-next,v4,1/2] selftests/xsk: Add packet stream replacement function
    https://git.kernel.org/bpf/bpf-next/c/3e730fe2af86
  - [bpf-next,v4,2/2] selftests/xsk: Add tail adjustment tests and support check
    https://git.kernel.org/bpf/bpf-next/c/4b302092553c

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] 11+ messages in thread

* RE: [PATCH bpf-next v4 0/2] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP
  2025-04-10 17:20 ` patchwork-bot+netdevbpf
@ 2025-05-28  2:27   ` Vyavahare, Tushar
  0 siblings, 0 replies; 11+ messages in thread
From: Vyavahare, Tushar @ 2025-05-28  2:27 UTC (permalink / raw)
  To: martin.lau@kernel.org
  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, Sarkar, Tirthendu


Hi Martin and Team,

I noticed below patchset applied to bpf-next on April 10, 2025, hasn't been merged into the master branch yet.
Could you please provide an update on the expected timeline for this integration?
If there are any issues or additional steps required from my side, please let me know.

Thanks,
-Tushar

> -----Original Message-----
> From: patchwork-bot+netdevbpf@kernel.org <patchwork-
> bot+netdevbpf@kernel.org>
> Sent: Thursday, April 10, 2025 10:51 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; Sarkar, Tirthendu
> <tirthendu.sarkar@intel.com>
> Subject: Re: [PATCH bpf-next v4 0/2] selftests/xsk: Add tests for XDP tail
> adjustment in AF_XDP
> 
> Hello:
> 
> This series was applied to bpf/bpf-next.git (net) by Martin KaFai Lau
> <martin.lau@kernel.org>:
> 
> On Thu, 10 Apr 2025 03:31:14 +0000 you wrote:
> > 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.
> >
> > v1 -> v2:
> > 1. Retain and extend stream replacement: Keep `pkt_stream_replace`
> >    unchanged. Add `pkt_stream_replace_ifobject` for targeted ifobject
> >    handling.
> >
> > [...]
> 
> Here is the summary with links:
>   - [bpf-next,v4,1/2] selftests/xsk: Add packet stream replacement function
>     https://git.kernel.org/bpf/bpf-next/c/3e730fe2af86
>   - [bpf-next,v4,2/2] selftests/xsk: Add tail adjustment tests and support
> check
>     https://git.kernel.org/bpf/bpf-next/c/4b302092553c
> 
> 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] 11+ messages in thread

end of thread, other threads:[~2025-05-28  2:27 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-21  0:54 [PATCH bpf-next v4 0/2] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP Tushar Vyavahare
2025-03-21  0:54 ` [PATCH bpf-next v4 1/2] selftests/xsk: Add packet stream replacement function Tushar Vyavahare
2025-03-22 13:02   ` Maciej Fijalkowski
2025-03-21  0:54 ` [PATCH bpf-next v4 2/2] selftests/xsk: Add tail adjustment tests and support check Tushar Vyavahare
2025-03-22 13:14   ` Maciej Fijalkowski
2025-03-24 12:32     ` Bastien Curutchet
2025-04-08 16:54 ` [PATCH bpf-next v4 0/2] selftests/xsk: Add tests for XDP tail adjustment in AF_XDP Maciej Fijalkowski
2025-04-09 15:37   ` Alexei Starovoitov
  -- strict thread matches above, loose matches on Subject: below --
2025-04-10  3:31 Tushar Vyavahare
2025-04-10 17:20 ` patchwork-bot+netdevbpf
2025-05-28  2:27   ` Vyavahare, Tushar

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