From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 55FC8A054A;
	Tue, 25 Oct 2022 11:09:15 +0200 (CEST)
Received: from [217.70.189.124] (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id 4C02142BD7;
	Tue, 25 Oct 2022 11:09:15 +0200 (CEST)
Received: from mga04.intel.com (mga04.intel.com [192.55.52.120])
 by mails.dpdk.org (Postfix) with ESMTP id 32B4B42BB8
 for <dev@dpdk.org>; Tue, 25 Oct 2022 11:09:13 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
 d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
 t=1666688953; x=1698224953;
 h=from:to:cc:subject:date:message-id:in-reply-to:
 references:mime-version:content-transfer-encoding;
 bh=pFizZERacwtX9DNpKMhwK6nKsmdkXGNA1f+mbpCcVdE=;
 b=eW9Q5cstiejuvLClItEg8mMKicTq0e040OHFWRMJItKaPDusgBAaxSAW
 96xDY/jtcN3YImnNzILK/KHGRWs9HuS1Gkpmg1LNHp6Au7renJi85eNnq
 w1kINd9yUHSyWDhzl7ADDkngvGvsJWOzWE5rGUmWOEJruUrFp/5krn/tM
 IOZAs83VdSZ2gqnwQNViGddH5HhhS/SFDXawP9RzCdHj0KUePyb4AqKHY
 axkRHXwj1RananQF6zxbUrNbyJ1uf8wk+8dF4+xSPqFOv5PQArdZCYxXv
 BR8y36X11RVzyTPN0wYQoJZKaTlygBIuidJGNQISSg2XH2LwLdUyoipyC w==;
X-IronPort-AV: E=McAfee;i="6500,9779,10510"; a="306358783"
X-IronPort-AV: E=Sophos;i="5.95,211,1661842800"; d="scan'208";a="306358783"
Received: from orsmga004.jf.intel.com ([10.7.209.38])
 by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 25 Oct 2022 02:09:12 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=McAfee;i="6500,9779,10510"; a="756864531"
X-IronPort-AV: E=Sophos;i="5.95,211,1661842800"; d="scan'208";a="756864531"
Received: from dpdk-jf-ntb-one.sh.intel.com ([10.67.111.104])
 by orsmga004.jf.intel.com with ESMTP; 25 Oct 2022 02:09:09 -0700
From: Junfeng Guo <junfeng.guo@intel.com>
To: qi.z.zhang@intel.com, jingjing.wu@intel.com, ferruh.yigit@xilinx.com,
 beilei.xing@intel.com
Cc: dev@dpdk.org, xiaoyun.li@intel.com, awogbemila@google.com,
 bruce.richardson@intel.com, hemant.agrawal@nxp.com,
 stephen@networkplumber.org, chenbo.xia@intel.com, helin.zhang@intel.com,
 Junfeng Guo <junfeng.guo@intel.com>
Subject: [PATCH v8 0/8] introduce GVE PMD
Date: Tue, 25 Oct 2022 17:07:21 +0800
Message-Id: <20221025090729.2593603-1-junfeng.guo@intel.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20221021091928.2674471-2-junfeng.guo@intel.com>
References: <20221021091928.2674471-2-junfeng.guo@intel.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org

Introduce a new PMD for Google Virtual Ethernet (GVE).

gve (or gVNIC) is the standard virtual ethernet interface on Google Cloud
Platform (GCP), which is one of the multiple virtual interfaces from those
leading CSP customers in the world.

Having a well maintained/optimized gve PMD on DPDK community can help those
cloud instance consumers with better experience of performance, maintenance
who wants to run their own VNFs on GCP.

Please refer to https://cloud.google.com/compute/docs/networking/using-gvnic
for the device description.

This patch set requires an exception for MIT license for GVE base code.
And the base code includes the following files:
 - gve_adminq.c
 - gve_adminq.h
 - gve_desc.h
 - gve_desc_dqo.h
 - gve_register.h

It's based on GVE kernel driver v1.3.0 and the original code is in
https://github.com/GoogleCloudPlatform/compute-virtual-ethernet-linux/tree/v1.3.0


v2:
fix some CI check error.

v3:
refactor some code and fix some build error.

v4:
move the Google base code files into DPDK base folder.

v5:
reorder commit sequence and drop the stats feature.

v6:
improve the code.

v7:
- remove Intel copyright for the google base files.

v8:
- replace ETIME with ETIMEDOUT to pass the build check.
- use RTE_ETHER_ADDR_PRT_FMT/_ADDR_BYTES to get rid of 'mac' variable.
- add limitations in doc for current limited RSS and MTU.


Junfeng Guo (8):
  net/gve/base: introduce base code
  net/gve/base: add OS specific implementation
  net/gve: add support for device initialization
  net/gve: add support for link update
  net/gve: add support for MTU setting
  net/gve: add support for dev info get and dev configure
  net/gve: add support for queue operations
  net/gve: add support for Rx/Tx

 MAINTAINERS                            |   6 +
 doc/guides/nics/features/gve.ini       |  16 +
 doc/guides/nics/gve.rst                |  82 +++
 doc/guides/nics/index.rst              |   1 +
 doc/guides/rel_notes/release_22_11.rst |   5 +
 drivers/net/gve/base/gve.h             |  56 ++
 drivers/net/gve/base/gve_adminq.c      | 921 +++++++++++++++++++++++++
 drivers/net/gve/base/gve_adminq.h      | 381 ++++++++++
 drivers/net/gve/base/gve_desc.h        | 138 ++++
 drivers/net/gve/base/gve_desc_dqo.h    | 255 +++++++
 drivers/net/gve/base/gve_osdep.h       | 159 +++++
 drivers/net/gve/base/gve_register.h    |  29 +
 drivers/net/gve/gve_ethdev.c           | 700 +++++++++++++++++++
 drivers/net/gve/gve_ethdev.h           | 298 ++++++++
 drivers/net/gve/gve_logs.h             |  14 +
 drivers/net/gve/gve_rx.c               | 354 ++++++++++
 drivers/net/gve/gve_tx.c               | 669 ++++++++++++++++++
 drivers/net/gve/meson.build            |  16 +
 drivers/net/gve/version.map            |   3 +
 drivers/net/meson.build                |   1 +
 20 files changed, 4104 insertions(+)
 create mode 100644 doc/guides/nics/features/gve.ini
 create mode 100644 doc/guides/nics/gve.rst
 create mode 100644 drivers/net/gve/base/gve.h
 create mode 100644 drivers/net/gve/base/gve_adminq.c
 create mode 100644 drivers/net/gve/base/gve_adminq.h
 create mode 100644 drivers/net/gve/base/gve_desc.h
 create mode 100644 drivers/net/gve/base/gve_desc_dqo.h
 create mode 100644 drivers/net/gve/base/gve_osdep.h
 create mode 100644 drivers/net/gve/base/gve_register.h
 create mode 100644 drivers/net/gve/gve_ethdev.c
 create mode 100644 drivers/net/gve/gve_ethdev.h
 create mode 100644 drivers/net/gve/gve_logs.h
 create mode 100644 drivers/net/gve/gve_rx.c
 create mode 100644 drivers/net/gve/gve_tx.c
 create mode 100644 drivers/net/gve/meson.build
 create mode 100644 drivers/net/gve/version.map

-- 
2.34.1