All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/9] virtio-net: support multi buffer xdp
@ 2023-01-03  6:40 Heng Qi
  2023-01-03  6:40 ` [PATCH v3 1/9] virtio-net: disable the hole mechanism for xdp Heng Qi
                   ` (8 more replies)
  0 siblings, 9 replies; 16+ messages in thread
From: Heng Qi @ 2023-01-03  6:40 UTC (permalink / raw)
  To: netdev, bpf
  Cc: Jason Wang, Michael S . Tsirkin, Paolo Abeni, Jakub Kicinski,
	John Fastabend, David S . Miller, Daniel Borkmann,
	Alexei Starovoitov, Eric Dumazet, Xuan Zhuo

Changes since PATCH v2:
- Even if single buffer xdp has a hole mechanism, there will be no
  problem (limiting mtu and turning off GUEST GSO), so there is no
  need to backport "[PATCH 1/9]";
- Modify calculation of MTU for single buffer xdp in virtnet_xdp_set();
- Make truesize in mergeable mode return to literal meaning;
- Add some comments for legibility;

Changes since RFC:
- Using headroom instead of vi->xdp_enabled to avoid re-reading
  in add_recvbuf_mergeable();
- Disable GRO_HW and keep linearization for single buffer xdp;
- Renamed to virtnet_build_xdp_buff_mrg();
- pr_debug() to netdev_dbg();
- Adjusted the order of the patch series.

Currently, virtio net only supports xdp for single-buffer packets
or linearized multi-buffer packets. This patchset supports xdp for
multi-buffer packets, then larger MTU can be used if xdp sets the
xdp.frags. This does not affect single buffer handling.

In order to build multi-buffer xdp neatly, we integrated the code
into virtnet_build_xdp_buff_mrg() for xdp. The first buffer is used
for prepared xdp buff, and the rest of the buffers are added to
its skb_shared_info structure. This structure can also be
conveniently converted during XDP_PASS to get the corresponding skb.

Since virtio net uses comp pages, and bpf_xdp_frags_increase_tail()
is based on the assumption of the page pool,
(rxq->frag_size - skb_frag_size(frag) - skb_frag_off(frag))
is negative in most cases. So we didn't set xdp_rxq->frag_size in
virtnet_open() to disable the tail increase.

Heng Qi (9):
  virtio-net: disable the hole mechanism for xdp
  virtio-net: set up xdp for multi buffer packets
  virtio-net: update bytes calculation for xdp_frame
  virtio-net: build xdp_buff with multi buffers
  virtio-net: construct multi-buffer xdp in mergeable
  virtio-net: transmit the multi-buffer xdp
  virtio-net: build skb from multi-buffer xdp
  virtio-net: remove xdp related info from page_to_skb()
  virtio-net: support multi-buffer xdp

 drivers/net/virtio_net.c | 371 ++++++++++++++++++++++++++-------------
 1 file changed, 250 insertions(+), 121 deletions(-)

-- 
2.19.1.6.gb485710b


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

end of thread, other threads:[~2023-01-13  3:02 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-03  6:40 [PATCH v3 0/9] virtio-net: support multi buffer xdp Heng Qi
2023-01-03  6:40 ` [PATCH v3 1/9] virtio-net: disable the hole mechanism for xdp Heng Qi
2023-01-03  6:40 ` [PATCH v3 2/9] virtio-net: set up xdp for multi buffer packets Heng Qi
2023-01-09  2:48   ` Heng Qi
2023-01-09  8:56     ` Jason Wang
2023-01-13  2:49   ` Jason Wang
2023-01-13  2:59     ` Heng Qi
2023-01-03  6:40 ` [PATCH v3 3/9] virtio-net: update bytes calculation for xdp_frame Heng Qi
2023-01-03  6:40 ` [PATCH v3 4/9] virtio-net: build xdp_buff with multi buffers Heng Qi
2023-01-13  2:58   ` Jason Wang
2023-01-03  6:40 ` [PATCH v3 5/9] virtio-net: construct multi-buffer xdp in mergeable Heng Qi
2023-01-13  3:01   ` Jason Wang
2023-01-03  6:40 ` [PATCH v3 6/9] virtio-net: transmit the multi-buffer xdp Heng Qi
2023-01-03  6:40 ` [PATCH v3 7/9] virtio-net: build skb from " Heng Qi
2023-01-03  6:40 ` [PATCH v3 8/9] virtio-net: remove xdp related info from page_to_skb() Heng Qi
2023-01-03  6:40 ` [PATCH v3 9/9] virtio-net: support multi-buffer xdp Heng Qi

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.