From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933116AbdC2UxS (ORCPT ); Wed, 29 Mar 2017 16:53:18 -0400 Received: from mx1.redhat.com ([209.132.183.28]:9906 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932509AbdC2Usp (ORCPT ); Wed, 29 Mar 2017 16:48:45 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com E2A8764DAD Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=mst@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com E2A8764DAD Date: Wed, 29 Mar 2017 23:48:43 +0300 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: John Fastabend Subject: [PATCH 0/6] virtio: support extra per-buffer context Message-ID: <1490820507-8005-1-git-send-email-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Mutt-Fcc: =sent X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Wed, 29 Mar 2017 20:48:44 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org virtio net is resorting to hacks in order to fit all per-buffer info in a single 64 bit value. But in fact we have some unused memory there - normally used for indirect descriptors - that we can utilize without slowing everyone down. Add APIs to do exactly that, and use them to simplify mergeable buffer handling code. This will also easily enable switching XDP mode on/off without doing device resets (leading to packet drops), and more optimizations. Michael S. Tsirkin (6): virtio: wrap find_vqs virtio: add context flag to find vqs virtio: allow extra context per descriptor virtio_net: allow specifying context for rx virtio_net: rework mergeable buffer handling virtio_net: reduce alignment for buffers drivers/block/virtio_blk.c | 3 +- drivers/char/virtio_console.c | 6 +- drivers/crypto/virtio/virtio_crypto_core.c | 3 +- drivers/gpu/drm/virtio/virtgpu_kms.c | 3 +- drivers/misc/mic/vop/vop_main.c | 9 ++- drivers/net/caif/caif_virtio.c | 3 +- drivers/net/virtio_net.c | 116 ++++++++++++++--------------- drivers/rpmsg/virtio_rpmsg_bus.c | 2 +- drivers/s390/virtio/kvm_virtio.c | 6 +- drivers/s390/virtio/virtio_ccw.c | 7 +- drivers/scsi/virtio_scsi.c | 3 +- drivers/virtio/virtio_balloon.c | 3 +- drivers/virtio/virtio_input.c | 3 +- drivers/virtio/virtio_mmio.c | 8 +- drivers/virtio/virtio_pci_common.c | 18 +++-- drivers/virtio/virtio_pci_common.h | 4 +- drivers/virtio/virtio_pci_legacy.c | 4 +- drivers/virtio/virtio_pci_modern.c | 12 ++- drivers/virtio/virtio_ring.c | 77 +++++++++++++++---- include/linux/virtio.h | 9 +++ include/linux/virtio_config.h | 25 ++++++- include/linux/virtio_ring.h | 3 + net/vmw_vsock/virtio_transport.c | 6 +- 23 files changed, 212 insertions(+), 121 deletions(-) -- MST