Netdev Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH bpf-next] samples/bpf: fix to xdpsock to avoid recycling frames
@ 2020-08-28 16:17 Weqaar Janjua
  2020-08-31 11:11 ` Björn Töpel
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Weqaar Janjua @ 2020-08-28 16:17 UTC (permalink / raw)
  To: magnus.karlsson, bjorn.topel, ast, daniel, netdev, jonathan.lemon
  Cc: Weqaar Janjua, bpf

The txpush program in the xdpsock sample application is supposed
to send out all packets in the umem in a round-robin fashion.
The problem is that it only cycled through the first BATCH_SIZE
worth of packets. Fixed this so that it cycles through all buffers
in the umem as intended.

Fixes: 248c7f9c0e21 ("samples/bpf: convert xdpsock to use libbpf for AF_XDP access")
Signed-off-by: Weqaar Janjua <weqaar.a.janjua@intel.com>
---
 samples/bpf/xdpsock_user.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/samples/bpf/xdpsock_user.c b/samples/bpf/xdpsock_user.c
index 19c679456a0e..c821e9867139 100644
--- a/samples/bpf/xdpsock_user.c
+++ b/samples/bpf/xdpsock_user.c
@@ -1004,7 +1004,7 @@ static void rx_drop_all(void)
 	}
 }
 
-static void tx_only(struct xsk_socket_info *xsk, u32 frame_nb, int batch_size)
+static void tx_only(struct xsk_socket_info *xsk, u32 *frame_nb, int batch_size)
 {
 	u32 idx;
 	unsigned int i;
@@ -1017,14 +1017,14 @@ static void tx_only(struct xsk_socket_info *xsk, u32 frame_nb, int batch_size)
 	for (i = 0; i < batch_size; i++) {
 		struct xdp_desc *tx_desc = xsk_ring_prod__tx_desc(&xsk->tx,
 								  idx + i);
-		tx_desc->addr = (frame_nb + i) << XSK_UMEM__DEFAULT_FRAME_SHIFT;
+		tx_desc->addr = (*frame_nb + i) << XSK_UMEM__DEFAULT_FRAME_SHIFT;
 		tx_desc->len = PKT_SIZE;
 	}
 
 	xsk_ring_prod__submit(&xsk->tx, batch_size);
 	xsk->outstanding_tx += batch_size;
-	frame_nb += batch_size;
-	frame_nb %= NUM_FRAMES;
+	*frame_nb += batch_size;
+	*frame_nb %= NUM_FRAMES;
 	complete_tx_only(xsk, batch_size);
 }
 
@@ -1080,7 +1080,7 @@ static void tx_only_all(void)
 		}
 
 		for (i = 0; i < num_socks; i++)
-			tx_only(xsks[i], frame_nb[i], batch_size);
+			tx_only(xsks[i], &frame_nb[i], batch_size);
 
 		pkt_cnt += batch_size;
 
-- 
2.20.1

--------------------------------------------------------------
Intel Research and Development Ireland Limited
Registered in Ireland
Registered Office: Collinstown Industrial Park, Leixlip, County Kildare
Registered Number: 308263


This e-mail and any attachments may contain confidential material for the sole
use of the intended recipient(s). Any review or distribution by others is
strictly prohibited. If you are not the intended recipient, please contact the
sender and delete all copies.


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

* Re: [PATCH bpf-next] samples/bpf: fix to xdpsock to avoid recycling frames
  2020-08-28 16:17 [PATCH bpf-next] samples/bpf: fix to xdpsock to avoid recycling frames Weqaar Janjua
@ 2020-08-31 11:11 ` Björn Töpel
  2020-08-31 11:13 ` Björn Töpel
  2020-08-31 21:03 ` Daniel Borkmann
  2 siblings, 0 replies; 4+ messages in thread
From: Björn Töpel @ 2020-08-31 11:11 UTC (permalink / raw)
  To: Weqaar Janjua
  Cc: Karlsson, Magnus, Björn Töpel, Alexei Starovoitov,
	Daniel Borkmann, Netdev, Jonathan Lemon, bpf

On Fri, 28 Aug 2020 at 18:18, Weqaar Janjua <weqaar.a.janjua@intel.com> wrote:
>
> The txpush program in the xdpsock sample application is supposed
> to send out all packets in the umem in a round-robin fashion.
> The problem is that it only cycled through the first BATCH_SIZE
> worth of packets. Fixed this so that it cycles through all buffers
> in the umem as intended.
>
> Fixes: 248c7f9c0e21 ("samples/bpf: convert xdpsock to use libbpf for AF_XDP access")
> Signed-off-by: Weqaar Janjua <weqaar.a.janjua@intel.com>

Thanks Weqaar!

Acked-by: Björn Töpel <bjorn.topel@intel.com>

