All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next v4 00/15] virtio-net: support AF_XDP zero copy
@ 2024-06-11 11:41 Xuan Zhuo
  2024-06-11 11:41 ` [PATCH net-next v4 01/15] virtio_ring: introduce dma map api for page Xuan Zhuo
                   ` (14 more replies)
  0 siblings, 15 replies; 28+ messages in thread
From: Xuan Zhuo @ 2024-06-11 11:41 UTC (permalink / raw)
  To: netdev
  Cc: Michael S. Tsirkin, Jason Wang, Xuan Zhuo, Eugenio Pérez,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Alexei Starovoitov, Daniel Borkmann, Jesper Dangaard Brouer,
	John Fastabend, virtualization, bpf

v4:
    1. remove the commits that introduce the independent directory
    2. remove the supporting for the rx merge mode (for limit 15
       commits of net-next). Let's start with the small mode.
    3. merge some commits and remove some not important commits

## AF_XDP

XDP socket(AF_XDP) is an excellent bypass kernel network framework. The zero
copy feature of xsk (XDP socket) needs to be supported by the driver. The
performance of zero copy is very good. mlx5 and intel ixgbe already support
this feature, This patch set allows virtio-net to support xsk's zerocopy xmit
feature.

At present, we have completed some preparation:

1. vq-reset (virtio spec and kernel code)
2. virtio-core premapped dma
3. virtio-net xdp refactor

So it is time for Virtio-Net to complete the support for the XDP Socket
Zerocopy.

Virtio-net can not increase the queue num at will, so xsk shares the queue with
kernel.

On the other hand, Virtio-Net does not support generate interrupt from driver
manually, so when we wakeup tx xmit, we used some tips. If the CPU run by TX
NAPI last time is other CPUs, use IPI to wake up NAPI on the remote CPU. If it
is also the local CPU, then we wake up napi directly.

This patch set includes some refactor to the virtio-net to let that to support
AF_XDP.

## performance

ENV: Qemu with vhost-user(polling mode).
Host CPU: Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz

### virtio PMD in guest with testpmd

testpmd> show port stats all

 ######################## NIC statistics for port 0 ########################
 RX-packets: 19531092064 RX-missed: 0     RX-bytes: 1093741155584
 RX-errors: 0
 RX-nombuf: 0
 TX-packets: 5959955552 TX-errors: 0     TX-bytes: 371030645664


 Throughput (since last show)
 Rx-pps:   8861574     Rx-bps:  3969985208
 Tx-pps:   8861493     Tx-bps:  3969962736
 ############################################################################

### AF_XDP PMD in guest with testpmd

testpmd> show port stats all

  ######################## NIC statistics for port 0  ########################
  RX-packets: 68152727   RX-missed: 0          RX-bytes:  3816552712
  RX-errors: 0
  RX-nombuf:  0
  TX-packets: 68114967   TX-errors: 33216      TX-bytes:  3814438152

  Throughput (since last show)
  Rx-pps:      6333196          Rx-bps:   2837272088
  Tx-pps:      6333227          Tx-bps:   2837285936
  ############################################################################

But AF_XDP consumes more CPU for tx and rx napi(100% and 86%).

## maintain

I am currently a reviewer for virtio-net. I commit to maintain AF_XDP support in
virtio-net.

Please review.

Thanks.

v3
    1. virtio introduces helpers for virtio-net sq using premapped dma
    2. xsk has more complete support for merge mode
    3. fix some problems

v2
    1. wakeup uses the way of GVE. No send ipi to wakeup napi on remote cpu.
    2. remove rcu. Because we synchronize all operat, so the rcu is not needed.
    3. split the commit "move to virtio_net.h" in last patch set. Just move the
       struct/api to header when we use them.
    4. add comments for some code

v1:
    1. remove two virtio commits. Push this patchset to net-next
    2. squash "virtio_net: virtnet_poll_tx support rescheduled" to xsk: support tx
    3. fix some warnings




