get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 113287,
    "url": "http://patches.dpdk.org/api/patches/113287/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20220623022615.3628093-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": "<20220623022615.3628093-7-jin.liu@corigine.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220623022615.3628093-7-jin.liu@corigine.com",
    "date": "2022-06-23T02:26:08",
    "name": "[v4,06/13] net/nfp: support NFP3800 card",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "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/20220623022615.3628093-7-jin.liu@corigine.com/mbox/",
    "series": [
        {
            "id": 23707,
            "url": "http://patches.dpdk.org/api/series/23707/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=23707",
            "date": "2022-06-23T02:26:02",
            "name": "Add support of NFP3800 chip and firmware with NFDk",
            "version": 4,
            "mbox": "http://patches.dpdk.org/series/23707/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/113287/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/113287/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 680D9A0545;\n\tThu, 23 Jun 2022 04:27:35 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id BD47942B6E;\n\tThu, 23 Jun 2022 04:27:18 +0200 (CEST)",
            "from NAM10-MW2-obe.outbound.protection.outlook.com\n (mail-mw2nam10on2100.outbound.protection.outlook.com [40.107.94.100])\n by mails.dpdk.org (Postfix) with ESMTP id 71F7A42B74\n for <dev@dpdk.org>; Thu, 23 Jun 2022 04:27:09 +0200 (CEST)",
            "from DM6PR13MB3004.namprd13.prod.outlook.com (2603:10b6:5:191::21)\n by MN2PR13MB3535.namprd13.prod.outlook.com (2603:10b6:208:169::12) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Thu, 23 Jun\n 2022 02:27:07 +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.015; Thu, 23 Jun 2022\n 02:27:07 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=AB4BMsuJHLbbIisBWA0dTPzfjmsThQcWJehZWvLc5D1KPJviq78f3oD5pfEDBba8QEIXuNoLBCS0jq7k1+KEKOz6KTN5ZvRtPi9H5mMdP7ZnK43P9txO0N1uVUsc8OmkF1dTcNESajP31zi8dfCb+b2pyjguLwrt28oDB+U/pWMVG0jt80Ngh34mgRRrlLz5KIH/kQ3Gz7ODNuSQ1JKaGDBp/K36UDMR3IJfHVGAX3csjInJGGTnf4rLuRL8SNM7PGkKT/ZHJOcc/Pj897B47conWPGaqcFWEw2rPT1zLAECYIakEMFzyoy/IbScOqJaTsRsGz0/hL661nhG1LfjNw==",
        "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=E+tpuh67qkQ6mUlgH/OZpLp5rdgjRDpOZAsf3NCTslJe2XyBZTwuDwoAzdHdbMQcMe7IyHAqHoagL+RvOQDvI6YRWFTt1Zz3RCaqIb1CwDIuTy5YubY7BkhuYHoL9g76V9ixhLWs/Pg78269ZKkOc8l32RT4uOz7DHfAUc1pv+4fAsiY7Nt9DmyCZvGPupidWVNUW2Vg38wQ9L1+OnrPWl9SejoBkaABZlY4HlcR6oELrPjIP4vMBMhL08AyOI+R6WZSHzk2q75Nw6AgF02w+BxRnxqk8rZFoqYUjzfIMPtTNZn3BVKv82R3gc4fjiFO8fGaC9E6E9fz/iEvB6sFlA==",
        "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=nrZGKMwmmDgnbR5qqbQBbtkoReAJe9LsbtkN3tbGdwzWzpltCokBi5wv0yK+WGeHs7btU7iQ5UD/KhdMrcw4QxpgkEzO5Ty9Ymiq1GAU+PAWglJAdwF8J6UaoL09AxYa2ET5Sl4oudYbP7cNocK46O2omZMvuAq64MDEFgUB48I=",
        "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 v4 06/13] net/nfp: support NFP3800 card",
        "Date": "Thu, 23 Jun 2022 04:26:08 +0200",
        "Message-Id": "<20220623022615.3628093-7-jin.liu@corigine.com>",
        "X-Mailer": "git-send-email 2.27.0",
        "In-Reply-To": "<20220623022615.3628093-1-jin.liu@corigine.com>",
        "References": "<20220617093444.2004000-1-jin.liu@corigine.com>\n <20220623022615.3628093-1-jin.liu@corigine.com>",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-ClientProxiedBy": "LO4P265CA0222.GBRP265.PROD.OUTLOOK.COM\n (2603:10a6:600:33a::10) 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": "99882342-93e2-4652-4c3a-08da54bfde61",
        "X-MS-TrafficTypeDiagnostic": "MN2PR13MB3535:EE_",
        "X-Microsoft-Antispam-PRVS": "\n <MN2PR13MB3535285E09CE680A2CA5C7A594B59@MN2PR13MB3535.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 vkmPGzhwiLccGS+R1iPbgiCbFvf69NLEhcaiAweGEd6hlhpF4wrh+bSPpoL1lBqCbn68i+nt7wZ6/qJjyp99RKvR1ec+0MOA9bxPcyyRa+556rdkXZeo6RvIuqfTFzxP8+xQIFxeo98P749hJ7KVf30AHdVfG5HaTE/uVPK2t5JUjoH+pCjJ8zvo5WTfvAvww2xpaeaBurD4BrpHuy62zrE5fxJpxlAPwBYdKui179NeB0IZiSaOy8PnrVJt3rG8cytcwzO4x2GdaPU6Y+P7rouf/4ILZLw3Y3S2ODDt8D9OSsFdDIhy9tC2vnfFtPrWV40ebR3nMy/rCGTn9PopjJw6eWXus0f/Ex//weN5kk6oqDAt4STDRGccVns20qh+YExpCuHFnMrof+tNfXqXGE0U+tiu07Dc4F5lmcRWycfAVdTAsARcM2wXv+J+uotTSd1aaEnPNZu+XRQUl2k7vVQfbGXgnd9syGjyp+yNsZ9nPO0K5OsDmpnWW93YhuScFWgAV8DlSxBjAL5bVoFXrw0YJLRrztn/o1G+rVuEUw+v7qn5h39C6U9Qv/F37w6LJZnyA3kb0uLNbyl27uAzURu+vnQHVemK/a894pQ/nvs/MV4Sz7zANAfzXyryRbGlYXyaqWOZAsQVrL72OtbODsM1ZqvS7HpyRXdl07OgT0ESfhnPp2uv1dJrPSCiWamWYkM5d4RCurXkAUJQbQZfHf1c8xGsPNfPSxqJOBPnYF0UsGQ6G7Z/lSF7Bl2/C04HhZxEha6tl/j7u2sl/7EjCbNWrextF2Ac7XsoJbix9No=",
        "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)(376002)(366004)(346002)(136003)(396003)(39830400003)(107886003)(1076003)(38100700002)(38350700002)(6486002)(36756003)(66574015)(8936002)(54906003)(2616005)(6916009)(5660300002)(316002)(66556008)(52116002)(6506007)(186003)(66946007)(8676002)(4326008)(66476007)(41300700001)(86362001)(6512007)(26005)(83380400001)(478600001)(2906002)(44832011);\n DIR:OUT; SFP:1102;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "=?utf-8?q?CsoXKYcp8XC4GW+Cluid82tC4Hn3?=\n\t=?utf-8?q?WQ4DyQvNBHS41AIrM4wlptq69gAZ7e05PPs9xOMSg6aEAJyod+nE3j7bDoCLV7ERO?=\n\t=?utf-8?q?WCaMCAo2hXN1NtXzfrx2L68L+DqfIweOBnjljilnr8wkhcxAc18o2PeehxmTO5jID?=\n\t=?utf-8?q?PRVinT1W0lPhtozxI2X9G/2wz1T/pf1GAEj8B1IIBiR1CX+V1AZHY50LiZescNw0D?=\n\t=?utf-8?q?2rWbZMOTsIJal+271fjCmf5ezltQsEfc6axv7zh3xkQV0gXW+nin4gljt+biltURy?=\n\t=?utf-8?q?mIxJu49C51Ixbwy1MFUtweaeNgMp34ABDVkl3YMWd+2HYJH86KNPDttkoZxrE6azj?=\n\t=?utf-8?q?kXB59CiQUSUw6VauQzBpeoYBvyJLqk880RxUjGNrGakEMonkIeiRPcIgoBLFjejgW?=\n\t=?utf-8?q?R0ZHltwwsuDPA4PZChn8BsGogPsql9u5CtyazPh6uMng0slnIesYwU26W4UeSHLSk?=\n\t=?utf-8?q?EgF5bU/cAvo3e2twuvg/7sAr6wbnTNwbBK6bRDwQUk4u1Foyi4X2kQpPEhHX9kknj?=\n\t=?utf-8?q?47BRl6KE0YxsniGUacy3VI5RIgbskVfDnZMLJKlgTUbg/584moUz320xf+2OQfNLk?=\n\t=?utf-8?q?HHyUkrToTqI01DkscrkmzZFNN+R1CQ9RZlnoS25uVKUyyTKlQRhsTW7urGRnjs76Q?=\n\t=?utf-8?q?baLbevNGRu0u55vJX/EsnAV3BLDQzhFVoRElwBO6bPxURN7HMHmXolwyVd39JJfda?=\n\t=?utf-8?q?Krhh7ZcKrOPS5MLgetPlWL71dx63J5gGTU3CX2CKDPTdFuQ3hVqW/1gTSbKywO+N8?=\n\t=?utf-8?q?NqvKIw45FJFF7vm72LPp3IfKDkkTdAR/ri+LISmNMOWi63GDFirMTAOJ5TY6gglFA?=\n\t=?utf-8?q?N6gkJKrrkzo4x+L1Ii6NhSjrjQ5ScZMzWzplVkK8UJk15oNu5duZM/XZD1RHhm7U0?=\n\t=?utf-8?q?gIYorFZG1nyT02ShCSIOhL6eMYYyUILW/h0TmGVogiqKJof25BmkeyABC0vJdPXxO?=\n\t=?utf-8?q?mbBxQwskJRHhwiN5Wb1Ln2mv13/hfIfh7b8FD/H85Nx/BWRLcySb88B+3PLK4VMu0?=\n\t=?utf-8?q?yHBzZtVuaINz27Zdqi6kXNt0Bd00IKFl4d2dc4U9LYCd9PF2V8VAC/bgMpEMEdyhR?=\n\t=?utf-8?q?aOZBVs38zc+BlNoneJCwYtuNKAnCLYN1x2raaFSR2mipOJCjxPQspjWCBtrkE1PvU?=\n\t=?utf-8?q?XZ1QBzWRXL3UUDeZtS2X2LFbyu/Kj4nh4XLgz+W0gK1Mdz0wuOW+b4P65ULlDrcCE?=\n\t=?utf-8?q?FYe/3MLYnO0pKd7Y4HG531pPwQAp0pquo0FPeNvJl+mDnpSt1TVCuU+Jt/VfO21Qs?=\n\t=?utf-8?q?FGZHTmFaR1rQ05yX2JxOndhJUABDMC2qgQv5G9HLHt+UtY6y2yamiexo7jAShM5Fg?=\n\t=?utf-8?q?/G+mZQwo+GCZlcUSAB0szE6TgfWEsOQSOWqwcUH1WlTCuY2mq5BUo11CMhRdIOJ08?=\n\t=?utf-8?q?RvsyjsnIFxGCnk38s1VQ0vOrX8/70HwyuoroGQz29PTpJI8UG7VLcsOc6/T+8toDT?=\n\t=?utf-8?q?+7eubK54EwxRoER39st1/EsY23HFGWd10F8Qu4AgSAb/Yq/3cn9K6GK2tFy+IY9jY?=\n\t=?utf-8?q?ymKzZYs9Djf8?=",
        "X-OriginatorOrg": "corigine.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 99882342-93e2-4652-4c3a-08da54bfde61",
        "X-MS-Exchange-CrossTenant-AuthSource": "DM6PR13MB3004.namprd13.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "23 Jun 2022 02:27:07.5251 (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 f2H2ULR3qD9Hq77GbGlTTOBI63PAEs2Ui88qG3jMWXk0zYylO2AmEGhZwANb9veHzgIvzwzlcJiwZ9jKulJCSQ==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "MN2PR13MB3535",
        "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": [
        "v4",
        "06/13"
    ]
}