From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Wed, 10 May 2017 18:33:08 +0000 (-0700)
Subject: Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
X-Git-Tag: v4.12-rc1~34
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=c44b59430393c38873fd933333d945f426857a59;p=users%2Fjedix%2Flinux-maple.git

Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost

Pull virtio updates from Michael Tsirkin:
 "Fixes, cleanups, performance

  A bunch of changes to virtio, most affecting virtio net. Also ptr_ring
  batched zeroing - first of batching enhancements that seems ready."

* tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
  s390/virtio: change maintainership
  tools/virtio: fix spelling mistake: "wakeus" -> "wakeups"
  virtio_net: tidy a couple debug statements
  ptr_ring: support testing different batching sizes
  ringtest: support test specific parameters
  ptr_ring: batch ring zeroing
  virtio: virtio_driver doc
  virtio_net: don't reset twice on XDP on/off
  virtio_net: fix support for small rings
  virtio_net: reduce alignment for buffers
  virtio_net: rework mergeable buffer handling
  virtio_net: allow specifying context for rx
  virtio: allow extra context per descriptor
  tools/virtio: fix build breakage
  virtio: add context flag to find vqs
  virtio: wrap find_vqs
  ringtest: fix an assert statement
---

c44b59430393c38873fd933333d945f426857a59
diff --cc drivers/net/virtio_net.c
index 1c6d3923c224,87b5c2046341..9320d96a1632
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@@ -270,31 -239,10 +263,13 @@@ static void skb_xmit_done(struct virtqu
  	/* Suppress further interrupts. */
  	virtqueue_disable_cb(vq);
  
 -	/* We were probably waiting for more output buffers. */
 -	netif_wake_subqueue(vi->dev, vq2txq(vq));
 +	if (napi->weight)
 +		virtqueue_napi_schedule(napi, vq);
 +	else
 +		/* We were probably waiting for more output buffers. */
 +		netif_wake_subqueue(vi->dev, vq2txq(vq));
  }
  
- static unsigned int mergeable_ctx_to_buf_truesize(unsigned long mrg_ctx)
- {
- 	unsigned int truesize = mrg_ctx & (MERGEABLE_BUFFER_ALIGN - 1);
- 	return (truesize + 1) * MERGEABLE_BUFFER_ALIGN;
- }
- 
- static void *mergeable_ctx_to_buf_address(unsigned long mrg_ctx)
- {
- 	return (void *)(mrg_ctx & -MERGEABLE_BUFFER_ALIGN);
- 
- }
- 
- static unsigned long mergeable_buf_to_ctx(void *buf, unsigned int truesize)
- {
- 	unsigned int size = truesize / MERGEABLE_BUFFER_ALIGN;
- 	return (unsigned long)buf | (size - 1);
- }
- 
  /* Called from bottom half context */
  static struct sk_buff *page_to_skb(struct virtnet_info *vi,
  				   struct receive_queue *rq,