From: Linus Torvalds 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-Url: https://git.stricted.de/?a=commitdiff_plain;h=c44b59430393c38873fd933333d945f426857a59;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git Merge tag 'for_linus' of git://git./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,