> ---
>  samples/bpf/xdpsock_user.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/samples/bpf/xdpsock_user.c b/samples/bpf/xdpsock_user.c
> index 19c679456a0e..c821e9867139 100644
> --- a/samples/bpf/xdpsock_user.c
> +++ b/samples/bpf/xdpsock_user.c
> @@ -1004,7 +1004,7 @@ static void rx_drop_all(void)
>         }
>  }
>
> -static void tx_only(struct xsk_socket_info *xsk, u32 frame_nb, int batch_size)
> +static void tx_only(struct xsk_socket_info *xsk, u32 *frame_nb, int batch_size)
>  {
>         u32 idx;
>         unsigned int i;
> @@ -1017,14 +1017,14 @@ static void tx_only(struct xsk_socket_info *xsk, u32 frame_nb, int batch_size)
>         for (i = 0; i < batch_size; i++) {
>                 struct xdp_desc *tx_desc = xsk_ring_prod__tx_desc(&xsk->tx,
>                                                                   idx + i);
> -               tx_desc->addr = (frame_nb + i) << XSK_UMEM__DEFAULT_FRAME_SHIFT;
> +               tx_desc->addr = (*frame_nb + i) << XSK_UMEM__DEFAULT_FRAME_SHIFT;
>                 tx_desc->len = PKT_SIZE;
>         }
>
>         xsk_ring_prod__submit(&xsk->tx, batch_size);
>         xsk->outstanding_tx += batch_size;
> -       frame_nb += batch_size;
> -       frame_nb %= NUM_FRAMES;
> +       *frame_nb += batch_size;
> +       *frame_nb %= NUM_FRAMES;
>         complete_tx_only(xsk, batch_size);
>  }
>
> @@ -1080,7 +1080,7 @@ static void tx_only_all(void)
>                 }
>
>                 for (i = 0; i < num_socks; i++)
> -                       tx_only(xsks[i], frame_nb[i], batch_size);
> +                       tx_only(xsks[i], &frame_nb[i], batch_size);
>
>                 pkt_cnt += batch_size;
>
> --
> 2.20.1
>
> --------------------------------------------------------------
> Intel Research and Development Ireland Limited
> Registered in Ireland
> Registered Office: Collinstown Industrial Park, Leixlip, County Kildare
> Registered Number: 308263
>
>
> This e-mail and any attachments may contain confidential material for the sole
> use of the intended recipient(s). Any review or distribution by others is
> strictly prohibited. If you are not the intended recipient, please contact the
> sender and delete all copies.
>

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

* Re: [PATCH bpf-next] samples/bpf: fix to xdpsock to avoid recycling frames
  2020-08-28 16:17 [PATCH bpf-next] samples/bpf: fix to xdpsock to avoid recycling frames Weqaar Janjua
  2020-08-31 11:11 ` Björn Töpel
@ 2020-08-31 11:13 ` Björn Töpel
  2020-08-31 21:03 ` Daniel Borkmann
  2 siblings, 0 replies; 4+ messages in thread
From: Björn Töpel @ 2020-08-31 11:13 UTC (permalink / raw)
  To: Weqaar Janjua
  Cc: Karlsson, Magnus, Björn Töpel, Alexei Starovoitov,
	Daniel Borkmann, Netdev, Jonathan Lemon, bpf

On Fri, 28 Aug 2020 at 18:18, Weqaar Janjua <weqaar.a.janjua@intel.com> wrote:
>
[...]
> --
> 2.20.1
>
> --------------------------------------------------------------
> Intel Research and Development Ireland Limited
> Registered in Ireland
> Registered Office: Collinstown Industrial Park, Leixlip, County Kildare
> Registered Number: 308263
>
>
> This e-mail and any attachments may contain confidential material for the sole
> use of the intended recipient(s). Any review or distribution by others is
> strictly prohibited. If you are not the intended recipient, please contact the
> sender and delete all copies.
>

Make sure this footer is removed for future commits.


Thanks,
Björn

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

* Re: [PATCH bpf-next] samples/bpf: fix to xdpsock to avoid recycling frames
  2020-08-28 16:17 [PATCH bpf-next] samples/bpf: fix to xdpsock to avoid recycling frames Weqaar Janjua
  2020-08-31 11:11 ` Björn Töpel
  2020-08-31 11:13 ` Björn Töpel
@ 2020-08-31 21:03 ` Daniel Borkmann
  2 siblings, 0 replies; 4+ messages in thread
From: Daniel Borkmann @ 2020-08-31 21:03 UTC (permalink / raw)
  To: Weqaar Janjua, magnus.karlsson, bjorn.topel, ast, netdev, jonathan.lemon
  Cc: bpf

On 8/28/20 6:17 PM, Weqaar Janjua wrote:
> The txpush program in the xdpsock sample application is supposed
> to send out all packets in the umem in a round-robin fashion.
> The problem is that it only cycled through the first BATCH_SIZE
> worth of packets. Fixed this so that it cycles through all buffers
> in the umem as intended.
> 
> Fixes: 248c7f9c0e21 ("samples/bpf: convert xdpsock to use libbpf for AF_XDP access")
> Signed-off-by: Weqaar Janjua <weqaar.a.janjua@intel.com>

Applied, thanks!

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

end of thread, other threads:[~2020-08-31 21:03 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-28 16:17 [PATCH bpf-next] samples/bpf: fix to xdpsock to avoid recycling frames Weqaar Janjua
2020-08-31 11:11 ` Björn Töpel
2020-08-31 11:13 ` Björn Töpel
2020-08-31 21:03 ` Daniel Borkmann

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