selftests/xsk: Add packet stream replacement function
authorTushar Vyavahare <tushar.vyavahare@intel.com>
Thu, 10 Apr 2025 03:31:15 +0000 (03:31 +0000)
committerMartin KaFai Lau <martin.lau@kernel.org>
Thu, 10 Apr 2025 17:07:48 +0000 (10:07 -0700)
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.

Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Signed-off-by: Tushar Vyavahare <tushar.vyavahare@intel.com>
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Link: https://patch.msgid.link/20250410033116.173617-2-tushar.vyavahare@intel.com
tools/testing/selftests/bpf/xskxceiver.c

index 11f047b8af75262b4bd5490ccedda00db4a639d2..d60ee6a31c09ecc0636a372a344d70953ab4ff71 100644 (file)
@@ -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,