Xuan Zhuo (15):
  virtio_ring: introduce dma map api for page
  virtio_ring: introduce vring_need_unmap_buffer
  virtio_ring: virtqueue_set_dma_premapped() support to disable
  virtio_net: separate virtnet_rx_resize()
  virtio_net: separate virtnet_tx_resize()
  virtio_net: separate receive_buf
  virtio_net: refactor the xmit type
  virtio_net: sq support premapped mode
  virtio_net: xsk: bind/unbind xsk
  virtio_net: xsk: prevent disable tx napi
  virtio_net: xsk: tx: support xmit xsk buffer
  virtio_net: xsk: tx: support wakeup
  virtio_net: xsk: tx: handle the transmitted xsk buffer
  virtio_net: xsk: rx: support fill with xsk buffer
  virtio_net: xsk: rx: support recv small mode

 drivers/net/virtio_net.c     | 983 ++++++++++++++++++++++++++++++++---
 drivers/virtio/virtio_ring.c |  88 +++-
 include/linux/virtio.h       |   9 +-
 3 files changed, 997 insertions(+), 83 deletions(-)

--
2.32.0.3.g01195cf9f


^ permalink raw reply	[flat|nested] 28+ messages in thread
* Re: [PATCH net-next v4 08/15] virtio_net: sq support premapped mode
@ 2024-06-12  6:44 kernel test robot
  0 siblings, 0 replies; 28+ messages in thread
From: kernel test robot @ 2024-06-12  6:44 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20240611114147.31320-9-xuanzhuo@linux.alibaba.com>
References: <20240611114147.31320-9-xuanzhuo@linux.alibaba.com>
TO: Xuan Zhuo <xuanzhuo@linux.alibaba.com>

Hi Xuan,

kernel test robot noticed the following build warnings:

[auto build test WARNING on net-next/main]

