public inbox for bpf@vger.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH 0/9] virtio_net: support multi buffer xdp
@ 2022-11-22  7:43 Heng Qi
  2022-11-22  7:43 ` [RFC PATCH 1/9] virtio_net: disable the hole mechanism for xdp Heng Qi
                   ` (9 more replies)
  0 siblings, 10 replies; 30+ messages in thread
From: Heng Qi @ 2022-11-22  7:43 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

Currently, virtio net only supports xdp for single-buffer packets
or linearized multi-buffer packets. This patchset supports xdp for
multi-buffer packets, then GRO_HW related features can be
negotiated, and do not affect the processing of single-buffer xdp.

In order to build multi-buffer xdp neatly, we integrated the code
into virtnet_build_xdp_buff() 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: remove xdp related info from page_to_skb()
  virtio_net: build xdp_buff with multi buffers
  virtio_net: construct multi-buffer xdp in mergeable
  virtio_net: build skb from multi-buffer xdp
  virtio_net: transmit the multi-buffer xdp
  virtio_net: support multi-buffer xdp

 drivers/net/virtio_net.c | 356 ++++++++++++++++++++++++---------------
 1 file changed, 219 insertions(+), 137 deletions(-)

-- 
2.19.1.6.gb485710b


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

end of thread, other threads:[~2022-12-16  9:42 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-22  7:43 [RFC PATCH 0/9] virtio_net: support multi buffer xdp Heng Qi
2022-11-22  7:43 ` [RFC PATCH 1/9] virtio_net: disable the hole mechanism for xdp Heng Qi
2022-12-06  5:20   ` Jason Wang
2022-12-08  8:20     ` Heng Qi
2022-11-22  7:43 ` [RFC PATCH 2/9] virtio_net: set up xdp for multi buffer packets Heng Qi
2022-12-06  5:29   ` Jason Wang
2022-12-08  8:21     ` Heng Qi
2022-11-22  7:43 ` [RFC PATCH 3/9] virtio_net: update bytes calculation for xdp_frame Heng Qi
2022-12-06  5:31   ` Jason Wang
2022-12-08  8:35     ` Heng Qi
2022-11-22  7:43 ` [RFC PATCH 4/9] virtio_net: remove xdp related info from page_to_skb() Heng Qi
2022-12-06  5:36   ` Jason Wang
2022-12-08  8:23     ` Heng Qi
2022-11-22  7:43 ` [RFC PATCH 5/9] virtio_net: build xdp_buff with multi buffers Heng Qi
2022-12-06  6:14   ` Jason Wang
2022-12-08  8:25     ` Heng Qi
2022-11-22  7:43 ` [RFC PATCH 6/9] virtio_net: construct multi-buffer xdp in mergeable Heng Qi
2022-12-06  6:33   ` Jason Wang
2022-12-08  8:30     ` Heng Qi
2022-12-13  7:08       ` Jason Wang
2022-12-14  8:37         ` Heng Qi
2022-12-16  3:46           ` Jason Wang
2022-12-16  9:42             ` Heng Qi
2022-11-22  7:43 ` [RFC PATCH 7/9] virtio_net: build skb from multi-buffer xdp Heng Qi
2022-11-22  7:43 ` [RFC PATCH 8/9] virtio_net: transmit the " Heng Qi
2022-11-22  7:43 ` [RFC PATCH 9/9] virtio_net: support " Heng Qi
2022-12-06  6:42   ` Jason Wang
2022-12-08  8:31     ` Heng Qi
2022-12-02  4:50 ` [RFC PATCH 0/9] virtio_net: support multi buffer xdp Heng Qi
2022-12-02  5:41   ` Jason Wang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox