Thread (18 messages) flat view 18 messages, 3 authors, 2021-04-14

Re: [PATCH RFC v2 2/4] virtio_net: disable cb aggressively

From: "Michael S. Tsirkin" <mst@redhat.com>
Date: 2021-04-13 14:34:30
Also in: lkml, virtualization

On Tue, Apr 13, 2021 at 04:53:32PM +0800, Jason Wang wrote:
在 2021/4/13 下午1:47, Michael S. Tsirkin 写道:
quoted
There are currently two cases where we poll TX vq not in response to a
callback: start xmit and rx napi.  We currently do this with callbacks
enabled which can cause extra interrupts from the card.  Used not to be
a big issue as we run with interrupts disabled but that is no longer the
case, and in some cases the rate of spurious interrupts is so high
linux detects this and actually kills the interrupt.

Fix up by disabling the callbacks before polling the tx vq.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
  drivers/net/virtio_net.c | 2 ++
  1 file changed, 2 insertions(+)
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 82e520d2cb12..16d5abed582c 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -1429,6 +1429,7 @@ static void virtnet_poll_cleantx(struct receive_queue *rq)
  		return;
  	if (__netif_tx_trylock(txq)) {
+		virtqueue_disable_cb(sq->vq);
  		free_old_xmit_skbs(sq, true);
  		__netif_tx_unlock(txq);

Any reason that we don't need to enable the cb here?
Good point ... probably only if the vq isn't empty ...
And as we discussed in the past, it's probably the time to have a single
NAPI for both tx and rx?

Thanks

Donnu. I'd like to get a minimal bugfix in, refactoring on top ...
quoted
  	}
@@ -1582,6 +1583,7 @@ static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev)
  	bool use_napi = sq->napi.weight;
  	/* Free up any pending old buffers before queueing new ones. */
+	virtqueue_disable_cb(sq->vq);
  	free_old_xmit_skbs(sq, false);
  	if (use_napi && kick)
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help