get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 63745,
    "url": "http://patches.dpdk.org/api/patches/63745/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1576057875-7677-6-git-send-email-xiaojun.liu@silicom.co.il/",
    "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": "<1576057875-7677-6-git-send-email-xiaojun.liu@silicom.co.il>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1576057875-7677-6-git-send-email-xiaojun.liu@silicom.co.il",
    "date": "2019-12-11T09:52:12",
    "name": "[v2,5/7] net/fm10k: add switch initialization",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "9b806a1a43f990b1cd92b8489dc0cd3f550de1d9",
    "submitter": {
        "id": 1512,
        "url": "http://patches.dpdk.org/api/people/1512/?format=api",
        "name": "Xiaojun Liu",
        "email": "xiaojun.liu@silicom.co.il"
    },
    "delegate": {
        "id": 31221,
        "url": "http://patches.dpdk.org/api/users/31221/?format=api",
        "username": "yexl",
        "first_name": "xiaolong",
        "last_name": "ye",
        "email": "xiaolong.ye@intel.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1576057875-7677-6-git-send-email-xiaojun.liu@silicom.co.il/mbox/",
    "series": [
        {
            "id": 7788,
            "url": "http://patches.dpdk.org/api/series/7788/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=7788",
            "date": "2019-12-11T09:51:58",
            "name": "support switch management",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/7788/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/63745/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/63745/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 dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 1C068A04F1;\n\tWed, 11 Dec 2019 10:53:00 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 600981BF7F;\n\tWed, 11 Dec 2019 10:52:15 +0100 (CET)",
            "from EUR01-VE1-obe.outbound.protection.outlook.com\n (mail-eopbgr140118.outbound.protection.outlook.com [40.107.14.118])\n by dpdk.org (Postfix) with ESMTP id C4DE71BF7B\n for <dev@dpdk.org>; Wed, 11 Dec 2019 10:52:13 +0100 (CET)",
            "from DB7PR04MB5196.eurprd04.prod.outlook.com (20.176.234.140) by\n DB7PR04MB4203.eurprd04.prod.outlook.com (52.135.131.12) with Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.2538.14; Wed, 11 Dec 2019 09:52:12 +0000",
            "from DB7PR04MB5196.eurprd04.prod.outlook.com\n ([fe80::cdaa:fcae:322b:59ed]) by DB7PR04MB5196.eurprd04.prod.outlook.com\n ([fe80::cdaa:fcae:322b:59ed%7]) with mapi id 15.20.2516.018; Wed, 11 Dec 2019\n 09:52:12 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=ETUG6+4rxU6zI4tqkdTnXfhehLALO1n60PsFNFbD8ONWKaHODEYDvwYL4Pj7RqZhGQZ++9CMoyQjUcidy03hfB5Rh78QFZj+bif9+e+2H6N8/acHCInffgDC4gsZSH9n/jOcUOpw1oi65Lx9PP5DQd2JOIvHmLYVUmgXdCy/SQSJQ6Ua84N8Dms7lo3PtTXA9Qhfgh8R0avrgubYph6sW6bY2yrw+Kg3vJz0a+xWEVN5fshYoTpKryn+3I1iOIvW/WidNif8uAWN2w3xFJp7Mg7AIik+GYQua8YeZQpN637HFxA5h4l+DxD7hAL6vYhg0dD+Ry5wZpqWhqZ3YT5ySw==",
        "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-SenderADCheck;\n bh=ab8RVS9NWNovwuZAivcbTYcYGkM4OWmonAfZZogaKtA=;\n b=S9RgHzDpXq/vwDAi1FaBzI54DlQpndQFR/oQlWSVBRTNTi1n2r+G6F8WH+kWOuvXBqeYnytRYlL63hpUgC9ke9WpBng9wddf8EaYIeJvkrBeOc5geSyK/U7K9exYrWUTCTF++39PPxxtHoMQB6ujtcM9l/iI5ifHfV6DCF387gLwuapF6hBgWuUDcZgVv6f4QGluUKIyLyDE/2+S5V+x4Auwt9eG5reaEFSjBVAM/muYUGhuxHWSSR+pAgHEf1381fn8WZSoFWzi6JGjUaEJLiqglQ5a7lUoH4cAUBrtY9ctSGd9SyRST33RHiYay0laCL/UeOE2skgK6dpmdEN19g==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=silicom.co.il; dmarc=pass action=none\n header.from=silicom.co.il; dkim=pass header.d=silicom.co.il; arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=SILICOMLTD.onmicrosoft.com; s=selector2-SILICOMLTD-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=ab8RVS9NWNovwuZAivcbTYcYGkM4OWmonAfZZogaKtA=;\n b=l4l1PVryz+PNOo2+QYVOWwl4earJLi4DbmDYHl7Zjx5j4rlKeaNlO2SRIyKVrPEPES/9JXA20xXBWEytCGN6K5hrXOHTEKN89sLervwwtO9YFNmAbZkNMMBgdw4+qGfsnnF4hSQPtBv5cWdmiZp40LvcmJQ0am4Ra9Qbpe+Ub5c=",
        "From": "Xiaojun Liu <xiaojun.liu@silicom.co.il>",
        "To": "\"xiao.w.wang@intel.com\" <xiao.w.wang@intel.com>, \"qi.z.zhang@intel.com\"\n <qi.z.zhang@intel.com>, \"ngai-mint.kwan@intel.com\"\n <ngai-mint.kwan@intel.com>, \"jakub.fornal@intel.co\" <jakub.fornal@intel.co>,\n \"jacob.e.keller@intel.com\" <jacob.e.keller@intel.com>",
        "CC": "\"dev@dpdk.org\" <dev@dpdk.org>, Xiaojun Liu <xiaojun.liu@silicom.co.il>",
        "Thread-Topic": "[PATCH v2 5/7] net/fm10k: add switch initialization",
        "Thread-Index": "AQHVsAipNkEFpzp5C0C2tvX5WIs5vQ==",
        "Date": "Wed, 11 Dec 2019 09:52:12 +0000",
        "Message-ID": "<1576057875-7677-6-git-send-email-xiaojun.liu@silicom.co.il>",
        "References": "<xiaojun.liu@silicom.co.il>\n <1576057875-7677-1-git-send-email-xiaojun.liu@silicom.co.il>",
        "In-Reply-To": "<1576057875-7677-1-git-send-email-xiaojun.liu@silicom.co.il>",
        "Accept-Language": "en-US",
        "Content-Language": "en-US",
        "X-MS-Has-Attach": "",
        "X-MS-TNEF-Correlator": "",
        "x-clientproxiedby": "HK2PR02CA0180.apcprd02.prod.outlook.com\n (2603:1096:201:21::16) To DB7PR04MB5196.eurprd04.prod.outlook.com\n (2603:10a6:10:1a::12)",
        "authentication-results": "spf=none (sender IP is )\n smtp.mailfrom=xiaojun.liu@silicom.co.il;",
        "x-ms-exchange-messagesentrepresentingtype": "1",
        "x-mailer": "git-send-email 1.8.3.1",
        "x-originating-ip": "[113.110.226.253]",
        "x-ms-publictraffictype": "Email",
        "x-ms-office365-filtering-correlation-id": "b1e83beb-513d-422d-8f7c-08d77e1fcbdf",
        "x-ms-traffictypediagnostic": "DB7PR04MB4203:",
        "x-ms-exchange-transport-forked": "True",
        "x-microsoft-antispam-prvs": "\n <DB7PR04MB42032AEA2AC271FCBA97ED2EBD5A0@DB7PR04MB4203.eurprd04.prod.outlook.com>",
        "x-ms-oob-tlc-oobclassifiers": "OLM:9508;",
        "x-forefront-prvs": "024847EE92",
        "x-forefront-antispam-report": "SFV:NSPM;\n SFS:(10019020)(346002)(366004)(136003)(39850400004)(376002)(396003)(199004)(189003)(2906002)(71200400001)(81156014)(64756008)(316002)(66556008)(6506007)(44832011)(8676002)(52116002)(81166006)(26005)(66476007)(54906003)(110136005)(66946007)(186003)(36756003)(6512007)(4326008)(86362001)(2616005)(107886003)(6486002)(66446008)(8936002)(5660300002)(478600001);\n DIR:OUT; SFP:1102; SCL:1; SRVR:DB7PR04MB4203;\n H:DB7PR04MB5196.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en;\n PTR:InfoNoRecords; A:1; MX:1;",
        "received-spf": "None (protection.outlook.com: silicom.co.il does not designate\n permitted sender hosts)",
        "x-ms-exchange-senderadcheck": "1",
        "x-microsoft-antispam": "BCL:0;",
        "x-microsoft-antispam-message-info": "\n Nh1uptADYTAcqf2IVHyZ9SVuUsoABr/dspX6aqfoMpH8KbVmefAHs3Bmu22KC83/Qtcr1K1xPvNbixhhlDfRkLdrU3g9CdBpWvZ040zUpXwL1SeAJiLADITVtp70TNyC5P/mqhq5K1euk7IQS3G/dQOAzh/qiSj+ZnWt83O4UEiZpRir+dNdNtBEBhX6C7xSLOdRIE0oUxLrt211aV8Fm+ndGMWAFE38JeHBIQ7HGkvHx5jkXIhhsh3HtpW0H5X7acNp4qM/BTNA5IdS8XQq+ah2cnDjZ3N1KaJnL0TIyaNEkueXU2Wb4ePf6fIRqDl/8FVNRe+MCjkFcyJnuh8Hk9vuFRvuTmN6WTCX0mEVrvcm8gw62pcrDGSgKchFia7qiL5ohuJKzEIhjMz0yLsvanZLRlMLSM2L9tjgDW+NyN+Be/5LbnBbsGKue3RViFhS",
        "Content-Type": "text/plain; charset=\"iso-8859-1\"",
        "Content-Transfer-Encoding": "quoted-printable",
        "MIME-Version": "1.0",
        "X-OriginatorOrg": "silicom.co.il",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n b1e83beb-513d-422d-8f7c-08d77e1fcbdf",
        "X-MS-Exchange-CrossTenant-originalarrivaltime": "11 Dec 2019 09:52:12.7145 (UTC)",
        "X-MS-Exchange-CrossTenant-fromentityheader": "Hosted",
        "X-MS-Exchange-CrossTenant-id": "c9e326d8-ce47-4930-8612-cc99d3c87ad1",
        "X-MS-Exchange-CrossTenant-mailboxtype": "HOSTED",
        "X-MS-Exchange-CrossTenant-userprincipalname": "\n klthDy7XfHu4Qxun0fH3vwcq7/5TgjyUzJRJqvpkhLMhjugnBwz4cyxDJ5e2rjvJ5Z9b4DNui3UulwkPI6qV8KhqkGLscEEJdxew0zRf3pk=",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DB7PR04MB4203",
        "Subject": "[dpdk-dev] [PATCH v2 5/7] net/fm10k: add switch initialization",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Modify fm10k/fm10k_ethdev.c.\nSplit dev init to 2 parts.\nFirst only register the port in switch\nmanagement; second init hook will be\ncalled after all the pf are registered\nand switch initialization. It will finish\ndev init. Also add switch interrupt support.\n\nTo avoid configuration for both kernel driver\nand userspace SDK outside DPDK, we add switch\nmanagement in FM10K DPDK PMD driver.\nTo enable switch management, you need add\nCONFIG_RTE_FM10K_MANAGEMENT=y in\nconfig/common_linux when building.\n\nSigned-off-by: Xiaojun Liu <xiaojun.liu@silicom.co.il>\n---\n drivers/net/fm10k/fm10k_ethdev.c | 182 +++++++++++++++++++++++++++++++++++++--\n 1 file changed, 176 insertions(+), 6 deletions(-)",
    "diff": "diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c\nindex 99c4366..4c81952 100644\n--- a/drivers/net/fm10k/fm10k_ethdev.c\n+++ b/drivers/net/fm10k/fm10k_ethdev.c\n@@ -13,6 +13,10 @@\n \n #include \"fm10k.h\"\n #include \"base/fm10k_api.h\"\n+#ifdef ENABLE_FM10K_MANAGEMENT\n+#include \"switch/fm10k_regs.h\"\n+#include \"switch/fm10k_switch.h\"\n+#endif\n \n /* Default delay to acquire mailbox lock */\n #define FM10K_MBXLOCK_DELAY_US 20\n@@ -39,6 +43,10 @@\n #define GLORT_PF_MASK    0xFFC0\n #define GLORT_FD_MASK    GLORT_PF_MASK\n #define GLORT_FD_INDEX   GLORT_FD_Q_BASE\n+#ifdef ENABLE_FM10K_MANAGEMENT\n+/* When the switch is ready, the status will be changed */\n+static int fm10k_switch_ready;\n+#endif\n \n int fm10k_logtype_init;\n int fm10k_logtype_driver;\n@@ -2588,6 +2596,9 @@ static uint64_t fm10k_get_tx_port_offloads_capa(struct rte_eth_dev *dev)\n \t\tFM10K_DEV_PRIVATE_TO_INFO(dev->data->dev_private);\n \tint status_mbx;\n \ts32 err;\n+#ifdef ENABLE_FM10K_MANAGEMENT\n+\tuint32_t writeback = 0;\n+#endif\n \n \tif (hw->mac.type != fm10k_mac_pf)\n \t\treturn;\n@@ -2601,11 +2612,20 @@ static uint64_t fm10k_get_tx_port_offloads_capa(struct rte_eth_dev *dev)\n \t}\n \n \t/* Handle switch up/down */\n-\tif (cause & FM10K_EICR_SWITCHNOTREADY)\n-\t\tPMD_INIT_LOG(ERR, \"INT: Switch is not ready\");\n+\tif (cause & FM10K_EICR_SWITCHNOTREADY) {\n+\t\tPMD_INIT_LOG(INFO, \"INT: Switch is not ready\");\n+#ifdef ENABLE_FM10K_MANAGEMENT\n+\t\tfm10k_switch_ready = 0;\n+\t\twriteback |= FM10K_EICR_SWITCHNOTREADY;\n+#endif\n+\t}\n \n \tif (cause & FM10K_EICR_SWITCHREADY) {\n \t\tPMD_INIT_LOG(INFO, \"INT: Switch is ready\");\n+#ifdef ENABLE_FM10K_MANAGEMENT\n+\t\tfm10k_switch_ready = 1;\n+\t\twriteback |= FM10K_EICR_SWITCHREADY;\n+#endif\n \t\tif (dev_info->sm_down == 1) {\n \t\t\tfm10k_mbx_lock(hw);\n \n@@ -2656,6 +2676,7 @@ static uint64_t fm10k_get_tx_port_offloads_capa(struct rte_eth_dev *dev)\n \t}\n \n \t/* Handle mailbox message */\n+#ifndef ENABLE_FM10K_MANAGEMENT\n \tfm10k_mbx_lock(hw);\n \terr = hw->mbx.ops.process(hw, &hw->mbx);\n \tfm10k_mbx_unlock(hw);\n@@ -2663,10 +2684,33 @@ static uint64_t fm10k_get_tx_port_offloads_capa(struct rte_eth_dev *dev)\n \tif (err == FM10K_ERR_RESET_REQUESTED) {\n \t\tPMD_INIT_LOG(INFO, \"INT: Switch is down\");\n \t\tdev_info->sm_down = 1;\n-\t\t_rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_LSC,\n+\t\t_rte_eth_dev_callback_process\n+\t\t\t\t(dev,\n+\t\t\t\tRTE_ETH_EVENT_INTR_LSC,\n \t\t\t\tNULL);\n \t}\n \n+#else\n+\tif (cause & FM10K_EICR_MAILBOX)\t{\n+\t\tfm10k_mbx_lock(hw);\n+\t\terr = hw->mbx.ops.process(hw, &hw->mbx);\n+\t\tfm10k_mbx_unlock(hw);\n+\t\twriteback |= FM10K_EICR_MAILBOX;\n+\t\tif (err == FM10K_ERR_RESET_REQUESTED) {\n+\t\t\tPMD_INIT_LOG(INFO, \"INT: Switch is down\");\n+\t\t\tdev_info->sm_down = 1;\n+\t\t\t_rte_eth_dev_callback_process\n+\t\t\t\t\t(dev,\n+\t\t\t\t\tRTE_ETH_EVENT_INTR_LSC,\n+\t\t\t\t\tNULL);\n+\t\t}\n+\t}\n+\n+\t/* Handle switch interrupt */\n+\tif (cause & FM10K_SW_EICR_SWITCH_INT)\n+\t\tfm10k_switch_intr(hw);\n+#endif\n+\n \t/* Handle SRAM error */\n \tif (cause & FM10K_EICR_SRAMERROR) {\n \t\tPMD_INIT_LOG(ERR, \"INT: SRAM error on PEP\");\n@@ -2678,15 +2722,27 @@ static uint64_t fm10k_get_tx_port_offloads_capa(struct rte_eth_dev *dev)\n \t\t/* Todo: print out error message after shared code  updates */\n \t}\n \n+#ifndef ENABLE_FM10K_MANAGEMENT\n \t/* Clear these 3 events if having any */\n \tcause &= FM10K_EICR_SWITCHNOTREADY | FM10K_EICR_MAILBOX |\n \t\t FM10K_EICR_SWITCHREADY;\n \tif (cause)\n \t\tFM10K_WRITE_REG(hw, FM10K_EICR, cause);\n+#else\n+\tif (writeback)\n+\t\tFM10K_WRITE_REG(hw, FM10K_EICR, writeback);\n+#endif\n \n \t/* Re-enable interrupt from device side */\n-\tFM10K_WRITE_REG(hw, FM10K_ITR(0), FM10K_ITR_AUTOMASK |\n+#ifndef ENABLE_FM10K_MANAGEMENT\n+\tFM10K_WRITE_REG(hw, FM10K_ITR(0),\n+\t\t\t\t\tFM10K_ITR_AUTOMASK |\n \t\t\t\t\tFM10K_ITR_MASK_CLEAR);\n+#else\n+\tFM10K_WRITE_REG(hw, FM10K_ITR(0),\n+\t\tFM10K_SW_ITR_AUTO_MASK |\n+\t    FM10K_SW_MAKE_REG_FIELD(ITR_MASK, FM10K_SW_ITR_MASK_W_ENABLE));\n+#endif\n \t/* Re-enable interrupt from host side */\n \trte_intr_ack(dev->intr_handle);\n }\n@@ -3071,13 +3127,87 @@ static void __attribute__((cold))\n \tinfo->sm_down = false;\n }\n \n+#ifdef ENABLE_FM10K_MANAGEMENT\n+static int eth_fm10k_dev_init_hook(struct fm10k_hw *hw)\n+{\n+\tint i, switch_ready;\n+\tstruct rte_eth_dev *dev =\n+\t\t(struct rte_eth_dev *)fm10k_switch_dpdk_port_rte_dev_get(hw);\n+\n+\t/* Make sure Switch Manager is ready before going forward. */\n+\tif (hw->mac.type == fm10k_mac_pf) {\n+\t\tswitch_ready = 0;\n+\n+\t\tfor (i = 0; i < MAX_QUERY_SWITCH_STATE_TIMES; i++) {\n+\t\t\tfm10k_mbx_lock(hw);\n+\t\t\tswitch_ready = fm10k_switch_ready;\n+\t\t\tfm10k_mbx_unlock(hw);\n+\t\t\tif (switch_ready)\n+\t\t\t\tbreak;\n+\t\t\t/* Delay some time to acquire async LPORT_MAP info. */\n+\t\t\trte_delay_us(WAIT_SWITCH_MSG_US);\n+\t\t}\n+\n+\t\tif (switch_ready == 0) {\n+\t\t\tPMD_INIT_LOG(ERR, \"switch is not ready\");\n+\t\t\treturn -1;\n+\t\t}\n+\t}\n+\n+\t/*\n+\t * Below function will trigger operations on mailbox, acquire lock to\n+\t * avoid race condition from interrupt handler. Operations on mailbox\n+\t * FIFO will trigger interrupt to PF/SM, in which interrupt handler\n+\t * will handle and generate an interrupt to our side. Then,  FIFO in\n+\t * mailbox will be touched.\n+\t */\n+\tif (hw->mac.dglort_map == FM10K_DGLORTMAP_NONE)\t{\n+\t\tPMD_INIT_LOG(ERR, \"dglort_map is not ready\");\n+\t\treturn -1;\n+\t}\n+\n+\tfm10k_mbx_lock(hw);\n+\t/* Enable port first */\n+\thw->mac.ops.update_lport_state(hw, hw->mac.dglort_map,\n+\t\t\t\t\tMAX_LPORT_NUM, 1);\n+\t/* Set unicast mode by default. App can change to other mode in other\n+\t * API func.\n+\t */\n+\thw->mac.ops.update_xcast_mode(hw, hw->mac.dglort_map,\n+\t\t\t\t\tFM10K_XCAST_MODE_NONE);\n+\tfm10k_mbx_unlock(hw);\n+\n+\t/* Make sure default VID is ready before going forward. */\n+\tif (hw->mac.type == fm10k_mac_pf) {\n+\t\tfor (i = 0; i < MAX_QUERY_SWITCH_STATE_TIMES; i++) {\n+\t\t\tif (hw->mac.default_vid)\n+\t\t\t\tbreak;\n+\t\t\t/* Delay some time to acquire async port VLAN info. */\n+\t\t\trte_delay_us(WAIT_SWITCH_MSG_US);\n+\t\t}\n+\n+\t\tif (hw->mac.default_vid == 0)\n+\t\t\thw->mac.default_vid = 1;\n+\t}\n+\n+\t/* Add default mac address */\n+\tfm10k_MAC_filter_set(dev, hw->mac.addr, true,\n+\t\tMAIN_VSI_POOL_NUMBER);\n+\n+\treturn 0;\n+}\n+#endif\n+\n static int\n eth_fm10k_dev_init(struct rte_eth_dev *dev)\n {\n \tstruct fm10k_hw *hw = FM10K_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n \tstruct rte_pci_device *pdev = RTE_ETH_DEV_TO_PCI(dev);\n \tstruct rte_intr_handle *intr_handle = &pdev->intr_handle;\n-\tint diag, i;\n+\tint diag;\n+#ifndef ENABLE_FM10K_MANAGEMENT\n+\tint i;\n+#endif\n \tstruct fm10k_macvlan_filter_info *macvlan;\n \n \tPMD_INIT_FUNC_TRACE();\n@@ -3114,7 +3244,9 @@ static void __attribute__((cold))\n \t\t\t\" Try to blacklist unused devices.\");\n \t\treturn -EIO;\n \t}\n-\n+#ifdef ENABLE_FM10K_MANAGEMENT\n+\thw->sw_addr = (void *)pdev->mem_resource[4].addr;\n+#endif\n \t/* Store fm10k_adapter pointer */\n \thw->back = dev->data->dev_private;\n \n@@ -3125,6 +3257,25 @@ static void __attribute__((cold))\n \t\treturn -EIO;\n \t}\n \n+#ifdef ENABLE_FM10K_MANAGEMENT\n+\tif (hw->mac.type == fm10k_mac_pf) {\n+\t\tif (hw->hw_addr == NULL || hw->sw_addr == NULL) {\n+\t\t\tPMD_INIT_LOG(ERR, \"Bad mem resource.\"\n+\t\t\t\t\t\" Try to blacklist unused devices.\");\n+\t\t\treturn -EIO;\n+\t\t}\n+\t} else {\n+\t\tif (hw->hw_addr == NULL) {\n+\t\t\tPMD_INIT_LOG(ERR, \"Bad mem resource.\"\n+\t\t\t\t\t\" Try to blacklist unused devices.\");\n+\t\t\treturn -EIO;\n+\t\t}\n+\t}\n+\n+\t/* Store fm10k_adapter pointer */\n+\thw->back = dev->data->dev_private;\n+#endif\n+\n \t/* Initialize parameters */\n \tfm10k_params_init(dev);\n \n@@ -3205,6 +3356,7 @@ static void __attribute__((cold))\n \thw->mac.ops.update_int_moderator(hw);\n \n \t/* Make sure Switch Manager is ready before going forward. */\n+#ifndef ENABLE_FM10K_MANAGEMENT\n \tif (hw->mac.type == fm10k_mac_pf) {\n \t\tint switch_ready = 0;\n \n@@ -3264,11 +3416,25 @@ static void __attribute__((cold))\n \t\tMAIN_VSI_POOL_NUMBER);\n \n \treturn 0;\n+#else\n+\tif (hw->mac.type == fm10k_mac_pf) {\n+\t\tbool master = FM10K_READ_REG(hw,\n+\t\t\t\tFM10K_CTRL) & FM10K_CTRL_BAR4_ALLOWED;\n+\t\treturn fm10k_switch_dpdk_port_start(hw,\n+\t\t\t\tdev, 1, master, eth_fm10k_dev_init_hook);\n+\t} else { /* It may not work for VF */\n+\t\treturn fm10k_switch_dpdk_port_start(hw,\n+\t\t\t\tdev, 0, false, eth_fm10k_dev_init_hook);\n+\t}\n+#endif\n }\n \n static int\n eth_fm10k_dev_uninit(struct rte_eth_dev *dev)\n {\n+#ifdef ENABLE_FM10K_MANAGEMENT\n+\tstruct fm10k_hw *hw = FM10K_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+#endif\n \tPMD_INIT_FUNC_TRACE();\n \n \t/* only uninitialize in the primary process */\n@@ -3278,6 +3444,10 @@ static void __attribute__((cold))\n \t/* safe to close dev here */\n \tfm10k_dev_close(dev);\n \n+#ifdef ENABLE_FM10K_MANAGEMENT\n+\tfm10k_switch_dpdk_port_stop(hw);\n+#endif\n+\n \treturn 0;\n }\n \n",
    "prefixes": [
        "v2",
        "5/7"
    ]
}