From: Jesper Dangaard Brouer <brouer@redhat.com> To: sameehj@amazon.com Cc: intel-wired-lan@lists.osuosl.org, "Jeff Kirsher" <jeffrey.t.kirsher@intel.com>, "Alexander Duyck" <alexander.duyck@gmail.com>, "Jesper Dangaard Brouer" <brouer@redhat.com>, netdev@vger.kernel.org, bpf@vger.kernel.org, zorik@amazon.com, akiyano@amazon.com, gtzalik@amazon.com, "Toke Høiland-Jørgensen" <toke@redhat.com>, "Daniel Borkmann" <borkmann@iogearbox.net>, "Alexei Starovoitov" <alexei.starovoitov@gmail.com>, "John Fastabend" <john.fastabend@gmail.com>, "Alexander Duyck" <alexander.duyck@gmail.com>, "Jeff Kirsher" <jeffrey.t.kirsher@intel.com>, "David Ahern" <dsahern@gmail.com>, "Willem de Bruijn" <willemdebruijn.kernel@gmail.com>, "Ilias Apalodimas" <ilias.apalodimas@linaro.org>, "Lorenzo Bianconi" <lorenzo@kernel.org>, "Saeed Mahameed" <saeedm@mellanox.com>, steffen.klassert@secunet.com Subject: [PATCH net-next 24/33] ixgbevf: add XDP frame size to VF driver Date: Wed, 22 Apr 2020 18:09:23 +0200 [thread overview] Message-ID: <158757176299.1370371.1994831134457116714.stgit@firesoul> (raw) In-Reply-To: <158757160439.1370371.13213378122947426220.stgit@firesoul> This patch mirrors the changes to ixgbe in previous patch. This VF driver doesn't support XDP_REDIRECT, but correct tailroom is still necessary for BPF-helper xdp_adjust_tail. In legacy-mode + larger PAGE_SIZE, due to lacking tailroom, we accept that xdp_adjust_tail shrink doesn't work. Cc: intel-wired-lan@lists.osuosl.org Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Cc: Alexander Duyck <alexander.duyck@gmail.com> Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> --- drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 34 +++++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c index 4622c4ea2e46..62bc3e3b5b9c 100644 --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c @@ -1095,19 +1095,31 @@ static struct sk_buff *ixgbevf_run_xdp(struct ixgbevf_adapter *adapter, return ERR_PTR(-result); } +static unsigned int ixgbevf_rx_frame_truesize(struct ixgbevf_ring *rx_ring, + unsigned int size) +{ + unsigned int truesize; + +#if (PAGE_SIZE < 8192) + truesize = ixgbevf_rx_pg_size(rx_ring) / 2; /* Must be power-of-2 */ +#else + truesize = ring_uses_build_skb(rx_ring) ? + SKB_DATA_ALIGN(IXGBEVF_SKB_PAD + size) + + SKB_DATA_ALIGN(sizeof(struct skb_shared_info)) : + SKB_DATA_ALIGN(size); +#endif + return truesize; +} + static void ixgbevf_rx_buffer_flip(struct ixgbevf_ring *rx_ring, struct ixgbevf_rx_buffer *rx_buffer, unsigned int size) { -#if (PAGE_SIZE < 8192) - unsigned int truesize = ixgbevf_rx_pg_size(rx_ring) / 2; + unsigned int truesize = ixgbevf_rx_frame_truesize(rx_ring, size); +#if (PAGE_SIZE < 8192) rx_buffer->page_offset ^= truesize; #else - unsigned int truesize = ring_uses_build_skb(rx_ring) ? - SKB_DATA_ALIGN(IXGBEVF_SKB_PAD + size) : - SKB_DATA_ALIGN(size); - rx_buffer->page_offset += truesize; #endif } @@ -1125,6 +1137,11 @@ static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector, xdp.rxq = &rx_ring->xdp_rxq; + /* Frame size depend on rx_ring setup when PAGE_SIZE=4K */ +#if (PAGE_SIZE < 8192) + xdp.frame_sz = ixgbevf_rx_frame_truesize(rx_ring, 0); +#endif + while (likely(total_rx_packets < budget)) { struct ixgbevf_rx_buffer *rx_buffer; union ixgbe_adv_rx_desc *rx_desc; @@ -1157,7 +1174,10 @@ static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector, xdp.data_hard_start = xdp.data - ixgbevf_rx_offset(rx_ring); xdp.data_end = xdp.data + size; - +#if (PAGE_SIZE > 4096) + /* At larger PAGE_SIZE, frame_sz depend on len size */ + xdp.frame_sz = ixgbevf_rx_frame_truesize(rx_ring, size); +#endif skb = ixgbevf_run_xdp(adapter, rx_ring, &xdp); }
WARNING: multiple messages have this Message-ID (diff)
From: Jesper Dangaard Brouer <brouer@redhat.com> To: intel-wired-lan@osuosl.org Subject: [Intel-wired-lan] [PATCH net-next 24/33] ixgbevf: add XDP frame size to VF driver Date: Wed, 22 Apr 2020 18:09:23 +0200 [thread overview] Message-ID: <158757176299.1370371.1994831134457116714.stgit@firesoul> (raw) In-Reply-To: <158757160439.1370371.13213378122947426220.stgit@firesoul> This patch mirrors the changes to ixgbe in previous patch. This VF driver doesn't support XDP_REDIRECT, but correct tailroom is still necessary for BPF-helper xdp_adjust_tail. In legacy-mode + larger PAGE_SIZE, due to lacking tailroom, we accept that xdp_adjust_tail shrink doesn't work. Cc: intel-wired-lan at lists.osuosl.org Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Cc: Alexander Duyck <alexander.duyck@gmail.com> Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> --- drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 34 +++++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c index 4622c4ea2e46..62bc3e3b5b9c 100644 --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c @@ -1095,19 +1095,31 @@ static struct sk_buff *ixgbevf_run_xdp(struct ixgbevf_adapter *adapter, return ERR_PTR(-result); } +static unsigned int ixgbevf_rx_frame_truesize(struct ixgbevf_ring *rx_ring, + unsigned int size) +{ + unsigned int truesize; + +#if (PAGE_SIZE < 8192) + truesize = ixgbevf_rx_pg_size(rx_ring) / 2; /* Must be power-of-2 */ +#else + truesize = ring_uses_build_skb(rx_ring) ? + SKB_DATA_ALIGN(IXGBEVF_SKB_PAD + size) + + SKB_DATA_ALIGN(sizeof(struct skb_shared_info)) : + SKB_DATA_ALIGN(size); +#endif + return truesize; +} + static void ixgbevf_rx_buffer_flip(struct ixgbevf_ring *rx_ring, struct ixgbevf_rx_buffer *rx_buffer, unsigned int size) { -#if (PAGE_SIZE < 8192) - unsigned int truesize = ixgbevf_rx_pg_size(rx_ring) / 2; + unsigned int truesize = ixgbevf_rx_frame_truesize(rx_ring, size); +#if (PAGE_SIZE < 8192) rx_buffer->page_offset ^= truesize; #else - unsigned int truesize = ring_uses_build_skb(rx_ring) ? - SKB_DATA_ALIGN(IXGBEVF_SKB_PAD + size) : - SKB_DATA_ALIGN(size); - rx_buffer->page_offset += truesize; #endif } @@ -1125,6 +1137,11 @@ static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector, xdp.rxq = &rx_ring->xdp_rxq; + /* Frame size depend on rx_ring setup when PAGE_SIZE=4K */ +#if (PAGE_SIZE < 8192) + xdp.frame_sz = ixgbevf_rx_frame_truesize(rx_ring, 0); +#endif + while (likely(total_rx_packets < budget)) { struct ixgbevf_rx_buffer *rx_buffer; union ixgbe_adv_rx_desc *rx_desc; @@ -1157,7 +1174,10 @@ static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector, xdp.data_hard_start = xdp.data - ixgbevf_rx_offset(rx_ring); xdp.data_end = xdp.data + size; - +#if (PAGE_SIZE > 4096) + /* At larger PAGE_SIZE, frame_sz depend on len size */ + xdp.frame_sz = ixgbevf_rx_frame_truesize(rx_ring, size); +#endif skb = ixgbevf_run_xdp(adapter, rx_ring, &xdp); }
next prev parent reply other threads:[~2020-04-22 16:09 UTC|newest] Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-04-22 16:07 [Intel-wired-lan] [PATCH net-next 00/33] XDP extend with knowledge of frame size Jesper Dangaard Brouer 2020-04-22 16:07 ` [PATCH net-next 01/33] xdp: add frame size to xdp_buff Jesper Dangaard Brouer 2020-04-24 14:00 ` Toke Høiland-Jørgensen 2020-04-28 16:06 ` Jesper Dangaard Brouer 2020-04-22 16:07 ` [PATCH net-next 02/33] bnxt: add XDP frame size to driver Jesper Dangaard Brouer 2020-04-22 16:07 ` [PATCH net-next 03/33] sfc: add XDP frame size Jesper Dangaard Brouer 2020-04-22 16:07 ` [PATCH net-next 04/33] mvneta: add XDP frame size to driver Jesper Dangaard Brouer 2020-04-22 16:07 ` [PATCH net-next 05/33] net: netsec: Add support for XDP frame size Jesper Dangaard Brouer 2020-04-22 16:07 ` [PATCH net-next 06/33] net: XDP-generic determining " Jesper Dangaard Brouer 2020-04-24 14:03 ` Toke Høiland-Jørgensen 2020-04-22 16:07 ` [PATCH net-next 07/33] xdp: xdp_frame add member frame_sz and handle in convert_to_xdp_frame Jesper Dangaard Brouer 2020-04-24 14:04 ` Toke Høiland-Jørgensen 2020-04-25 3:24 ` Toshiaki Makita 2020-04-27 15:20 ` Jesper Dangaard Brouer 2020-04-22 16:08 ` [PATCH net-next 08/33] xdp: cpumap redirect use frame_sz and increase skb_tailroom Jesper Dangaard Brouer 2020-04-24 14:04 ` Toke Høiland-Jørgensen 2020-04-22 16:08 ` [PATCH net-next 09/33] veth: adjust hard_start offset on redirect XDP frames Jesper Dangaard Brouer 2020-04-24 14:05 ` Toke Høiland-Jørgensen 2020-04-22 16:08 ` [PATCH net-next 10/33] veth: xdp using frame_sz in veth driver Jesper Dangaard Brouer 2020-04-24 14:07 ` Toke Høiland-Jørgensen 2020-04-25 3:10 ` Toshiaki Makita 2020-04-22 16:08 ` [PATCH net-next 11/33] dpaa2-eth: add XDP frame size Jesper Dangaard Brouer 2020-04-22 16:08 ` [PATCH net-next 12/33] hv_netvsc: add XDP frame size to driver Jesper Dangaard Brouer 2020-04-22 16:57 ` Haiyang Zhang 2020-04-22 16:08 ` [PATCH net-next 13/33] qlogic/qede: " Jesper Dangaard Brouer 2020-04-22 16:08 ` [PATCH net-next 14/33] net: ethernet: ti: add XDP frame size to driver cpsw Jesper Dangaard Brouer 2020-04-22 20:28 ` Grygorii Strashko 2020-04-22 16:08 ` [PATCH net-next 15/33] ena: add XDP frame size to amazon NIC driver Jesper Dangaard Brouer 2020-04-22 16:08 ` [PATCH net-next 16/33] mlx4: add XDP frame size and adjust max XDP MTU Jesper Dangaard Brouer 2020-04-22 16:08 ` [PATCH net-next 17/33] net: thunderx: add XDP frame size Jesper Dangaard Brouer 2020-04-22 16:08 ` [PATCH net-next 18/33] nfp: add XDP frame size to netronome driver Jesper Dangaard Brouer 2020-04-23 2:43 ` Jakub Kicinski 2020-04-22 16:08 ` [PATCH net-next 19/33] tun: add XDP frame size Jesper Dangaard Brouer 2020-04-27 5:51 ` Jason Wang 2020-05-06 20:30 ` Michael S. Tsirkin 2020-04-22 16:09 ` [PATCH net-next 20/33] vhost_net: also populate " Jesper Dangaard Brouer 2020-04-27 5:50 ` Jason Wang 2020-04-30 9:54 ` Jesper Dangaard Brouer 2020-05-06 6:43 ` Jason Wang 2020-04-22 16:09 ` [PATCH net-next 21/33] virtio_net: add XDP frame size in two code paths Jesper Dangaard Brouer 2020-04-27 7:21 ` Jason Wang 2020-04-27 14:32 ` Jesper Dangaard Brouer 2020-04-28 9:50 ` Jason Wang 2020-04-30 10:14 ` Jesper Dangaard Brouer 2020-05-06 6:38 ` Jason Wang 2020-04-22 16:09 ` [PATCH net-next 22/33] ixgbe: fix XDP redirect on archs with PAGE_SIZE above 4K Jesper Dangaard Brouer 2020-04-22 16:09 ` [PATCH net-next 23/33] ixgbe: add XDP frame size to driver Jesper Dangaard Brouer 2020-04-22 16:09 ` [Intel-wired-lan] " Jesper Dangaard Brouer 2020-04-27 19:51 ` Daniel Borkmann 2020-04-27 19:51 ` [Intel-wired-lan] " Daniel Borkmann 2020-04-22 16:09 ` Jesper Dangaard Brouer [this message] 2020-04-22 16:09 ` [Intel-wired-lan] [PATCH net-next 24/33] ixgbevf: add XDP frame size to VF driver Jesper Dangaard Brouer 2020-04-22 16:09 ` [PATCH net-next 25/33] i40e: add XDP frame size to driver Jesper Dangaard Brouer 2020-04-22 16:09 ` [Intel-wired-lan] " Jesper Dangaard Brouer 2020-04-22 16:09 ` [PATCH net-next 26/33] ice: " Jesper Dangaard Brouer 2020-04-22 16:09 ` [Intel-wired-lan] " Jesper Dangaard Brouer 2020-04-22 16:09 ` [PATCH net-next 27/33] xdp: for Intel AF_XDP drivers add XDP frame_sz Jesper Dangaard Brouer 2020-04-22 16:09 ` [Intel-wired-lan] " Jesper Dangaard Brouer 2020-04-22 16:09 ` [PATCH net-next 28/33] mlx5: rx queue setup time determine frame_sz for XDP Jesper Dangaard Brouer 2020-04-25 0:58 ` Alexei Starovoitov 2020-04-27 20:22 ` Jesper Dangaard Brouer 2020-04-22 16:09 ` [PATCH net-next 29/33] xdp: allow bpf_xdp_adjust_tail() to grow packet size Jesper Dangaard Brouer 2020-04-24 14:09 ` Toke Høiland-Jørgensen 2020-04-27 19:01 ` Daniel Borkmann 2020-04-28 16:37 ` Jesper Dangaard Brouer 2020-04-28 19:36 ` Daniel Borkmann 2020-04-22 16:09 ` [PATCH net-next 30/33] xdp: clear grow memory in bpf_xdp_adjust_tail() Jesper Dangaard Brouer 2020-04-24 14:09 ` Toke Høiland-Jørgensen 2020-04-27 5:26 ` John Fastabend 2020-04-28 14:50 ` Jesper Dangaard Brouer 2020-04-22 16:09 ` [PATCH net-next 31/33] bpf: add xdp.frame_sz in bpf_prog_test_run_xdp() Jesper Dangaard Brouer 2020-04-22 16:10 ` [PATCH net-next 32/33] selftests/bpf: adjust BPF selftest for xdp_adjust_tail Jesper Dangaard Brouer 2020-04-22 16:10 ` [PATCH net-next 33/33] selftests/bpf: xdp_adjust_tail add grow tail tests Jesper Dangaard Brouer 2020-04-27 5:37 ` [Intel-wired-lan] [PATCH net-next 00/33] XDP extend with knowledge of frame size John Fastabend
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=158757176299.1370371.1994831134457116714.stgit@firesoul \ --to=brouer@redhat.com \ --cc=akiyano@amazon.com \ --cc=alexander.duyck@gmail.com \ --cc=alexei.starovoitov@gmail.com \ --cc=borkmann@iogearbox.net \ --cc=bpf@vger.kernel.org \ --cc=dsahern@gmail.com \ --cc=gtzalik@amazon.com \ --cc=ilias.apalodimas@linaro.org \ --cc=intel-wired-lan@lists.osuosl.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=steffen.klassert@secunet.com \ --cc=toke@redhat.com \ --cc=willemdebruijn.kernel@gmail.com \ --cc=zorik@amazon.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: linkBe 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.