get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/112980/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 112980,
    "url": "http://patches.dpdk.org/api/patches/112980/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20220617093444.2004000-7-jin.liu@corigine.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20220617093444.2004000-7-jin.liu@corigine.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220617093444.2004000-7-jin.liu@corigine.com",
    "date": "2022-06-17T09:34:37",
    "name": "[v3,06/13] net/nfp: support NFP3800 card",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "9f157f75c76af039bead7192ba9b7b1e731ec5e5",
    "submitter": {
        "id": 2670,
        "url": "http://patches.dpdk.org/api/people/2670/?format=api",
        "name": "Jin Liu",
        "email": "jin.liu@corigine.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20220617093444.2004000-7-jin.liu@corigine.com/mbox/",
    "series": [
        {
            "id": 23606,
            "url": "http://patches.dpdk.org/api/series/23606/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=23606",
            "date": "2022-06-17T09:34:31",
            "name": "Add support of NFP3800 chip and firmware with NFDk",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/23606/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/112980/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/112980/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 9F2A2A0093;\n\tFri, 17 Jun 2022 11:35:59 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id F376442B71;\n\tFri, 17 Jun 2022 11:35:28 +0200 (CEST)",
            "from NAM10-MW2-obe.outbound.protection.outlook.com\n (mail-mw2nam10on2095.outbound.protection.outlook.com [40.107.94.95])\n by mails.dpdk.org (Postfix) with ESMTP id 920EB42B6F\n for <dev@dpdk.org>; Fri, 17 Jun 2022 11:35:25 +0200 (CEST)",
            "from DM6PR13MB3004.namprd13.prod.outlook.com (2603:10b6:5:191::21)\n by CO3PR13MB5671.namprd13.prod.outlook.com (2603:10b6:303:17a::16) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.9; Fri, 17 Jun\n 2022 09:35:24 +0000",
            "from DM6PR13MB3004.namprd13.prod.outlook.com\n ([fe80::ac31:a36a:cc15:cd35]) by DM6PR13MB3004.namprd13.prod.outlook.com\n ([fe80::ac31:a36a:cc15:cd35%7]) with mapi id 15.20.5373.009; Fri, 17 Jun 2022\n 09:35:24 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=LOjWdOce35M+7b+NxtvJrFaLgPbQ/N5wQC5wByuP8oqu9z7tgdwbfriw9f7WHt/GQcvoatpBjqKbS7VrZYQC3SfDy5ba9uVj0IREzGAVuaD3mWCQFg0BS0kigFiEJm/cblQUSUUscBWj+V//OQR4EZvr3GltlvMssh+K8hP3Bdc4qQ6tBZJC0ynbxVhQMNgTI9bW7mH17IGoPLO1CrEjBI8fC5ggvi5V/Q2U1vN6BuZhKX93G0dS3BXaX2z/8Hus7zZguzb6mdFjqJuF9MV2h2B0TxfAtktEpMHQPUrk62sJINY6j//vZ1JTbnVG2nbTgih2rF2B+tTy1eeed+LGmg==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=+IbkRzZI+k90O8t0zYy11/8e4XRdT5anWVyDXpR/Z0c=;\n b=nlrjkgSkaEKOPkW9xf29bX1z4/6zQf40LZ+2+s77TyXRJ0s5nbDJz7p+F9M7YI5Tm4KFzOdXV2J2yYGZGOi4hutgblf1PFycwk9nNGqr8mwRsRZYkf6JOCZnW1H8fG0z2nndS/Pzpoqic8jePxBAAzINvi/YQXAARFEBM3xiQtF92DheUo+L/w8DWcZXALM7qjoF9Xw4KKss5m9AE6yQBc5hFQu+DeL6nqXhwHfRVwjwtI5r/cKpNvbuOSAVZKHGxPEOnfA+errTSExpFJVXVuQLE+8JA1+/krCwd4LfNajukRqjFqPMe/iccGC02UDYpQepdAikghzv1Y0EjUrAuA==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com;\n dkim=pass header.d=corigine.com; arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=+IbkRzZI+k90O8t0zYy11/8e4XRdT5anWVyDXpR/Z0c=;\n b=Bdc3vPlCWaWqkRzIrd7PzitFqkJumyOQC/H1evQi2Gdnx6Y40fm5m68cfFykDFI25DmCfjX53dubqt4OK939uMQB1ohsNGxEI1vqXfAQJRbt3J5JZfLncmJdWh6oH6que6kCkgWfZKm9K/0pni4+qCWqdHCYsO5e+uo/HSmOfy4=",
        "Authentication-Results": "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=corigine.com;",
        "From": "Jin Liu <jin.liu@corigine.com>",
        "To": "dev@dpdk.org",
        "Cc": "niklas.soderlund@corigine.com, Jin Liu <jin.liu@corigine.com>,\n Diana Wang <na.wang@corigine.com>, Peng Zhang <peng.zhang@corigine.com>,\n Chaoyong He <chaoyong.he@corigine.com>",
        "Subject": "[PATCH v3 06/13] net/nfp: support NFP3800 card",
        "Date": "Fri, 17 Jun 2022 11:34:37 +0200",
        "Message-Id": "<20220617093444.2004000-7-jin.liu@corigine.com>",
        "X-Mailer": "git-send-email 2.27.0",
        "In-Reply-To": "<20220617093444.2004000-1-jin.liu@corigine.com>",
        "References": "<20220616023939.1798769-1-jin.liu@corigine.com>\n <20220617093444.2004000-1-jin.liu@corigine.com>",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-ClientProxiedBy": "LO4P123CA0192.GBRP123.PROD.OUTLOOK.COM\n (2603:10a6:600:1a4::17) To DM6PR13MB3004.namprd13.prod.outlook.com\n (2603:10b6:5:191::21)",
        "MIME-Version": "1.0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "9c952342-0876-4d52-bd98-08da5044b44a",
        "X-MS-TrafficTypeDiagnostic": "CO3PR13MB5671:EE_",
        "X-Microsoft-Antispam-PRVS": "\n <CO3PR13MB5671E89F886D2B7AFEBDE7A194AF9@CO3PR13MB5671.namprd13.prod.outlook.com>",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n eZIBYiLp2w0GVmSz75uI55kBR3g+efkunKfDPBNchXJ8f6BvdlZ7zQPyn313QvhG41OU7bdXZGC0KBI7EBnZta331vt3WA05Iz/PvfrvjzKv5bHkPefHMNYaTK6+zteT1w/KQmD9yVN5JWoCThYqEelWwHvFPSUhRsqcb96F0WnswjH/QdwN0KcUmXdrit37FztypM2fufXM57XC7rFbbNE0WoiUckDjiTt5mx5UFM+7h2VgOR5wxjvpFg8aLVOKVmM16D5fEXbZAGnGQ1yCQp9HJi8VCQq8kabdQlkoAqp+m9azJJ2oTqpk10NeOyMiF4HVa3zyVzLIGoHLZWKS4PX7p3S2mcAGEe5pZ1as/tPRdyCFvLe3P/Bm0HZOv22lAAPFLZkrFiSnifF64ZDx86B5HMqduaY4J6O6tXqrPoGu2SMPkdLkfPZS3r1/09NjEi9VE7jLPRfPEjmIXhIEnOS04UKCTRVXJ40uf2A5QFkkZqF7qT1AAidfb7GJwGmC7WIdtm5u9WCWVAxRgmCaiY51J/9J9LOEX/NiCyDHSP47YvDly+Gnh/afDaO28hQWLFBsHO3VBBDxxZ+GSDhtXyCPTYrutZhrqY2j9agQKL7im1Or/jr4Lr68S1epEadGw/gEbX3LMJicRyV+fyE/nN5gQwl6J4GvxodSHkT1wZG1R/0aNNYd9KBg6/uiS5DOplZmQP16SSreObsVY8aYPnnyS51LGo2IebcPMSAlSwZVjBU00grBiL5CE6czPssJ",
        "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:DM6PR13MB3004.namprd13.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230016)(4636009)(346002)(136003)(366004)(396003)(39840400004)(66476007)(66556008)(26005)(8676002)(66574015)(6666004)(107886003)(66946007)(6506007)(6916009)(44832011)(2906002)(316002)(4326008)(38350700002)(186003)(508600001)(54906003)(5660300002)(6486002)(6512007)(1076003)(8936002)(2616005)(36756003)(52116002)(83380400001)(86362001)(38100700002)(41300700001);\n DIR:OUT; SFP:1102;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "=?utf-8?q?SuGJm5GFks3uu0H1CemeyjKsnQNr?=\n\t=?utf-8?q?vCBgcHsqsYf+Fx7yBagrGzhYihR3lF/xBGqO67pMRQUugUAcAU+BDuMrcNAQ/RhTn?=\n\t=?utf-8?q?vQj4ZVymd93Pe2vQMq7Gff+tGx1s1M/mhmB6ijuujKPcPdV+iiTqYAM0GbW6tAZrj?=\n\t=?utf-8?q?oBb29ayDjNn3fsN3Cjqvep5Dv5g47etcrupkUZNelzVWEGGNiLXuOPR3h9sJDcPpw?=\n\t=?utf-8?q?Tu/tik8SH/BTN32QLI71JbaiPJc8AL3cfChy94YwRa/y95S0XTD6eY62MM1/j+p1P?=\n\t=?utf-8?q?s67G/tB3g5LEftSNvdeLLO0dALGm1O+0FBKvqMSCNqlZqts5nskLOEn96P3/2UV5I?=\n\t=?utf-8?q?04IMgz70ws+goQtbQN/A3gZMTwvxVLiYzaOrmVcfaB0mLdTqeopn4lEO4WUrznVIk?=\n\t=?utf-8?q?uwSzf/avO3BAPl+CCIVzIcFQ6QTnrcj4oBsZbu5Jj15Rml6Qht8KwbstkRn7ADD+r?=\n\t=?utf-8?q?F5Qgw/78nno6nKRpnKL7jKAaZ0l9kIcWzeshQFMH+N48Oov/CRT79XC0A8KkyQyPR?=\n\t=?utf-8?q?EKuMcteUApTHP8G46g36lS6wTwO3YRAnCNGehWFJ6xTLhQX9pdNoPdY8yIT6ObFjO?=\n\t=?utf-8?q?69v4qKiumQD3iZLU98i7uO1mPGjSbbf1c69M6bpYI+HShIVilj9X4yZluJ3FuOm6T?=\n\t=?utf-8?q?2XwR80Wmg6IbJ8jsRe3eV/wGvVDgYbhC088vmz2dZ3VLhFL4XOF4Hjcd5TIFidrPo?=\n\t=?utf-8?q?43EU1r2nAxj0XL1w+eYoS/TseBstm5sneO1CKP5nEYc17RQYxnhMeLUiTnjfsIYTb?=\n\t=?utf-8?q?jjyKHcPyx6xS6xYgPZ/K2KEkhKs1FcZznKngJQY5RFlKdsiVoqJIloGTph9yV15+q?=\n\t=?utf-8?q?3wH9nKhQO4j2RoVsQAbq8r3fc2BA2Jd81scOugY30aZXnBxejlg0FB9gKIINlk26U?=\n\t=?utf-8?q?WGwGLBsbbGu/hLObq7iuHbFg4iJsBoDRANcxXWbqmXS+5rU5hxoxwHqpJ4jhG1tob?=\n\t=?utf-8?q?I27mwGa8njuWLKi55CAD0PhoUctN7YmtWBYb4L+Knx80pEPdZ9LpcV+DHGKkuUztG?=\n\t=?utf-8?q?L1hEGZG7TVOkYbmUJI8beXnEwJgOK4oVu78RFBmmtpGSQViIrp+y517SYkPb1nrsf?=\n\t=?utf-8?q?/6Pwawj/sQNgrgLc77nYQL+w1v/xq/Wq9fAHFotsqEAMo2yL/EVnc3kMo1cYfI5wx?=\n\t=?utf-8?q?lq8a4+hG4Z8vf3ghaCF04pbsoxfDUl5XcYsAvCcgOUl2uprzeOcXDOoKn9dNPPinA?=\n\t=?utf-8?q?Kuparzjg+d44D89xlbkqFmUEbIRoWnieEeAEwBG5jkCkvg5iP7y/d/EWvuiZC72Tx?=\n\t=?utf-8?q?s9SAY8pNI1BsZuAat0TDSPGQ9+4pQGjtbSvWcbPl+Wd73vE3LoVnoVOAkmZ9uj9Xb?=\n\t=?utf-8?q?oTNFFrhKI2hkULsnA2ywZMpur3Mq0nzQXl/C0AQrbK5xUVFxeOIKyAP5IV3q1cJDZ?=\n\t=?utf-8?q?1iHNz2SnWVbqbrLKfqvFUt415bQ+UO7smm5h4ecZR1+hK18InKnNruWoUyFPGNzJC?=\n\t=?utf-8?q?nNYMSJASfSaVHbDrusrQteRZKBQl6xDHYYsQqecQq5hqsxtyRjE7bVrx2zkpsf1vx?=\n\t=?utf-8?q?2tk1x1MHyiGFev0hfw+JtV89A/yjuXpsmfey7PZDXu32f3GUvtAeN82uoA+9XoKkv?=\n\t=?utf-8?q?hbSGMAo0oLcAfUlXGEy7rB3+slD+8DYMgEHiXj1we22MJ+jdEptfxSSDDIXxIlbeZ?=\n\t=?utf-8?q?qdhKs5DLLFnxrNt0/HwSBwtzF1mkqZe1pUhv/qAhcp5hRTF20mbOo=3D?=",
        "X-OriginatorOrg": "corigine.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 9c952342-0876-4d52-bd98-08da5044b44a",
        "X-MS-Exchange-CrossTenant-AuthSource": "DM6PR13MB3004.namprd13.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "17 Jun 2022 09:35:24.1797 (UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "fe128f2c-073b-4c20-818e-7246a585940c",
        "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED",
        "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n Vz9D/xjSCyr/+CVzTNgs1ObbtGLsCg2iS55eevkhUjDO6Gu5sUSP3zQ63hxjBxj204raQbwhcLh1aq53lxafqQ==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CO3PR13MB5671",
        "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>,\n <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>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "Add support for a new type of NIC NFP3800 card, and update some\nnetwork card data acquisition interface functions.\n\nSigned-off-by: Jin Liu <jin.liu@corigine.com>\nSigned-off-by: Diana Wang <na.wang@corigine.com>\nSigned-off-by: Peng Zhang <peng.zhang@corigine.com>\nSigned-off-by: Chaoyong He <chaoyong.he@corigine.com>\nSigned-off-by: Niklas Söderlund <niklas.soderlund@corigine.com>\n---\n doc/guides/nics/nfp.rst                |  3 ++-\n doc/guides/rel_notes/release_22_07.rst |  4 +++\n drivers/net/nfp/nfp_common.h           | 34 ++++++++++++++++++++++++--\n drivers/net/nfp/nfp_ethdev.c           | 28 ++++++++++++++++++---\n drivers/net/nfp/nfp_ethdev_vf.c        |  9 +++++--\n drivers/net/nfp/nfpcore/nfp_cpp.h      |  2 +-\n drivers/net/nfp/nfpcore/nfp_nsp_eth.c  | 20 +++++++++++----\n 7 files changed, 86 insertions(+), 14 deletions(-)",
    "diff": "diff --git a/doc/guides/nics/nfp.rst b/doc/guides/nics/nfp.rst\nindex 30cdc69202..dcefac3ef6 100644\n--- a/doc/guides/nics/nfp.rst\n+++ b/doc/guides/nics/nfp.rst\n@@ -12,7 +12,8 @@ up to 400-Gb/s.\n \n This document explains how to use DPDK with the Netronome Poll Mode\n Driver (PMD) supporting Netronome's Network Flow Processor 6xxx\n-(NFP-6xxx) and Netronome's Flow Processor 4xxx (NFP-4xxx).\n+(NFP-6xxx), Netronome's Network Flow Processor 4xxx (NFP-4xxx) and\n+Netronome's Network Flow Processor 38xx (NFP-38xx).\n \n NFP is a SRIOV capable device and the PMD supports the physical\n function (PF) and the virtual functions (VFs).\ndiff --git a/doc/guides/rel_notes/release_22_07.rst b/doc/guides/rel_notes/release_22_07.rst\nindex 7d5e3fac77..d5d8c735b1 100644\n--- a/doc/guides/rel_notes/release_22_07.rst\n+++ b/doc/guides/rel_notes/release_22_07.rst\n@@ -108,6 +108,10 @@ New Features\n   * Added support for MTU on Windows.\n   * Added matching and RSS on IPsec ESP.\n \n+* **Updated Netronome nfp driver.**\n+\n+  * Added support for NFP3800 NIC.\n+\n * **Updated VMware vmxnet3 networking driver.**\n \n   * Added version 5 support.\ndiff --git a/drivers/net/nfp/nfp_common.h b/drivers/net/nfp/nfp_common.h\nindex 8e1b4fb6a4..19e96414e3 100644\n--- a/drivers/net/nfp/nfp_common.h\n+++ b/drivers/net/nfp/nfp_common.h\n@@ -16,9 +16,11 @@\n \n #define NFP_NET_PMD_VERSION \"0.1\"\n #define PCI_VENDOR_ID_NETRONOME         0x19ee\n+#define PCI_DEVICE_ID_NFP3800_PF_NIC    0x3800\n+#define PCI_DEVICE_ID_NFP3800_VF_NIC    0x3803\n #define PCI_DEVICE_ID_NFP4000_PF_NIC    0x4000\n #define PCI_DEVICE_ID_NFP6000_PF_NIC    0x6000\n-#define PCI_DEVICE_ID_NFP6000_VF_NIC    0x6003\n+#define PCI_DEVICE_ID_NFP6000_VF_NIC    0x6003  /* Include NFP4000VF */\n \n /* Forward declaration */\n struct nfp_net_adapter;\n@@ -41,8 +43,16 @@ struct nfp_net_adapter;\n #define NFP_QCP_QUEUE_STS_HI                    0x000c\n #define NFP_QCP_QUEUE_STS_HI_WRITEPTR_mask    (0x3ffff)\n \n+#define NFP_PCIE_QCP_NFP3800_OFFSET            0x400000\n+#define NFP_PCIE_QCP_NFP6000_OFFSET            0x80000\n+#define NFP_PCIE_QUEUE_NFP3800_MASK            0x1ff\n+#define NFP_PCIE_QUEUE_NFP6000_MASK            0xff\n+#define NFP_PCIE_QCP_PF_OFFSET                 0x0\n+#define NFP_PCIE_QCP_VF_OFFSET                 0x0\n+\n /* The offset of the queue controller queues in the PCIe Target */\n-#define NFP_PCIE_QUEUE(_q) (0x80000 + (NFP_QCP_QUEUE_ADDR_SZ * ((_q) & 0xff)))\n+#define NFP_PCIE_QUEUE(_offset, _q, _mask)    \\\n+\t\t((_offset) + (NFP_QCP_QUEUE_ADDR_SZ * ((_q) & (_mask))))\n \n /* Interrupt definitions */\n #define NFP_NET_IRQ_LSC_IDX             0\n@@ -342,6 +352,26 @@ nfp_qcp_read(uint8_t *q, enum nfp_qcp_ptr ptr)\n \t\treturn val & NFP_QCP_QUEUE_STS_HI_WRITEPTR_mask;\n }\n \n+static inline uint32_t\n+nfp_pci_queue(struct rte_pci_device *pdev, uint16_t queue)\n+{\n+\tswitch (pdev->id.device_id) {\n+\tcase PCI_DEVICE_ID_NFP4000_PF_NIC:\n+\tcase PCI_DEVICE_ID_NFP6000_PF_NIC:\n+\t\treturn NFP_PCIE_QUEUE(NFP_PCIE_QCP_PF_OFFSET, queue,\n+\t\t\t\tNFP_PCIE_QUEUE_NFP6000_MASK);\n+\tcase PCI_DEVICE_ID_NFP3800_VF_NIC:\n+\t\treturn NFP_PCIE_QUEUE(NFP_PCIE_QCP_VF_OFFSET, queue,\n+\t\t\t\tNFP_PCIE_QUEUE_NFP3800_MASK);\n+\tcase PCI_DEVICE_ID_NFP6000_VF_NIC:\n+\t\treturn NFP_PCIE_QUEUE(NFP_PCIE_QCP_VF_OFFSET, queue,\n+\t\t\t\tNFP_PCIE_QUEUE_NFP6000_MASK);\n+\tdefault:\n+\t\treturn NFP_PCIE_QUEUE(NFP_PCIE_QCP_PF_OFFSET, queue,\n+\t\t\t\tNFP_PCIE_QUEUE_NFP3800_MASK);\n+\t}\n+}\n+\n /* Prototypes for common NFP functions */\n int nfp_net_reconfig(struct nfp_net_hw *hw, uint32_t ctrl, uint32_t update);\n int nfp_net_configure(struct rte_eth_dev *dev);\ndiff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c\nindex ae6cb5943f..cb84dc3188 100644\n--- a/drivers/net/nfp/nfp_ethdev.c\n+++ b/drivers/net/nfp/nfp_ethdev.c\n@@ -446,12 +446,13 @@ nfp_net_init(struct rte_eth_dev *eth_dev)\n \n \t/* Work out where in the BAR the queues start. */\n \tswitch (pci_dev->id.device_id) {\n+\tcase PCI_DEVICE_ID_NFP3800_PF_NIC:\n \tcase PCI_DEVICE_ID_NFP4000_PF_NIC:\n \tcase PCI_DEVICE_ID_NFP6000_PF_NIC:\n \t\tstart_q = nn_cfg_readl(hw, NFP_NET_CFG_START_TXQ);\n-\t\ttx_bar_off = (uint64_t)start_q * NFP_QCP_QUEUE_ADDR_SZ;\n+\t\ttx_bar_off = nfp_pci_queue(pci_dev, start_q);\n \t\tstart_q = nn_cfg_readl(hw, NFP_NET_CFG_START_RXQ);\n-\t\trx_bar_off = (uint64_t)start_q * NFP_QCP_QUEUE_ADDR_SZ;\n+\t\trx_bar_off = nfp_pci_queue(pci_dev, start_q);\n \t\tbreak;\n \tdefault:\n \t\tPMD_DRV_LOG(ERR, \"nfp_net: no device ID matching\");\n@@ -764,6 +765,7 @@ nfp_pf_init(struct rte_pci_device *pci_dev)\n {\n \tint err;\n \tint ret = 0;\n+\tuint64_t addr;\n \tint total_ports;\n \tstruct nfp_cpp *cpp;\n \tstruct nfp_pf_dev *pf_dev;\n@@ -867,8 +869,24 @@ nfp_pf_init(struct rte_pci_device *pci_dev)\n \tPMD_INIT_LOG(DEBUG, \"ctrl bar: %p\", pf_dev->ctrl_bar);\n \n \t/* configure access to tx/rx vNIC BARs */\n+\tswitch (pci_dev->id.device_id) {\n+\tcase PCI_DEVICE_ID_NFP3800_PF_NIC:\n+\t\taddr = NFP_PCIE_QUEUE(NFP_PCIE_QCP_NFP3800_OFFSET,\n+\t\t\t\t\t0, NFP_PCIE_QUEUE_NFP3800_MASK);\n+\t\tbreak;\n+\tcase PCI_DEVICE_ID_NFP4000_PF_NIC:\n+\tcase PCI_DEVICE_ID_NFP6000_PF_NIC:\n+\t\taddr = NFP_PCIE_QUEUE(NFP_PCIE_QCP_NFP6000_OFFSET,\n+\t\t\t\t\t0, NFP_PCIE_QUEUE_NFP6000_MASK);\n+\t\tbreak;\n+\tdefault:\n+\t\tPMD_INIT_LOG(ERR, \"nfp_net: no device ID matching\");\n+\t\terr = -ENODEV;\n+\t\tgoto ctrl_area_cleanup;\n+\t}\n+\n \tpf_dev->hw_queues = nfp_cpp_map_area(pf_dev->cpp, 0, 0,\n-\t\t\tNFP_PCIE_QUEUE(0), NFP_QCP_QUEUE_AREA_SZ,\n+\t\t\taddr, NFP_QCP_QUEUE_AREA_SZ,\n \t\t\t&pf_dev->hwqueues_area);\n \tif (pf_dev->hw_queues == NULL) {\n \t\tPMD_INIT_LOG(ERR, \"nfp_rtsym_map fails for net.qc\");\n@@ -995,6 +1013,10 @@ nfp_pf_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,\n }\n \n static const struct rte_pci_id pci_id_nfp_pf_net_map[] = {\n+\t{\n+\t\tRTE_PCI_DEVICE(PCI_VENDOR_ID_NETRONOME,\n+\t\t\t       PCI_DEVICE_ID_NFP3800_PF_NIC)\n+\t},\n \t{\n \t\tRTE_PCI_DEVICE(PCI_VENDOR_ID_NETRONOME,\n \t\t\t       PCI_DEVICE_ID_NFP4000_PF_NIC)\ndiff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c\nindex d0fa1df24d..c46ee0f913 100644\n--- a/drivers/net/nfp/nfp_ethdev_vf.c\n+++ b/drivers/net/nfp/nfp_ethdev_vf.c\n@@ -327,11 +327,12 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev)\n \n \t/* Work out where in the BAR the queues start. */\n \tswitch (pci_dev->id.device_id) {\n+\tcase PCI_DEVICE_ID_NFP3800_VF_NIC:\n \tcase PCI_DEVICE_ID_NFP6000_VF_NIC:\n \t\tstart_q = nn_cfg_readl(hw, NFP_NET_CFG_START_TXQ);\n-\t\ttx_bar_off = (uint64_t)start_q * NFP_QCP_QUEUE_ADDR_SZ;\n+\t\ttx_bar_off = nfp_pci_queue(pci_dev, start_q);\n \t\tstart_q = nn_cfg_readl(hw, NFP_NET_CFG_START_RXQ);\n-\t\trx_bar_off = (uint64_t)start_q * NFP_QCP_QUEUE_ADDR_SZ;\n+\t\trx_bar_off = nfp_pci_queue(pci_dev, start_q);\n \t\tbreak;\n \tdefault:\n \t\tPMD_DRV_LOG(ERR, \"nfp_net: no device ID matching\");\n@@ -456,6 +457,10 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev)\n }\n \n static const struct rte_pci_id pci_id_nfp_vf_net_map[] = {\n+\t{\n+\t\tRTE_PCI_DEVICE(PCI_VENDOR_ID_NETRONOME,\n+\t\t\t       PCI_DEVICE_ID_NFP3800_VF_NIC)\n+\t},\n \t{\n \t\tRTE_PCI_DEVICE(PCI_VENDOR_ID_NETRONOME,\n \t\t\t       PCI_DEVICE_ID_NFP6000_VF_NIC)\ndiff --git a/drivers/net/nfp/nfpcore/nfp_cpp.h b/drivers/net/nfp/nfpcore/nfp_cpp.h\nindex 720d3989e6..a04a68f546 100644\n--- a/drivers/net/nfp/nfpcore/nfp_cpp.h\n+++ b/drivers/net/nfp/nfpcore/nfp_cpp.h\n@@ -214,7 +214,7 @@ void nfp_cpp_free(struct nfp_cpp *cpp);\n  * @return\t\ttrue if model is in the NFP6000 family, false otherwise.\n  */\n #define NFP_CPP_MODEL_IS_6000(model)\t\t     \\\n-\t\t((NFP_CPP_MODEL_CHIP_of(model) >= 0x4000) && \\\n+\t\t((NFP_CPP_MODEL_CHIP_of(model) >= 0x3800) && \\\n \t\t(NFP_CPP_MODEL_CHIP_of(model) < 0x7000))\n \n /*\ndiff --git a/drivers/net/nfp/nfpcore/nfp_nsp_eth.c b/drivers/net/nfp/nfpcore/nfp_nsp_eth.c\nindex 67946891ab..f8f3c372ac 100644\n--- a/drivers/net/nfp/nfpcore/nfp_nsp_eth.c\n+++ b/drivers/net/nfp/nfpcore/nfp_nsp_eth.c\n@@ -266,6 +266,7 @@ __nfp_eth_read_ports(struct nfp_nsp *nsp)\n \tstruct nfp_eth_table *table;\n \tuint32_t table_sz;\n \tint i, j, ret, cnt = 0;\n+\tconst struct rte_ether_addr *mac;\n \n \tentries = malloc(NSP_ETH_TABLE_SIZE);\n \tif (!entries)\n@@ -278,9 +279,15 @@ __nfp_eth_read_ports(struct nfp_nsp *nsp)\n \t\tgoto err;\n \t}\n \n-\tfor (i = 0; i < NSP_ETH_MAX_COUNT; i++)\n-\t\tif (entries[i].port & NSP_ETH_PORT_LANES_MASK)\n+\t/* The NFP3800 NIC support 8 ports, but only 2 ports are valid,\n+\t * the rest 6 ports mac are all 0, ensure we don't use these port\n+\t */\n+\tfor (i = 0; i < NSP_ETH_MAX_COUNT; i++) {\n+\t\tmac = (const struct rte_ether_addr *)entries[i].mac_addr;\n+\t\tif ((entries[i].port & NSP_ETH_PORT_LANES_MASK) &&\n+\t\t\t\t(!rte_is_zero_ether_addr(mac)))\n \t\t\tcnt++;\n+\t}\n \n \t/* Some versions of flash will give us 0 instead of port count. For\n \t * those that give a port count, verify it against the value calculated\n@@ -299,10 +306,13 @@ __nfp_eth_read_ports(struct nfp_nsp *nsp)\n \n \tmemset(table, 0, table_sz);\n \ttable->count = cnt;\n-\tfor (i = 0, j = 0; i < NSP_ETH_MAX_COUNT; i++)\n-\t\tif (entries[i].port & NSP_ETH_PORT_LANES_MASK)\n+\tfor (i = 0, j = 0; i < NSP_ETH_MAX_COUNT; i++) {\n+\t\tmac = (const struct rte_ether_addr *)entries[i].mac_addr;\n+\t\tif ((entries[i].port & NSP_ETH_PORT_LANES_MASK) &&\n+\t\t\t\t(!rte_is_zero_ether_addr(mac)))\n \t\t\tnfp_eth_port_translate(nsp, &entries[i], i,\n-\t\t\t\t\t       &table->ports[j++]);\n+\t\t\t\t\t&table->ports[j++]);\n+\t}\n \n \tnfp_eth_calc_port_geometry(table);\n \tfor (i = 0; i < (int)table->count; i++)\n",
    "prefixes": [
        "v3",
        "06/13"
    ]
}