All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jesper Dangaard Brouer <brouer@redhat.com>
To: sameehj@amazon.com
Cc: "Jesper Dangaard Brouer" <brouer@redhat.com>,
	netdev@vger.kernel.org, bpf@vger.kernel.org,
	"Toke Høiland-Jørgensen" <toke@redhat.com>,
	"Daniel Borkmann" <borkmann@iogearbox.net>,
	"Alexei Starovoitov" <alexei.starovoitov@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	"John Fastabend" <john.fastabend@gmail.com>,
	"Alexander Duyck" <alexander.duyck@gmail.com>,
	"Jeff Kirsher" <jeffrey.t.kirsher@intel.com>,
	"David Ahern" <dsahern@gmail.com>,
	"Ilias Apalodimas" <ilias.apalodimas@linaro.org>,
	"Lorenzo Bianconi" <lorenzo@kernel.org>,
	"Saeed Mahameed" <saeedm@mellanox.com>,
	"Tariq Toukan" <tariqt@mellanox.com>
Subject: [PATCH net-next v4 11/33] dpaa2-eth: add XDP frame size
Date: Thu, 14 May 2020 12:49:53 +0200	[thread overview]
Message-ID: <158945339348.97035.8562488847066908856.stgit@firesoul> (raw)
In-Reply-To: <158945314698.97035.5286827951225578467.stgit@firesoul>

The dpaa2-eth driver reserve some headroom used for hardware and
software annotation area in RX/TX buffers. Thus, xdp.data_hard_start
doesn't start at page boundary.

When XDP is configured the area reserved via dpaa2_fd_get_offset(fd) is
448 bytes of which XDP have reserved 256 bytes. As frame_sz is
calculated as an offset from xdp_buff.data_hard_start, an adjust from
the full PAGE_SIZE == DPAA2_ETH_RX_BUF_RAW_SIZE.

When doing XDP_REDIRECT, the driver doesn't need this reserved headroom
any-longer and allows xdp_do_redirect() to use it. This is an advantage
for the drivers own ndo-xdp_xmit, as it uses part of this headroom for
itself.  Patch also adjust frame_sz in this case.

The driver cannot support XDP data_meta, because it uses the headroom
just before xdp.data for struct dpaa2_eth_swa (DPAA2_ETH_SWA_SIZE=64),
when transmitting the packet. When transmitting a xdp_frame in
dpaa2_eth_xdp_xmit_frame (call via ndo_xdp_xmit) is uses this area to
store a pointer to xdp_frame and dma_size, which is used in TX
completion (free_tx_fd) to return frame via xdp_return_frame().

Cc: Ioana Radulescu <ruxandra.radulescu@nxp.com>
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
---
 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c |    7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