url:    https://github.com/intel-lab-lkp/linux/commits/Xuan-Zhuo/virtio_ring-introduce-dma-map-api-for-page/20240611-194942
base:   net-next/main
patch link:    https://lore.kernel.org/r/20240611114147.31320-9-xuanzhuo%40linux.alibaba.com
patch subject: [PATCH net-next v4 08/15] virtio_net: sq support premapped mode
:::::: branch date: 19 hours ago
:::::: commit date: 19 hours ago
config: i386-randconfig-141-20240612 (https://download.01.org/0day-ci/archive/20240612/202406121447.HULbTIme-lkp@intel.com/config)
compiler: gcc-12 (Ubuntu 12.3.0-9ubuntu2) 12.3.0

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202406121447.HULbTIme-lkp@intel.com/

New smatch warnings:
drivers/net/virtio_net.c:556 virtnet_sq_unmap() error: uninitialized symbol 'tail'.
drivers/net/virtio_net.c:682 virtnet_sq_alloc_dma_meta() error: uninitialized symbol 'd'.

Old smatch warnings:
drivers/net/virtio_net.c:1774 build_skb_from_xdp_buff() error: uninitialized symbol 'nr_frags'.
drivers/net/virtio_net.c:1856 virtnet_build_xdp_buff_mrg() error: uninitialized symbol 'shinfo'.
drivers/net/virtio_net.c:4851 virtnet_update_settings() error: uninitialized symbol 'virtio_cread_v'.
drivers/net/virtio_net.c:5392 virtnet_config_changed_work() error: uninitialized symbol 'virtio_cread_v'.
drivers/net/virtio_net.c:5396 virtnet_config_changed_work() error: uninitialized symbol 'v'.

vim +/tail +556 drivers/net/virtio_net.c

5050471d35d131 Toshiaki Makita 2019-01-29  539  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  540  static void virtnet_sq_unmap(struct send_queue *sq, void **data)
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  541  {
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  542  	struct virtnet_sq_dma *head, *tail, *p;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  543  	int i;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  544  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  545  	head = *data;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  546  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  547  	p = head;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  548  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  549  	for (i = 0; i < head->num; ++i) {
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  550  		virtqueue_dma_unmap_page_attrs(sq->vq, p->addr, p->len,
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  551  					       DMA_TO_DEVICE, 0);
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  552  		tail = p;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  553  		p = p->next;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  554  	}
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  555  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11 @556  	*data = tail->data;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  557  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  558  	tail->next = sq->dmainfo.free;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  559  	sq->dmainfo.free = head;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  560  	sq->dmainfo.free_num += head->num;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  561  }
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  562  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  563  static void *virtnet_dma_chain_update(struct send_queue *sq,
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  564  				      struct virtnet_sq_dma *head,
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  565  				      struct virtnet_sq_dma *tail,
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  566  				      u8 num, void *data)
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  567  {
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  568  	sq->dmainfo.free = tail->next;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  569  	sq->dmainfo.free_num -= num;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  570  	head->num = num;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  571  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  572  	tail->data = data;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  573  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  574  	return virtnet_xmit_ptr_mix(head, VIRTNET_XMIT_TYPE_DMA);
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  575  }
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  576  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  577  static struct virtnet_sq_dma *virtnet_sq_map_sg(struct send_queue *sq, int num, void *data)
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  578  {
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  579  	struct virtnet_sq_dma *head, *tail, *p;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  580  	struct scatterlist *sg;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  581  	dma_addr_t addr;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  582  	int i, err;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  583  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  584  	if (num > sq->dmainfo.free_num)
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  585  		return NULL;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  586  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  587  	head = sq->dmainfo.free;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  588  	p = head;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  589  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  590  	tail = NULL;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  591  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  592  	for (i = 0; i < num; ++i) {
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  593  		sg = &sq->sg[i];
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  594  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  595  		addr = virtqueue_dma_map_page_attrs(sq->vq, sg_page(sg),
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  596  						    sg->offset,
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  597  						    sg->length, DMA_TO_DEVICE,
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  598  						    0);
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  599  		err = virtqueue_dma_mapping_error(sq->vq, addr);
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  600  		if (err)
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  601  			goto err;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  602  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  603  		sg->dma_address = addr;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  604  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  605  		tail = p;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  606  		tail->addr = sg->dma_address;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  607  		tail->len = sg->length;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  608  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  609  		p = p->next;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  610  	}
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  611  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  612  	return virtnet_dma_chain_update(sq, head, tail, num, data);
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  613  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  614  err:
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  615  	if (tail) {
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  616  		virtnet_dma_chain_update(sq, head, tail, i, data);
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  617  		virtnet_sq_unmap(sq, (void **)&head);
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  618  	}
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  619  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  620  	return NULL;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  621  }
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  622  
113da0fa1b0068 Xuan Zhuo       2024-06-11  623  static int virtnet_add_outbuf(struct send_queue *sq, int num, void *data,
113da0fa1b0068 Xuan Zhuo       2024-06-11  624  			      enum virtnet_xmit_type type)
5050471d35d131 Toshiaki Makita 2019-01-29  625  {
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  626  	int ret;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  627  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  628  	data = virtnet_xmit_ptr_mix(data, type);
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  629  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  630  	if (sq->premapped) {
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  631  		data = virtnet_sq_map_sg(sq, num, data);
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  632  		if (!data)
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  633  			return -ENOMEM;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  634  	}
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  635  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  636  	ret = virtqueue_add_outbuf(sq->vq, sq->sg, num, data, GFP_ATOMIC);
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  637  	if (ret && sq->premapped) {
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  638  		virtnet_xmit_ptr_strip(&data);
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  639  		virtnet_sq_unmap(sq, &data);
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  640  	}
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  641  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  642  	return ret;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  643  }
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  644  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  645  static int virtnet_sq_alloc_dma_meta(struct send_queue *sq)
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  646  {
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  647  	struct virtnet_sq_dma *d;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  648  	int num, i;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  649  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  650  	num = virtqueue_get_vring_size(sq->vq);
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  651  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  652  	/* Currently, the SQ premapped mode is operational only with af-xdp. In
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  653  	 * this mode, af-xdp, the kernel stack, and xdp tx/redirect will share
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  654  	 * the same SQ. Af-xdp independently manages its DMA. The kernel stack
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  655  	 * and xdp tx/redirect utilize this DMA metadata to manage the DMA info.
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  656  	 *
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  657  	 * If the indirect descriptor feature be supported, the volume of DMA
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  658  	 * details we need to maintain becomes quite substantial. Here, we have
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  659  	 * a cap on the amount of DMA info we manage, effectively limiting it to
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  660  	 * twice the size of the ring buffer.
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  661  	 *
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  662  	 * If the kernel stack and xdp tx/redirect attempt to use more
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  663  	 * descriptors than allowed by this double ring buffer size,
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  664  	 * virtnet_add_outbuf() will return an -ENOMEM error. But the af-xdp can
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  665  	 * work continually.
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  666  	 */
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  667  	if (virtio_has_feature(sq->vq->vdev, VIRTIO_RING_F_INDIRECT_DESC))
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  668  		num = num * 2;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  669  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  670  	sq->dmainfo.free = kcalloc(num, sizeof(*sq->dmainfo.free), GFP_KERNEL);
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  671  	if (!sq->dmainfo.free)
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  672  		return -ENOMEM;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  673  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  674  	sq->dmainfo.p = sq->dmainfo.free;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  675  	sq->dmainfo.free_num = num;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  676  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  677  	for (i = 0; i < num; ++i) {
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  678  		d = &sq->dmainfo.free[i];
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  679  		d->next = d + 1;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  680  	}
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  681  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11 @682  	d->next = NULL;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  683  
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  684  	return 0;
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  685  }
5b7e6920fb3a08 Xuan Zhuo       2024-06-11  686  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

end of thread, other threads:[~2024-06-13  2:47 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-11 11:41 [PATCH net-next v4 00/15] virtio-net: support AF_XDP zero copy Xuan Zhuo
2024-06-11 11:41 ` [PATCH net-next v4 01/15] virtio_ring: introduce dma map api for page Xuan Zhuo
2024-06-12 23:20   ` Jakub Kicinski
2024-06-13  2:38     ` Xuan Zhuo
2024-06-11 11:41 ` [PATCH net-next v4 02/15] virtio_ring: introduce vring_need_unmap_buffer Xuan Zhuo
2024-06-11 11:41 ` [PATCH net-next v4 03/15] virtio_ring: virtqueue_set_dma_premapped() support to disable Xuan Zhuo
2024-06-11 11:41 ` [PATCH net-next v4 04/15] virtio_net: separate virtnet_rx_resize() Xuan Zhuo
2024-06-11 11:41 ` [PATCH net-next v4 05/15] virtio_net: separate virtnet_tx_resize() Xuan Zhuo
2024-06-11 11:41 ` [PATCH net-next v4 06/15] virtio_net: separate receive_buf Xuan Zhuo
2024-06-11 11:41 ` [PATCH net-next v4 07/15] virtio_net: refactor the xmit type Xuan Zhuo
2024-06-11 11:41 ` [PATCH net-next v4 08/15] virtio_net: sq support premapped mode Xuan Zhuo
2024-06-12 23:23   ` Jakub Kicinski
2024-06-13  2:39     ` Xuan Zhuo
2024-06-12 23:41   ` Michael S. Tsirkin
2024-06-13  2:47     ` Xuan Zhuo
2024-06-11 11:41 ` [PATCH net-next v4 09/15] virtio_net: xsk: bind/unbind xsk Xuan Zhuo
2024-06-12 23:43   ` Michael S. Tsirkin
2024-06-13  2:43     ` Xuan Zhuo
2024-06-11 11:41 ` [PATCH net-next v4 10/15] virtio_net: xsk: prevent disable tx napi Xuan Zhuo
2024-06-11 11:41 ` [PATCH net-next v4 11/15] virtio_net: xsk: tx: support xmit xsk buffer Xuan Zhuo
2024-06-12 23:25   ` Jakub Kicinski
2024-06-12 23:44     ` Michael S. Tsirkin
2024-06-13  2:43     ` Xuan Zhuo
2024-06-11 11:41 ` [PATCH net-next v4 12/15] virtio_net: xsk: tx: support wakeup Xuan Zhuo
2024-06-11 11:41 ` [PATCH net-next v4 13/15] virtio_net: xsk: tx: handle the transmitted xsk buffer Xuan Zhuo
2024-06-11 11:41 ` [PATCH net-next v4 14/15] virtio_net: xsk: rx: support fill with " Xuan Zhuo
2024-06-11 11:41 ` [PATCH net-next v4 15/15] virtio_net: xsk: rx: support recv small mode Xuan Zhuo
  -- strict thread matches above, loose matches on Subject: below --
2024-06-12  6:44 [PATCH net-next v4 08/15] virtio_net: sq support premapped mode kernel test robot

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.