From patchwork Tue Jun 12 23:29:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 41014 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E9E4C1EA41; Wed, 13 Jun 2018 01:29:44 +0200 (CEST) Received: from mail-pg0-f66.google.com (mail-pg0-f66.google.com [74.125.83.66]) by dpdk.org (Postfix) with ESMTP id 595DF1E99E for ; Wed, 13 Jun 2018 01:29:43 +0200 (CEST) Received: by mail-pg0-f66.google.com with SMTP id c10-v6so305435pgu.9 for ; Tue, 12 Jun 2018 16:29:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=uNcrWDOS/1rd0HJncwV1jCFPLi1Q6vQTQ3TPk2boE5g=; b=MeYLRx4I08iILbvbxevfcSLmV8ugdB+AitF1i++xaYNOywnaQJhiidRFuhBmxH9iT6 s1705dG/0k/qvzR3uaQZZPKyyk0c7hKLyDuttzxjUBmsI+6WtbJ0RT31u+tgelxCtSYk oOzBGX3RLSbNkxdZU7FoGOhT+GuZDewDOt+NvYJBMwTet5gl387LNjPIs9Xj/XBX+zwN gLFOppdmbkLj1beutzT1Y2+g/1cYrbt0OabRgneWxwH2bdAUmx/K3AdfXYoR0DYhIZQI F6gEF9N/VS8LcciZpMSuZqv/JjaFV3DwSVFY3PycxfmuV0oGjjwARqPydfFsDCUptTFu 6luA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=uNcrWDOS/1rd0HJncwV1jCFPLi1Q6vQTQ3TPk2boE5g=; b=Dx1yeoGEe2jMT9JScYFzJJVhG1UdE4N/lebzzHeHaAM1p6VgK4IAbQf9ltWOhPVWLA dw3GCU7tCZmAsPFB8Ac/SBgpCj/k/0+LtqQXJk+ozMuxuVhNylJ369PXbFu8FKeaGPKv LYvIpSHq0XNosJCRXvy9H1UYhfr+nYBA9fI4sjL6ICezAeLekx/BBdHxltV7ZQ1tQk2f +C9MRHvpPJ2upMrd1HlRlX2LE2S63Bu6lWyqwNN0aXsiojpWhMHeU7dBuTwPOwZGcQLY onT9AnZrUFiqFKlSGKICAz6VH6TDt467gKHhFblWFBay52FWBNKp/9HJs+rQ8S7UbRjS vlpA== X-Gm-Message-State: APt69E02Tpq9FYVfla+CbyhkYUftyPij6jntxwgQlrXM3bfU2TzvFIkY ocvdH03HJofHsivGZEnaORL2SoOxecY= X-Google-Smtp-Source: ADUXVKJXZrtgQs1T4cIiR4KvGUi2YskBK9+0y7rJw+XIbkaaWkayEajyPKDPWpD1rne41FUEIJupmw== X-Received: by 2002:a63:721d:: with SMTP id n29-v6mr1982742pgc.194.1528846181802; Tue, 12 Jun 2018 16:29:41 -0700 (PDT) Received: from xeon-e3.lan (204-195-35-107.wavecable.com. [204.195.35.107]) by smtp.gmail.com with ESMTPSA id 29-v6sm1592088pfj.14.2018.06.12.16.29.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 12 Jun 2018 16:29:40 -0700 (PDT) From: Stephen Hemminger To: dev@dpdk.org Cc: Stephen Hemminger Date: Tue, 12 Jun 2018 16:29:35 -0700 Message-Id: <20180612232939.24793-1-stephen@networkplumber.org> X-Mailer: git-send-email 2.17.1 Subject: [dpdk-dev] [PATCH v11 0/4] Hyper-V/Azure netvsc PMD and bus support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Latest version of the Hyper-V native bus (VMBus) and network device (netvsc) drivers. This virtual device is used in Microsoft Hyper-V in Windows 10, Windows Server 2016 and Azure. Most of this code was extracted from FreeBSD and some of this is from earlier code donated by Brocade. Only Linux is supported at present, but the code is split to allow future FreeBSD and Windows support. This version works best with 4.17 kernel which has all the necessary patches for multi-queue support. It is possible to use with 4.16 but then only a single queue is supported. Device binding is best done via driverctl; this required some additional fixes to kernel and driverctl to work correctly. Linux kernel vmbus support needed to support sysfs driver_override and driverctl needed to handle non-PCI bus from udev. https://gitlab.com/driverctl/driverctl/merge_requests/3 http://driverdev.linuxdriverproject.org/pipermail/driverdev-devel/2018-April/118889.html The remaining TODO's are: - Performance testing - Rx buffer copy avoidance (external mbuf) - Transparent VF support v11 - merge meson build into bus and netvsc patches - fix docbook for rte_uuid - fix a couple of checkpatch warnings - reduce logging during debug for stats v10 - resolve RSS setup - add documentation about restart issue - update documentation to refer to 4.17 - use same RSS key as MLX v9 - fix places where still targeted at previous release - add map entry for rte_uuid - fix meson build dependencies v8 - targeted for 18.08, move release notes - use Ted's libuuid (not FreeBSD) because that is 3 clause BSD license versus 2 clause in FreeBSD - minor checkpatch whitespace fixes v7 - add EAL UUID functions from BSD to remove dependency on libuuid this means device can be enabled by default and eliminates build issues - add support for latest NetVSP protocol (from hayaingz) - add probe finish for compatability with 18.05 - rebase to 18.05-rc3 Stephen Hemminger (4): eal: add rte_uuid support bus/vmbus: add hyper-v virtual bus support net/netvsc: add hyper-v netvsc network device net/netvsc: add documentation MAINTAINERS | 11 + config/common_base | 13 + config/common_linuxapp | 3 + doc/guides/nics/features/netvsc.ini | 23 + doc/guides/nics/index.rst | 1 + doc/guides/nics/netvsc.rst | 101 ++ doc/guides/rel_notes/known_issues.rst | 20 + doc/guides/rel_notes/release_18_08.rst | 6 + drivers/bus/Makefile | 1 + drivers/bus/meson.build | 2 +- drivers/bus/vmbus/Makefile | 36 + drivers/bus/vmbus/linux/Makefile | 3 + drivers/bus/vmbus/linux/vmbus_bus.c | 355 +++++ drivers/bus/vmbus/linux/vmbus_uio.c | 390 ++++++ drivers/bus/vmbus/meson.build | 18 + drivers/bus/vmbus/private.h | 132 ++ drivers/bus/vmbus/rte_bus_vmbus.h | 396 ++++++ drivers/bus/vmbus/rte_bus_vmbus_version.map | 28 + drivers/bus/vmbus/rte_vmbus_reg.h | 344 +++++ drivers/bus/vmbus/vmbus_bufring.c | 241 ++++ drivers/bus/vmbus/vmbus_channel.c | 406 ++++++ drivers/bus/vmbus/vmbus_common.c | 286 ++++ drivers/bus/vmbus/vmbus_common_uio.c | 232 ++++ drivers/net/Makefile | 1 + drivers/net/meson.build | 2 +- drivers/net/netvsc/Makefile | 23 + drivers/net/netvsc/hn_ethdev.c | 755 ++++++++++ drivers/net/netvsc/hn_logs.h | 35 + drivers/net/netvsc/hn_nvs.c | 535 ++++++++ drivers/net/netvsc/hn_nvs.h | 245 ++++ drivers/net/netvsc/hn_rndis.c | 1097 +++++++++++++++ drivers/net/netvsc/hn_rndis.h | 26 + drivers/net/netvsc/hn_rxtx.c | 1216 +++++++++++++++++ drivers/net/netvsc/hn_var.h | 139 ++ drivers/net/netvsc/meson.build | 7 + drivers/net/netvsc/ndis.h | 378 +++++ drivers/net/netvsc/rndis.h | 414 ++++++ drivers/net/netvsc/rte_pmd_netvsc_version.map | 5 + lib/librte_eal/bsdapp/eal/Makefile | 1 + lib/librte_eal/common/Makefile | 2 +- lib/librte_eal/common/eal_common_uuid.c | 193 +++ lib/librte_eal/common/include/rte_uuid.h | 129 ++ lib/librte_eal/common/meson.build | 2 + lib/librte_eal/linuxapp/eal/Makefile | 1 + lib/librte_eal/rte_eal_version.map | 9 + mk/rte.app.mk | 2 + 46 files changed, 8262 insertions(+), 3 deletions(-) create mode 100644 doc/guides/nics/features/netvsc.ini create mode 100644 doc/guides/nics/netvsc.rst create mode 100644 drivers/bus/vmbus/Makefile create mode 100644 drivers/bus/vmbus/linux/Makefile create mode 100644 drivers/bus/vmbus/linux/vmbus_bus.c create mode 100644 drivers/bus/vmbus/linux/vmbus_uio.c create mode 100644 drivers/bus/vmbus/meson.build create mode 100644 drivers/bus/vmbus/private.h create mode 100644 drivers/bus/vmbus/rte_bus_vmbus.h create mode 100644 drivers/bus/vmbus/rte_bus_vmbus_version.map create mode 100644 drivers/bus/vmbus/rte_vmbus_reg.h create mode 100644 drivers/bus/vmbus/vmbus_bufring.c create mode 100644 drivers/bus/vmbus/vmbus_channel.c create mode 100644 drivers/bus/vmbus/vmbus_common.c create mode 100644 drivers/bus/vmbus/vmbus_common_uio.c create mode 100644 drivers/net/netvsc/Makefile create mode 100644 drivers/net/netvsc/hn_ethdev.c create mode 100644 drivers/net/netvsc/hn_logs.h create mode 100644 drivers/net/netvsc/hn_nvs.c create mode 100644 drivers/net/netvsc/hn_nvs.h create mode 100644 drivers/net/netvsc/hn_rndis.c create mode 100644 drivers/net/netvsc/hn_rndis.h create mode 100644 drivers/net/netvsc/hn_rxtx.c create mode 100644 drivers/net/netvsc/hn_var.h create mode 100644 drivers/net/netvsc/meson.build create mode 100644 drivers/net/netvsc/ndis.h create mode 100644 drivers/net/netvsc/rndis.h create mode 100644 drivers/net/netvsc/rte_pmd_netvsc_version.map create mode 100644 lib/librte_eal/common/eal_common_uuid.c create mode 100644 lib/librte_eal/common/include/rte_uuid.h