index 0f3e842a4fd6..8c8d95aa1dfd 100644
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
@@ -331,6 +331,9 @@ static u32 run_xdp(struct dpaa2_eth_priv *priv,
 	xdp_set_data_meta_invalid(&xdp);
 	xdp.rxq = &ch->xdp_rxq;
 
+	xdp.frame_sz = DPAA2_ETH_RX_BUF_RAW_SIZE -
+		(dpaa2_fd_get_offset(fd) - XDP_PACKET_HEADROOM);
+
 	xdp_act = bpf_prog_run_xdp(xdp_prog, &xdp);
 
 	/* xdp.data pointer may have changed */
@@ -366,7 +369,11 @@ static u32 run_xdp(struct dpaa2_eth_priv *priv,
 		dma_unmap_page(priv->net_dev->dev.parent, addr,
 			       DPAA2_ETH_RX_BUF_SIZE, DMA_BIDIRECTIONAL);
 		ch->buf_count--;
+
+		/* Allow redirect use of full headroom */
 		xdp.data_hard_start = vaddr;
+		xdp.frame_sz = DPAA2_ETH_RX_BUF_RAW_SIZE;
+
 		err = xdp_do_redirect(priv->net_dev, &xdp, xdp_prog);
 		if (unlikely(err))
 			ch->stats.xdp_drop++;



  parent reply	other threads:[~2020-05-14 10:50 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-14 10:48 [PATCH net-next v4 00/33] XDP extend with knowledge of frame size Jesper Dangaard Brouer
2020-05-14 10:49 ` [PATCH net-next v4 01/33] xdp: add frame size to xdp_buff Jesper Dangaard Brouer
2020-05-14 10:49 ` [PATCH net-next v4 02/33] bnxt: add XDP frame size to driver Jesper Dangaard Brouer
2020-05-14 10:49 ` [PATCH net-next v4 03/33] sfc: add XDP frame size Jesper Dangaard Brouer
2020-05-14 10:49 ` [PATCH net-next v4 04/33] mvneta: add XDP frame size to driver Jesper Dangaard Brouer
2020-05-14 10:49 ` [PATCH net-next v4 05/33] net: netsec: Add support for XDP frame size Jesper Dangaard Brouer
2020-05-14 10:49 ` [PATCH net-next v4 06/33] net: XDP-generic determining " Jesper Dangaard Brouer
2020-05-14 10:49 ` [PATCH net-next v4 07/33] xdp: xdp_frame add member frame_sz and handle in convert_to_xdp_frame Jesper Dangaard Brouer
2020-05-14 10:49 ` [PATCH net-next v4 08/33] xdp: cpumap redirect use frame_sz and increase skb_tailroom Jesper Dangaard Brouer
2020-05-14 10:49 ` [PATCH net-next v4 09/33] veth: adjust hard_start offset on redirect XDP frames Jesper Dangaard Brouer
2020-05-14 10:49 ` [PATCH net-next v4 10/33] veth: xdp using frame_sz in veth driver Jesper Dangaard Brouer
2020-05-14 10:49 ` Jesper Dangaard Brouer [this message]
2020-05-14 10:49 ` [PATCH net-next v4 12/33] hv_netvsc: add XDP frame size to driver Jesper Dangaard Brouer
2020-05-14 10:50 ` [PATCH net-next v4 13/33] qlogic/qede: " Jesper Dangaard Brouer
2020-05-14 10:50 ` [PATCH net-next v4 14/33] net: ethernet: ti: add XDP frame size to driver cpsw Jesper Dangaard Brouer
2020-05-14 10:50 ` [PATCH net-next v4 15/33] ena: add XDP frame size to amazon NIC driver Jesper Dangaard Brouer
2020-05-14 10:50 ` [PATCH net-next v4 16/33] mlx4: add XDP frame size and adjust max XDP MTU Jesper Dangaard Brouer
2020-05-14 10:50 ` [PATCH net-next v4 17/33] net: thunderx: add XDP frame size Jesper Dangaard Brouer
2020-05-14 10:50 ` [PATCH net-next v4 18/33] nfp: add XDP frame size to netronome driver Jesper Dangaard Brouer
2020-05-14 10:50 ` [PATCH net-next v4 19/33] tun: add XDP frame size Jesper Dangaard Brouer
2020-05-14 10:50 ` [PATCH net-next v4 20/33] vhost_net: also populate " Jesper Dangaard Brouer
2020-05-14 10:50 ` [PATCH net-next v4 21/33] virtio_net: add XDP frame size in two code paths Jesper Dangaard Brouer
2020-05-14 10:50 ` [PATCH net-next v4 22/33] ixgbe: fix XDP redirect on archs with PAGE_SIZE above 4K Jesper Dangaard Brouer
2020-05-14 10:50 ` [PATCH net-next v4 23/33] ixgbe: add XDP frame size to driver Jesper Dangaard Brouer
2020-05-14 10:50 ` [PATCH net-next v4 24/33] ixgbevf: add XDP frame size to VF driver Jesper Dangaard Brouer
2020-05-14 10:51 ` [PATCH net-next v4 25/33] i40e: add XDP frame size to driver Jesper Dangaard Brouer
2020-05-14 10:51 ` [PATCH net-next v4 26/33] ice: " Jesper Dangaard Brouer
2020-05-14 10:51 ` [PATCH net-next v4 27/33] xdp: for Intel AF_XDP drivers add XDP frame_sz Jesper Dangaard Brouer
2020-05-14 10:51 ` [PATCH net-next v4 28/33] mlx5: rx queue setup time determine frame_sz for XDP Jesper Dangaard Brouer
2020-05-14 10:51 ` [PATCH net-next v4 29/33] xdp: allow bpf_xdp_adjust_tail() to grow packet size Jesper Dangaard Brouer
2020-05-14 10:51 ` [PATCH net-next v4 30/33] xdp: clear grow memory in bpf_xdp_adjust_tail() Jesper Dangaard Brouer
2020-05-14 10:51 ` [PATCH net-next v4 31/33] bpf: add xdp.frame_sz in bpf_prog_test_run_xdp() Jesper Dangaard Brouer
2020-05-17  4:02   ` unstable xdp tests. Was: " Alexei Starovoitov
2020-05-18  9:52     ` Jesper Dangaard Brouer
2020-05-18 10:30       ` Jesper Dangaard Brouer
2020-05-18 19:19         ` Andrii Nakryiko
2020-05-14 10:51 ` [PATCH net-next v4 32/33] selftests/bpf: adjust BPF selftest for xdp_adjust_tail Jesper Dangaard Brouer
2020-05-14 10:51 ` [PATCH net-next v4 33/33] selftests/bpf: xdp_adjust_tail add grow tail tests Jesper Dangaard Brouer
2020-05-15  4:52 ` [PATCH net-next v4 00/33] XDP extend with knowledge of frame size Alexei Starovoitov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=158945339348.97035.8562488847066908856.stgit@firesoul \
    --to=brouer@redhat.com \
    --cc=alexander.duyck@gmail.com \
    --cc=alexei.starovoitov@gmail.com \
    --cc=borkmann@iogearbox.net \
    --cc=bpf@vger.kernel.org \
    --cc=davem@davemloft.net \
    --cc=dsahern@gmail.com \
    --cc=ilias.apalodimas@linaro.org \
    --cc=jeffrey.t.kirsher@intel.com \
    --cc=john.fastabend@gmail.com \
    --cc=lorenzo@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=saeedm@mellanox.com \
    --cc=sameehj@amazon.com \
    --cc=tariqt@mellanox.com \
    --cc=toke@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.